kunit: tool: misc fixes (unused vars, imports, leaked files)
authorDaniel Latypov <dlatypov@google.com>
Tue, 28 Sep 2021 22:11:11 +0000 (15:11 -0700)
committerShuah Khan <skhan@linuxfoundation.org>
Tue, 19 Oct 2021 20:18:49 +0000 (14:18 -0600)
Drop some variables in unit tests that were unused and/or add assertions
based on them.

For ExitStack, it was imported, but the `es` variable wasn't used so it
didn't do anything, and we were leaking the file objects.
Refactor it to just use nested `with` statements to properly close them.

And drop the direct use of .close() on file objects in the kunit tool
unit test, as these can be leaked if test assertions fail.

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

index 8fa2ccd4f88f1b5b70cd517884ccc9f9b4f4827d..62fc5a999d545442ec43c5b52108c523144c096d 100755 (executable)
@@ -18,7 +18,6 @@ from collections import namedtuple
 from enum import Enum, auto
 from typing import Iterable, Sequence
 
-import kunit_config
 import kunit_json
 import kunit_kernel
 import kunit_parser
index 2c6f916ccbafa7cea19aa991939b35c4a88c55b4..1870e75ff153d59e37a3c7b67c02f8404f72faaa 100644 (file)
@@ -14,10 +14,6 @@ import shutil
 import signal
 from typing import Iterator, Optional, Tuple
 
-from contextlib import ExitStack
-
-from collections import namedtuple
-
 import kunit_config
 import kunit_parser
 import qemu_config
@@ -168,10 +164,10 @@ class LinuxSourceTreeOperationsUml(LinuxSourceTreeOperations):
                process.wait()
                kunit_parser.print_with_timestamp(
                        'Disabling broken configs to run KUnit tests...')
-               with ExitStack() as es:
-                       config = open(get_kconfig_path(build_dir), 'a')
-                       disable = open(BROKEN_ALLCONFIG_PATH, 'r').read()
-                       config.write(disable)
+
+               with open(get_kconfig_path(build_dir), 'a') as config:
+                       with open(BROKEN_ALLCONFIG_PATH, 'r') as disable:
+                               config.write(disable.read())
                kunit_parser.print_with_timestamp(
                        'Starting Kernel with all configs takes a few minutes...')
 
index 1edcc8373b4e3195a5b88634bcb45964381abcc2..bc6b85db6beb7bd52031040bf9d2188dfb02e082 100755 (executable)
@@ -185,7 +185,7 @@ class KUnitParserTest(unittest.TestCase):
                                kunit_parser.extract_tap_lines(file.readlines()))
                print_mock.assert_any_call(StrContains('could not parse test results!'))
                print_mock.stop()
-               file.close()
+               self.assertEqual(0, len(result.suites))
 
        def test_crashed_test(self):
                crashed_log = test_data_path('test_is_test_passed-crash.log')
@@ -197,24 +197,22 @@ class KUnitParserTest(unittest.TestCase):
 
        def test_skipped_test(self):
                skipped_log = test_data_path('test_skip_tests.log')
-               file = open(skipped_log)
-               result = kunit_parser.parse_run_tests(file.readlines())
+               with open(skipped_log) as file:
+                       result = kunit_parser.parse_run_tests(file.readlines())
 
                # A skipped test does not fail the whole suite.
                self.assertEqual(
                        kunit_parser.TestStatus.SUCCESS,
                        result.status)
-               file.close()
 
        def test_skipped_all_tests(self):
                skipped_log = test_data_path('test_skip_all_tests.log')
-               file = open(skipped_log)
-               result = kunit_parser.parse_run_tests(file.readlines())
+               with open(skipped_log) as file:
+                       result = kunit_parser.parse_run_tests(file.readlines())
 
                self.assertEqual(
                        kunit_parser.TestStatus.SKIPPED,
                        result.status)
-               file.close()
 
 
        def test_ignores_prefix_printk_time(self):
@@ -283,13 +281,13 @@ class LinuxSourceTreeTest(unittest.TestCase):
 
        def test_valid_kunitconfig(self):
                with tempfile.NamedTemporaryFile('wt') as kunitconfig:
-                       tree = kunit_kernel.LinuxSourceTree('', kunitconfig_path=kunitconfig.name)
+                       kunit_kernel.LinuxSourceTree('', kunitconfig_path=kunitconfig.name)
 
        def test_dir_kunitconfig(self):
                with tempfile.TemporaryDirectory('') as dir:
-                       with open(os.path.join(dir, '.kunitconfig'), 'w') as f:
+                       with open(os.path.join(dir, '.kunitconfig'), 'w'):
                                pass
-                       tree = kunit_kernel.LinuxSourceTree('', kunitconfig_path=dir)
+                       kunit_kernel.LinuxSourceTree('', kunitconfig_path=dir)
 
        # TODO: add more test cases.