Tests: number of referrers depends on interpreter version, check for names instead

This commit is contained in:
Elizaveta Shashkova
2017-12-20 14:27:02 +03:00
parent 253ca2e646
commit da24d335dc
2 changed files with 16 additions and 6 deletions
@@ -1155,11 +1155,17 @@ public class PythonDebuggerTest extends PyEnvTestCase {
toggleBreakpoint(getFilePath(getScriptName()), 3);
}
private String getRefWithWordInName(List<String> referrersNames, String word) {
return referrersNames.stream().filter(x -> x.contains(word)).findFirst().get();
}
@Override
public void testing() throws Exception {
waitForPause();
int numberOfReferringObjects = getNumberOfReferringObjects("l");
assertEquals(3, numberOfReferringObjects);
List<String> referrersNames = getNumberOfReferringObjects("l");
assertNotNull(getRefWithWordInName(referrersNames, "frame"));
assertNotNull(getRefWithWordInName(referrersNames, "module"));
assertNotNull(getRefWithWordInName(referrersNames, "dict"));
}
@NotNull
@@ -323,15 +323,19 @@ public abstract class PyBaseDebuggerTask extends PyExecutionFixtureTestTask {
return null;
}
protected int getNumberOfReferringObjects(String name) throws PyDebuggerException {
protected List<String> getNumberOfReferringObjects(String name) throws PyDebuggerException {
XValue var = XDebuggerTestUtil.evaluate(mySession, name).first;
final PyReferringObjectsValue value = new PyReferringObjectsValue((PyDebugValue)var);
EvaluationCallback<Integer> callback = new EvaluationCallback<>();
EvaluationCallback<List<String>> callback = new EvaluationCallback<>();
myDebugProcess.loadReferrers(value, new PyDebugCallback<XValueChildrenList>() {
@Override
public void ok(XValueChildrenList valueList) {
callback.evaluated(valueList.size());
ArrayList<String> values = new ArrayList<>();
for (int i = 0; i < valueList.size(); ++i) {
values.add(valueList.getName(i));
}
callback.evaluated(values);
}
@Override
@@ -340,7 +344,7 @@ public abstract class PyBaseDebuggerTask extends PyExecutionFixtureTestTask {
}
});
final Pair<Integer, String> result = callback.waitFor(NORMAL_TIMEOUT);
final Pair<List<String>, String> result = callback.waitFor(NORMAL_TIMEOUT);
if (result.second != null) {
throw new PyDebuggerException(result.second);
}