Linux-kselftest Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v2 0/2] kunit: tool: Respect '.kunitconfig' in '--build_dir'
@ 2020-10-22  7:40 SeongJae Park
  2020-10-22  7:40 ` [PATCH v2 1/2] kunit: tool: Respect '.kunitconfig' in 'build_dir' SeongJae Park
  2020-10-22  7:40 ` [PATCH v2 2/2] kunit: tool: Mark 'kunittest_config' as constant again SeongJae Park
  0 siblings, 2 replies; 3+ messages in thread
From: SeongJae Park @ 2020-10-22  7:40 UTC (permalink / raw)
  To: brendanhiggins
  Cc: SeongJae Park, skhan, linux-kselftest, kunit-dev, linux-kernel

From: SeongJae Park <sjpark@amazon.de>

This patchset makes kunit tool to respect '.kunitconfig' under the
'--build_dir'.

Revision History
================

From v1
(https://lore.kernel.org/linux-kselftest/20201012102621.32226-2-sjpark@amazon.com/)
- Rebase on master branch of linus' tree (Not a clean rebase)
- Add 'Reviewed-by: Brendan Higgins <brendanhiggins@google.com>' in
  second patch

SeongJae Park (2):
  kunit: tool: Respect '.kunitconfig' in 'build_dir'
  kunit: tool: Mark 'kunittest_config' as constant again

 tools/testing/kunit/kunit.py        | 28 +++++++++++++++-------------
 tools/testing/kunit/kunit_kernel.py |  6 +++---
 2 files changed, 18 insertions(+), 16 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH v2 1/2] kunit: tool: Respect '.kunitconfig' in 'build_dir'
  2020-10-22  7:40 [PATCH v2 0/2] kunit: tool: Respect '.kunitconfig' in '--build_dir' SeongJae Park
@ 2020-10-22  7:40 ` SeongJae Park
  2020-10-22  7:40 ` [PATCH v2 2/2] kunit: tool: Mark 'kunittest_config' as constant again SeongJae Park
  1 sibling, 0 replies; 3+ messages in thread
From: SeongJae Park @ 2020-10-22  7:40 UTC (permalink / raw)
  To: brendanhiggins
  Cc: SeongJae Park, skhan, linux-kselftest, kunit-dev, linux-kernel

From: SeongJae Park <sjpark@amazon.de>

