From 6f0a8a752d03ea20057ac57d958825de688c6555 Mon Sep 17 00:00:00 2001 From: Brian Beach Date: Mon, 14 Mar 2011 11:34:19 -0400 Subject: [PATCH] Make AsyncTestCase call tearDown in super class. The setUp method was calling super, but tearDown wasn't. Now they both are. This change includes a new unit test case to verify the fix. --- tornado/test/testing_test.py | 30 +++++++++++++++++++++++++++++- tornado/testing.py | 1 + 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/tornado/test/testing_test.py b/tornado/test/testing_test.py index 4391675d6..bdca031ed 100644 --- a/tornado/test/testing_test.py +++ b/tornado/test/testing_test.py @@ -11,5 +11,33 @@ class AsyncTestCaseTest(AsyncTestCase, LogTrapTestCase): except ZeroDivisionError: pass +class SetUpTearDownTest(unittest.TestCase): + def test_set_up_tear_down(self): + """ + This test makes sure that AsyncTestCase calls super methods for + setUp and tearDown. + + InheritBoth is a subclass of both AsyncTestCase and + SetUpTearDown, with the ordering so that the super of + AsyncTestCase will be SetUpTearDown. + """ + events = [] + result = unittest.TestResult() + + class SetUpTearDown(unittest.TestCase): + def setUp(self): + events.append('setUp') + + def tearDown(self): + events.append('tearDown') + + class InheritBoth(AsyncTestCase, SetUpTearDown): + def test(self): + events.append('test') + + InheritBoth('test').run(result) + expected = ['setUp', 'test', 'tearDown'] + self.assertEqual(expected, events) + if __name__ == '__main__': - unittest.main + unittest.main() diff --git a/tornado/testing.py b/tornado/testing.py index 507a378e0..a92f337f4 100644 --- a/tornado/testing.py +++ b/tornado/testing.py @@ -112,6 +112,7 @@ class AsyncTestCase(unittest.TestCase): logging.debug("error closing fd %d", fd, exc_info=True) self.io_loop._waker_reader.close() self.io_loop._waker_writer.close() + super(AsyncTestCase, self).tearDown() def get_new_ioloop(self): '''Creates a new IOLoop for this test. May be overridden in -- 2.47.2