Commit 128dc4bc authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Shuah Khan
Browse files

kunit: Do not pollute source directory with generated files (test.log)



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: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: default avatarBrendan Higgins <brendanhiggins@google.com>
Tested-by: default avatarBrendan Higgins <brendanhiggins@google.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent fcdb0bc0
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -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: