kunit: Do not pollute source directory with generated files (test.log)
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 26 Oct 2020 16:59:26 +0000 (18:59 +0200)
committerShuah Khan <skhan@linuxfoundation.org>
Tue, 10 Nov 2020 20:31:16 +0000 (13:31 -0700)
When --build_dir is provided use it and do not pollute source directory
which even can be mounted over network or read-only.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
Tested-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/kunit/kunit_kernel.py

index 633a2ef..b4768fa 100644 (file)
@@ -21,6 +21,7 @@ KCONFIG_PATH = '.config'
 KUNITCONFIG_PATH = '.kunitconfig'
 DEFAULT_KUNITCONFIG_PATH = 'arch/um/configs/kunit_defconfig'
 BROKEN_ALLCONFIG_PATH = 'tools/testing/kunit/configs/broken_on_uml.config'
+OUTFILE_PATH = 'test.log'
 
 class ConfigError(Exception):
        """Represents an error trying to configure the Linux kernel."""
@@ -89,11 +90,12 @@ class LinuxSourceTreeOperations(object):
                except subprocess.CalledProcessError as e:
                        raise BuildError(e.output.decode())
 
-       def linux_bin(self, params, timeout, build_dir, outfile):
+       def linux_bin(self, params, timeout, build_dir):
                """Runs the Linux UML binary. Must be named 'linux'."""
                linux_bin = './linux'
                if build_dir:
                        linux_bin = os.path.join(build_dir, 'linux')
+               outfile = get_outfile_path(build_dir)
                with open(outfile, 'w') as output:
                        process = subprocess.Popen([linux_bin] + params,
                                                   stdout=output,
@@ -112,6 +114,12 @@ def get_kunitconfig_path(build_dir):
                kunitconfig_path = os.path.join(build_dir, KUNITCONFIG_PATH)
        return kunitconfig_path
 
+def get_outfile_path(build_dir):
+       outfile_path = OUTFILE_PATH
+       if build_dir:
+               outfile_path = os.path.join(build_dir, OUTFILE_PATH)
+       return outfile_path
+
 class LinuxSourceTree(object):
        """Represents a Linux kernel source tree with KUnit tests."""
 
@@ -192,8 +200,8 @@ class LinuxSourceTree(object):
 
        def run_kernel(self, args=[], build_dir='', timeout=None):
                args.extend(['mem=1G'])
-               outfile = 'test.log'
-               self._ops.linux_bin(args, timeout, build_dir, outfile)
+               self._ops.linux_bin(args, timeout, build_dir)
+               outfile = get_outfile_path(build_dir)
                subprocess.call(['stty', 'sane'])
                with open(outfile, 'r') as file:
                        for line in file: