kunit: Fix TabError, remove defconfig code and handle when there is no kunitconfig
authorVitor Massaru Iha <vitor@massaru.org>
Fri, 29 May 2020 19:28:45 +0000 (16:28 -0300)
committerShuah Khan <skhan@linuxfoundation.org>
Mon, 1 Jun 2020 20:14:07 +0000 (14:14 -0600)
The identation before this code
(`if not os.path.exists(cli_args.build_dir):``)
was with spaces instead of tabs after fixed up merge conflits,
this commit revert spaces to tabs:

[iha@bbking linux]$ tools/testing/kunit/kunit.py run
  File "tools/testing/kunit/kunit.py", line 247
    if not linux:
                ^
TabError: inconsistent use of tabs and spaces in indentation

[iha@bbking linux]$ tools/testing/kunit/kunit.py run
Traceback (most recent call last):
  File "tools/testing/kunit/kunit.py", line 338, in <module>
    main(sys.argv[1:])
  File "tools/testing/kunit/kunit.py", line 215, in main
    add_config_opts(config_parser)

[iha@bbking linux]$ tools/testing/kunit/kunit.py run
Traceback (most recent call last):
  File "tools/testing/kunit/kunit.py", line 337, in <module>
    main(sys.argv[1:])
  File "tools/testing/kunit/kunit.py", line 255, in main
    result = run_tests(linux, request)
  File "tools/testing/kunit/kunit.py", line 133, in run_tests
    request.defconfig,
AttributeError: 'KunitRequest' object has no attribute 'defconfig'

Handles when there is no .kunitconfig, the error due to merge conflicts
between the following:

commit 9bdf64b35117 ("kunit: use KUnit defconfig by default")
commit 45ba7a893ad8 ("kunit: kunit_tool: Separate out
config/build/exec/parse")

[iha@bbking linux]$ tools/testing/kunit/kunit.py run
Traceback (most recent call last):
  File "tools/testing/kunit/kunit.py", line 335, in <module>
    main(sys.argv[1:])
  File "tools/testing/kunit/kunit.py", line 246, in main
    linux = kunit_kernel.LinuxSourceTree()
  File "../tools/testing/kunit/kunit_kernel.py", line 109, in __init__
    self._kconfig.read_from_file(kunitconfig_path)
  File "t../ools/testing/kunit/kunit_config.py", line 88, in read_from_file
    with open(path, 'r') as f:
FileNotFoundError: [Errno 2] No such file or directory: '.kunit/.kunitconfig'

Signed-off-by: Vitor Massaru Iha <vitor@massaru.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/kunit/kunit.py

index ec73b07d126582ff5481d54c364d6533bb680277..787b6d4ad7162e759b3c06a287e24396e42edfbe 100755 (executable)
@@ -23,7 +23,7 @@ import kunit_parser
 KunitResult = namedtuple('KunitResult', ['status','result','elapsed_time'])
 
 KunitConfigRequest = namedtuple('KunitConfigRequest',
-                               ['build_dir', 'defconfig', 'make_options'])
+                               ['build_dir', 'make_options'])
 KunitBuildRequest = namedtuple('KunitBuildRequest',
                               ['jobs', 'build_dir', 'alltests',
                                'make_options'])
@@ -130,7 +130,6 @@ def run_tests(linux: kunit_kernel.LinuxSourceTree,
        run_start = time.time()
 
        config_request = KunitConfigRequest(request.build_dir,
-                                           request.defconfig,
                                            request.make_options)
        config_result = config_tests(linux, config_request)
        if config_result.status != KunitStatus.SUCCESS:
@@ -212,7 +211,6 @@ def main(argv, linux=None):
                                                help='Ensures that .config contains all of '
                                                'the options in .kunitconfig')
        add_common_opts(config_parser)
-       add_config_opts(config_parser)
 
        build_parser = subparser.add_parser('build', help='Builds a kernel with KUnit tests')
        add_common_opts(build_parser)
@@ -238,11 +236,14 @@ def main(argv, linux=None):
        cli_args = parser.parse_args(argv)
 
        if cli_args.subcommand == 'run':
-                if not os.path.exists(cli_args.build_dir):
-                    os.mkdir(cli_args.build_dir)
-                kunit_kernel.kunitconfig_path = os.path.join(
-                        cli_args.build_dir,
-                        kunit_kernel.kunitconfig_path)
+               if not os.path.exists(cli_args.build_dir):
+                       os.mkdir(cli_args.build_dir)
+               kunit_kernel.kunitconfig_path = os.path.join(
+                       cli_args.build_dir,
+                       kunit_kernel.kunitconfig_path)
+
+               if not os.path.exists(kunit_kernel.kunitconfig_path):
+                       create_default_kunitconfig()
 
                if not linux:
                        linux = kunit_kernel.LinuxSourceTree()
@@ -264,11 +265,13 @@ def main(argv, linux=None):
                                cli_args.build_dir,
                                kunit_kernel.kunitconfig_path)
 
+               if not os.path.exists(kunit_kernel.kunitconfig_path):
+                       create_default_kunitconfig()
+
                if not linux:
                        linux = kunit_kernel.LinuxSourceTree()
 
                request = KunitConfigRequest(cli_args.build_dir,
-                                            cli_args.defconfig,
                                             cli_args.make_options)
                result = config_tests(linux, request)
                kunit_parser.print_with_timestamp((
@@ -284,6 +287,9 @@ def main(argv, linux=None):
                                cli_args.build_dir,
                                kunit_kernel.kunitconfig_path)
 
+               if not os.path.exists(kunit_kernel.kunitconfig_path):
+                       create_default_kunitconfig()
+
                if not linux:
                        linux = kunit_kernel.LinuxSourceTree()
 
@@ -305,6 +311,9 @@ def main(argv, linux=None):
                                cli_args.build_dir,
                                kunit_kernel.kunitconfig_path)
 
+               if not os.path.exists(kunit_kernel.kunitconfig_path):
+                       create_default_kunitconfig()
+
                if not linux:
                        linux = kunit_kernel.LinuxSourceTree()