Commit d43c7fb05765 ("kunit: tool: fix improper treatment of file
location") removed 'kunit_kernel.kunitconfig_path' modification for the
'--build_dir' argument.  As a result, running kunit with '--build_dir'
failed with below error message:

    Traceback (most recent call last):
      File "./tools/testing/kunit/kunit.py", line 325, in <module>
        main(sys.argv[1:])
      File "./tools/testing/kunit/kunit.py", line 245, in main
        linux = kunit_kernel.LinuxSourceTree()
      File "/home/sjpark/linux/tools/testing/kunit/kunit_kernel.py", line 109, in __init__
        self._kconfig.read_from_file(kunitconfig_path)
      File "/home/sjpark/linux/tools/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: '.kunitconfig'

The error removed after commit 82206a0c06cc ("kunit: tool: handle when
.kunit exists but .kunitconfig does not").  However, it was not the
intention of the commit.  It hides the error by ignoring the
'.kunitconfig' in the '--build_dir'.

This commit makes the tool to respect '.kunitconfig' in '--build_dir'
again, while respecting the constantness of
'kunit_kernel.kunitconfig_path', as modifying the variable makes the
'kunit_tool_test.py' fails

Fixes: d43c7fb05765 ("kunit: tool: fix improper treatment of file location")
Signed-off-by: SeongJae Park <sjpark@amazon.de>
---
 tools/testing/kunit/kunit.py        | 26 ++++++++++++++------------
 tools/testing/kunit/kunit_kernel.py |  4 ++--
 2 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py
index ebf5f5763dee..8bee2a5fee27 100755
--- a/tools/testing/kunit/kunit.py
+++ b/tools/testing/kunit/kunit.py
@@ -44,10 +44,10 @@ class KunitStatus(Enum):
 	BUILD_FAILURE = auto()
 	TEST_FAILURE = auto()
 
-def create_default_kunitconfig():
-	if not os.path.exists(kunit_kernel.kunitconfig_path):
-		shutil.copyfile('arch/um/configs/kunit_defconfig',
-				kunit_kernel.kunitconfig_path)
+def create_default_kunitconfig(build_dir=''):
+	kunitconfig = os.path.join(build_dir, kunit_kernel.kunitconfig_path)
+	if not os.path.exists(kunitconfig):
+		shutil.copyfile('arch/um/configs/kunit_defconfig', kunitconfig)
 
 def get_kernel_root_path():
 	parts = sys.argv[0] if not __file__ else __file__
@@ -61,7 +61,7 @@ def config_tests(linux: kunit_kernel.LinuxSourceTree,
 	kunit_parser.print_with_timestamp('Configuring KUnit Kernel ...')
 
 	config_start = time.time()
-	create_default_kunitconfig()
+	create_default_kunitconfig(request.build_dir)
 	success = linux.build_reconfig(request.build_dir, request.make_options)
 	config_end = time.time()
 	if not success:
@@ -258,15 +258,17 @@ def main(argv, linux=None):
 	if get_kernel_root_path():
 		os.chdir(get_kernel_root_path())
 
+	kunitconfig_path = os.path.join(cli_args.build_dir,
+			kunit_kernel.kunitconfig_path)
 	if cli_args.subcommand == 'run':
 		if not os.path.exists(cli_args.build_dir):
 			os.mkdir(cli_args.build_dir)
 
-		if not os.path.exists(kunit_kernel.kunitconfig_path):
-			create_default_kunitconfig()
+		if not os.path.exists(kunitconfig_path):
+			create_default_kunitconfig(cli_args.build_dir)
 
 		if not linux:
-			linux = kunit_kernel.LinuxSourceTree()
+			linux = kunit_kernel.LinuxSourceTree(cli_args.build_dir)
 
 		request = KunitRequest(cli_args.raw_output,
 				       cli_args.timeout,
@@ -284,10 +286,10 @@ def main(argv, linux=None):
 			os.mkdir(cli_args.build_dir)
 
 		if not os.path.exists(kunit_kernel.kunitconfig_path):
-			create_default_kunitconfig()
+			create_default_kunitconfig(cli_args.build_dir)
 
 		if not linux:
-			linux = kunit_kernel.LinuxSourceTree()
+			linux = kunit_kernel.LinuxSourceTree(cli_args.build_dir)
 
 		request = KunitConfigRequest(cli_args.build_dir,
 					     cli_args.make_options)
@@ -299,7 +301,7 @@ def main(argv, linux=None):
 			sys.exit(1)
 	elif cli_args.subcommand == 'build':
 		if not linux:
-			linux = kunit_kernel.LinuxSourceTree()
+			linux = kunit_kernel.LinuxSourceTree(cli_args.build_dir)
 
 		request = KunitBuildRequest(cli_args.jobs,
 					    cli_args.build_dir,
@@ -313,7 +315,7 @@ def main(argv, linux=None):
 			sys.exit(1)
 	elif cli_args.subcommand == 'exec':
 		if not linux:
-			linux = kunit_kernel.LinuxSourceTree()
+			linux = kunit_kernel.LinuxSourceTree(cli_args.build_dir)
 
 		exec_request = KunitExecRequest(cli_args.timeout,
 						cli_args.build_dir,
diff --git a/tools/testing/kunit/kunit_kernel.py b/tools/testing/kunit/kunit_kernel.py
index b557b1e93f98..7dd4268665a8 100644
--- a/tools/testing/kunit/kunit_kernel.py
+++ b/tools/testing/kunit/kunit_kernel.py
@@ -109,9 +109,9 @@ def get_kconfig_path(build_dir):
 class LinuxSourceTree(object):
 	"""Represents a Linux kernel source tree with KUnit tests."""
 
-	def __init__(self):
+	def __init__(self, build_dir):
 		self._kconfig = kunit_config.Kconfig()
-		self._kconfig.read_from_file(kunitconfig_path)
+		self._kconfig.read_from_file(os.path.join(build_dir, kunitconfig_path))
 		self._ops = LinuxSourceTreeOperations()
 		signal.signal(signal.SIGINT, self.signal_handler)
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH v2 2/2] kunit: tool: Mark 'kunittest_config' as constant again
  2020-10-22  7:40 [PATCH v2 0/2] kunit: tool: Respect '.kunitconfig' in '--build_dir' SeongJae Park
  2020-10-22  7:40 ` [PATCH v2 1/2] kunit: tool: Respect '.kunitconfig' in 'build_dir' SeongJae Park
@ 2020-10-22  7:40 ` SeongJae Park
  1 sibling, 0 replies; 3+ messages in thread
From: SeongJae Park @ 2020-10-22  7:40 UTC (permalink / raw)
  To: brendanhiggins
  Cc: SeongJae Park, skhan, linux-kselftest, kunit-dev, linux-kernel

From: SeongJae Park <sjpark@amazon.de>

'kunit_kernel.kunittest_config' was constant at first, and therefore it
used UPPER_SNAKE_CASE naming convention that usually means it is
constant in Python world.  But, commit e3212513a8f0 ("kunit: Create
default config in '--build_dir'") made it modifiable to fix a use case
of the tool and thus the naming also changed to lower_snake_case.
However, this resulted in a confusion.  As a result, some successing
changes made the tool unittest fail, and a fix[1] of it again incurred
the '--build_dir' use case failure.

As the previous commit fixed the '--build_dir' use case without
modifying the variable again, this commit marks the variable as constant
again with UPPER_SNAKE_CASE, to reduce future confusions.

[1] Commit d43c7fb05765 ("kunit: tool: fix improper treatment of file location")

Signed-off-by: SeongJae Park <sjpark@amazon.de>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
---
 tools/testing/kunit/kunit.py        | 6 +++---
 tools/testing/kunit/kunit_kernel.py | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py
index 8bee2a5fee27..26046875adb2 100755
--- a/tools/testing/kunit/kunit.py
+++ b/tools/testing/kunit/kunit.py
@@ -45,7 +45,7 @@ class KunitStatus(Enum):
 	TEST_FAILURE = auto()
 
 def create_default_kunitconfig(build_dir=''):
-	kunitconfig = os.path.join(build_dir, kunit_kernel.kunitconfig_path)
+	kunitconfig = os.path.join(build_dir, kunit_kernel.KUNITCONFIG_PATH)
 	if not os.path.exists(kunitconfig):
 		shutil.copyfile('arch/um/configs/kunit_defconfig', kunitconfig)
 
@@ -259,7 +259,7 @@ def main(argv, linux=None):
 		os.chdir(get_kernel_root_path())
 
 	kunitconfig_path = os.path.join(cli_args.build_dir,
-			kunit_kernel.kunitconfig_path)
+			kunit_kernel.KUNITCONFIG_PATH)
 	if cli_args.subcommand == 'run':
 		if not os.path.exists(cli_args.build_dir):
 			os.mkdir(cli_args.build_dir)
@@ -285,7 +285,7 @@ def main(argv, linux=None):
 				not os.path.exists(cli_args.build_dir)):
 			os.mkdir(cli_args.build_dir)
 
-		if not os.path.exists(kunit_kernel.kunitconfig_path):
+		if not os.path.exists(kunitconfig_path):
 			create_default_kunitconfig(cli_args.build_dir)
 
 		if not linux:
diff --git a/tools/testing/kunit/kunit_kernel.py b/tools/testing/kunit/kunit_kernel.py
index 7dd4268665a8..f4bc9568bbce 100644
--- a/tools/testing/kunit/kunit_kernel.py
+++ b/tools/testing/kunit/kunit_kernel.py
@@ -18,7 +18,7 @@ import kunit_config
 import kunit_parser
 
 KCONFIG_PATH = '.config'
-kunitconfig_path = '.kunitconfig'
+KUNITCONFIG_PATH = '.kunitconfig'
 BROKEN_ALLCONFIG_PATH = 'tools/testing/kunit/configs/broken_on_uml.config'
 
 class ConfigError(Exception):
@@ -111,7 +111,7 @@ class LinuxSourceTree(object):
 
 	def __init__(self, build_dir):
 		self._kconfig = kunit_config.Kconfig()
-		self._kconfig.read_from_file(os.path.join(build_dir, kunitconfig_path))
+		self._kconfig.read_from_file(os.path.join(build_dir, KUNITCONFIG_PATH))
 		self._ops = LinuxSourceTreeOperations()
 		signal.signal(signal.SIGINT, self.signal_handler)
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, back to index

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-22  7:40 [PATCH v2 0/2] kunit: tool: Respect '.kunitconfig' in '--build_dir' SeongJae Park
2020-10-22  7:40 ` [PATCH v2 1/2] kunit: tool: Respect '.kunitconfig' in 'build_dir' SeongJae Park
2020-10-22  7:40 ` [PATCH v2 2/2] kunit: tool: Mark 'kunittest_config' as constant again SeongJae Park

Linux-kselftest Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-kselftest/0 linux-kselftest/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-kselftest linux-kselftest/ https://lore.kernel.org/linux-kselftest \
		linux-kselftest@vger.kernel.org
	public-inbox-index linux-kselftest

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kselftest


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git