kunit: tool: fix unit test cleanup handling
authorDaniel Latypov <dlatypov@google.com>
Wed, 2 Dec 2020 19:08:21 +0000 (11:08 -0800)
committerShuah Khan <skhan@linuxfoundation.org>
Mon, 8 Feb 2021 22:33:32 +0000 (15:33 -0700)
* Stop leaking file objects.
* Use self.addCleanup() to ensure we call cleanup functions even if
setUp() fails.
* use mock.patch.stopall instead of more error-prone manual approach

Signed-off-by: Daniel Latypov <dlatypov@google.com>
Reviewed-by: David Gow <davidgow@google.com>
Tested-by: Brendan Higgins <brendanhiggins@google.com>
Acked-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/kunit/kunit_tool_test.py

index b593f44..9a036e9 100755 (executable)
@@ -288,19 +288,17 @@ class StrContains(str):
 class KUnitMainTest(unittest.TestCase):
        def setUp(self):
                path = get_absolute_path('test_data/test_is_test_passed-all_passed.log')
-               file = open(path)
-               all_passed_log = file.readlines()
-               self.print_patch = mock.patch('builtins.print')
-               self.print_mock = self.print_patch.start()
+               with open(path) as file:
+                       all_passed_log = file.readlines()
+
+               self.print_mock = mock.patch('builtins.print').start()
+               self.addCleanup(mock.patch.stopall)
+
                self.linux_source_mock = mock.Mock()
                self.linux_source_mock.build_reconfig = mock.Mock(return_value=True)
                self.linux_source_mock.build_um_kernel = mock.Mock(return_value=True)
                self.linux_source_mock.run_kernel = mock.Mock(return_value=all_passed_log)
 
-       def tearDown(self):
-               self.print_patch.stop()
-               pass
-
        def test_config_passes_args_pass(self):
                kunit.main(['config', '--build_dir=.kunit'], self.linux_source_mock)
                assert self.linux_source_mock.build_reconfig.call_count == 1