From da24d335dc68f7a884850613c4154475f83c2969 Mon Sep 17 00:00:00 2001 From: Elizaveta Shashkova Date: Wed, 20 Dec 2017 14:25:51 +0300 Subject: [PATCH] Tests: number of referrers depends on interpreter version, check for names instead --- .../com/jetbrains/env/python/PythonDebuggerTest.java | 10 ++++++++-- .../env/python/debug/PyBaseDebuggerTask.java | 12 ++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java b/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java index 742a1c3b23c9..0e34e0cbc41b 100644 --- a/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java +++ b/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java @@ -1155,11 +1155,17 @@ public class PythonDebuggerTest extends PyEnvTestCase { toggleBreakpoint(getFilePath(getScriptName()), 3); } + private String getRefWithWordInName(List 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 referrersNames = getNumberOfReferringObjects("l"); + assertNotNull(getRefWithWordInName(referrersNames, "frame")); + assertNotNull(getRefWithWordInName(referrersNames, "module")); + assertNotNull(getRefWithWordInName(referrersNames, "dict")); } @NotNull diff --git a/python/testSrc/com/jetbrains/env/python/debug/PyBaseDebuggerTask.java b/python/testSrc/com/jetbrains/env/python/debug/PyBaseDebuggerTask.java index 7a2dc0ba635d..7ed23d3f248a 100644 --- a/python/testSrc/com/jetbrains/env/python/debug/PyBaseDebuggerTask.java +++ b/python/testSrc/com/jetbrains/env/python/debug/PyBaseDebuggerTask.java @@ -323,15 +323,19 @@ public abstract class PyBaseDebuggerTask extends PyExecutionFixtureTestTask { return null; } - protected int getNumberOfReferringObjects(String name) throws PyDebuggerException { + protected List getNumberOfReferringObjects(String name) throws PyDebuggerException { XValue var = XDebuggerTestUtil.evaluate(mySession, name).first; final PyReferringObjectsValue value = new PyReferringObjectsValue((PyDebugValue)var); - EvaluationCallback callback = new EvaluationCallback<>(); + EvaluationCallback> callback = new EvaluationCallback<>(); myDebugProcess.loadReferrers(value, new PyDebugCallback() { @Override public void ok(XValueChildrenList valueList) { - callback.evaluated(valueList.size()); + ArrayList 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 result = callback.waitFor(NORMAL_TIMEOUT); + final Pair, String> result = callback.waitFor(NORMAL_TIMEOUT); if (result.second != null) { throw new PyDebuggerException(result.second); }