From: Brian Beach Date: Mon, 14 Mar 2011 15:34:19 +0000 (-0400) Subject: Make AsyncTestCase call tearDown in super class. X-Git-Tag: v2.0.0~113 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F232%2Fhead;p=thirdparty%2Ftornado.git 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. --- 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