diff options
author | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-03-07 20:22:12 (GMT) |
---|---|---|
committer | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-03-07 20:22:12 (GMT) |
commit | 53e8eeadd60ab7566d2bc29a51ce286a890dd14b (patch) | |
tree | 7dbc8ce24d555d524f41f6d582015e279b53d687 /Lib/test/test_unittest.py | |
parent | fc8a1ed70e2586871e06cea60dfd25a96ed5a313 (diff) | |
download | cpython-53e8eeadd60ab7566d2bc29a51ce286a890dd14b.zip cpython-53e8eeadd60ab7566d2bc29a51ce286a890dd14b.tar.gz cpython-53e8eeadd60ab7566d2bc29a51ce286a890dd14b.tar.bz2 |
Fix for potentials errors in constructing unittest failure messages. Plus skipped test methods no longer run setUp and tearDown (Issue 8059)
Diffstat (limited to 'Lib/test/test_unittest.py')
-rw-r--r-- | Lib/test/test_unittest.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Lib/test/test_unittest.py b/Lib/test/test_unittest.py index 048f67b..be4811c 100644 --- a/Lib/test/test_unittest.py +++ b/Lib/test/test_unittest.py @@ -3118,6 +3118,43 @@ class Test_TestSkipping(TestCase): self.assertEqual(result.unexpectedSuccesses, [test]) self.assertTrue(result.wasSuccessful()) + def test_skip_doesnt_run_setup(self): + class Foo(unittest.TestCase): + wasSetUp = False + wasTornDown = False + def setUp(self): + Foo.wasSetUp = True + def tornDown(self): + Foo.wasTornDown = True + @unittest.skip('testing') + def test_1(self): + pass + + result = unittest.TestResult() + test = Foo("test_1") + suite = unittest.TestSuite([test]) + suite.run(result) + self.assertEqual(result.skipped, [(test, "testing")]) + self.assertFalse(Foo.wasSetUp) + self.assertFalse(Foo.wasTornDown) + + def test_decorated_skip(self): + def decorator(func): + def inner(*a): + return func(*a) + return inner + + class Foo(unittest.TestCase): + @decorator + @unittest.skip('testing') + def test_1(self): + pass + + result = unittest.TestResult() + test = Foo("test_1") + suite = unittest.TestSuite([test]) + suite.run(result) + self.assertEqual(result.skipped, [(test, "testing")]) class Test_Assertions(TestCase): @@ -3220,6 +3257,16 @@ class TestLongMessage(TestCase): self.assertEquals(self.testableTrue._formatMessage(None, "foo"), "foo") self.assertEquals(self.testableTrue._formatMessage("foo", "bar"), "bar : foo") + # This blows up if _formatMessage uses string concatenation + self.testableTrue._formatMessage(object(), 'foo') + + def test_formatMessage_unicode_error(self): + with warnings.catch_warnings(record=True): + # This causes a UnicodeWarning due to its craziness + one = ''.join(chr(i) for i in range(255)) + # this used to cause a UnicodeDecodeError constructing msg + self.testableTrue._formatMessage(one, u'\uFFFD') + def assertMessages(self, methodName, args, errors): def getMethod(i): useTestableFalse = i < 2 |