From 8bb39694b478e0047a8921f941f8a5d9c23c854c Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Thu, 24 Mar 2016 23:10:07 +0300 Subject: [PATCH] PY-18926: Wrapping AttributeError Nose has bug: instead of Test we are getting ContextSuite in case of error in setup class. It does not have attribute .test, so we wrap it try / except to mimic previous behavior (pre 5.0) when we simply did not check this field --- python/helpers/pycharm/nose_utils.py | 5 ++++- python/testData/testRunner/env/nose/test1.py | 10 +++++++++- .../env/python/testing/PythonNoseTestingTest.java | 3 +-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/python/helpers/pycharm/nose_utils.py b/python/helpers/pycharm/nose_utils.py index ac67495e6adc..9e4d4bfccd96 100644 --- a/python/helpers/pycharm/nose_utils.py +++ b/python/helpers/pycharm/nose_utils.py @@ -55,7 +55,10 @@ class TeamcityPlugin(ErrorClassPlugin, TextTestResult, TeamcityTestResult): def _is_failure(self, test): - return isinstance(test.test, Failure) + try: + return isinstance(test.test, Failure) + except AttributeError: + return False def addError(self, test, err): exctype, value, tb = err diff --git a/python/testData/testRunner/env/nose/test1.py b/python/testData/testRunner/env/nose/test1.py index 972270f800a2..cd9540e843f5 100644 --- a/python/testData/testRunner/env/nose/test1.py +++ b/python/testData/testRunner/env/nose/test1.py @@ -1,4 +1,4 @@ -#from unittest import TestCase +from unittest import TestCase class TestNose: def testOne(self): @@ -9,3 +9,11 @@ class TestNose: def testThree(): assert 4 == 2*2 + +class FooTest(TestCase): + + @classmethod + def setUpClass(self): + raise ValueError() # or any other bug + def test_test(self): + pass \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/env/python/testing/PythonNoseTestingTest.java b/python/testSrc/com/jetbrains/env/python/testing/PythonNoseTestingTest.java index 4bcc228906c4..21f9bd20d67a 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/PythonNoseTestingTest.java +++ b/python/testSrc/com/jetbrains/env/python/testing/PythonNoseTestingTest.java @@ -36,9 +36,8 @@ public final class PythonNoseTestingTest extends PyEnvTestCase { @NotNull final String stdout, @NotNull final String stderr, @NotNull final String all) { - assertEquals(3, runner.getAllTestsCount()); + assertEquals(4, runner.getAllTestsCount()); assertEquals(3, runner.getPassedTestsCount()); - runner.assertAllTestsPassed(); } }); }