[PATCH 2/2] kunit: tool: test: Don't rely on implicit working directory change

Thomas Weißschuh posted 2 patches 1 month, 1 week ago
There is a newer version of this series
[PATCH 2/2] kunit: tool: test: Don't rely on implicit working directory change
Posted by Thomas Weißschuh 1 month, 1 week ago
If no kunitconfig_paths are passed to LinuxSourceTree() it falls back to
DEFAULT_KUNITCONFIG_PATH. This resolution only works when the current
working directory is the root of the source tree. This works by chance
when running the full testsuite through the default unittest runner, as
some tests will change the current working directory as a side-effect of
'kunit.main()'. When running a single testcase or using pytest, which
resets the working directory for each test, this assumption breaks.

Explicitly specify an empty kunitconfig for the affected tests.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
 tools/testing/kunit/kunit_tool_test.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/tools/testing/kunit/kunit_tool_test.py b/tools/testing/kunit/kunit_tool_test.py
index fd7ca89596c0..584275ce6ba6 100755
--- a/tools/testing/kunit/kunit_tool_test.py
+++ b/tools/testing/kunit/kunit_tool_test.py
@@ -466,7 +466,8 @@ class LinuxSourceTreeTest(unittest.TestCase):
 		want_kconfig = kunit_config.Kconfig()
 		want_kconfig.add_entry('NOT_REAL', 'y')
 
-		tree = kunit_kernel.LinuxSourceTree('', kconfig_add=['CONFIG_NOT_REAL=y'])
+		tree = kunit_kernel.LinuxSourceTree('', kunitconfig_paths=[os.devnull],
+						    kconfig_add=['CONFIG_NOT_REAL=y'])
 		self.assertTrue(want_kconfig.is_subset_of(tree._kconfig), msg=tree._kconfig)
 
 	def test_invalid_arch(self):
@@ -478,7 +479,7 @@ class LinuxSourceTreeTest(unittest.TestCase):
 			return subprocess.Popen(['echo "hi\nbye"'], shell=True, text=True, stdout=subprocess.PIPE)
 
 		with tempfile.TemporaryDirectory('') as build_dir:
-			tree = kunit_kernel.LinuxSourceTree(build_dir)
+			tree = kunit_kernel.LinuxSourceTree(build_dir, kunitconfig_paths=[os.devnull])
 			mock.patch.object(tree._ops, 'start', side_effect=fake_start).start()
 
 			with self.assertRaises(ValueError):

-- 
2.52.0

Re: [PATCH 2/2] kunit: tool: test: Don't rely on implicit working directory change
Posted by David Gow 1 month ago
On Tue, 30 Dec 2025 at 20:56, Thomas Weißschuh
<thomas.weissschuh@linutronix.de> wrote:
>
> If no kunitconfig_paths are passed to LinuxSourceTree() it falls back to
> DEFAULT_KUNITCONFIG_PATH. This resolution only works when the current
> working directory is the root of the source tree. This works by chance
> when running the full testsuite through the default unittest runner, as
> some tests will change the current working directory as a side-effect of
> 'kunit.main()'. When running a single testcase or using pytest, which
> resets the working directory for each test, this assumption breaks.
>
> Explicitly specify an empty kunitconfig for the affected tests.
>
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> ---

Reviewed-by: David Gow <davidgow@google.com>

Cheers,
-- David


>  tools/testing/kunit/kunit_tool_test.py | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/kunit/kunit_tool_test.py b/tools/testing/kunit/kunit_tool_test.py
> index fd7ca89596c0..584275ce6ba6 100755
> --- a/tools/testing/kunit/kunit_tool_test.py
> +++ b/tools/testing/kunit/kunit_tool_test.py
> @@ -466,7 +466,8 @@ class LinuxSourceTreeTest(unittest.TestCase):
>                 want_kconfig = kunit_config.Kconfig()
>                 want_kconfig.add_entry('NOT_REAL', 'y')
>
> -               tree = kunit_kernel.LinuxSourceTree('', kconfig_add=['CONFIG_NOT_REAL=y'])
> +               tree = kunit_kernel.LinuxSourceTree('', kunitconfig_paths=[os.devnull],
> +                                                   kconfig_add=['CONFIG_NOT_REAL=y'])
>                 self.assertTrue(want_kconfig.is_subset_of(tree._kconfig), msg=tree._kconfig)
>
>         def test_invalid_arch(self):
> @@ -478,7 +479,7 @@ class LinuxSourceTreeTest(unittest.TestCase):
>                         return subprocess.Popen(['echo "hi\nbye"'], shell=True, text=True, stdout=subprocess.PIPE)
>
>                 with tempfile.TemporaryDirectory('') as build_dir:
> -                       tree = kunit_kernel.LinuxSourceTree(build_dir)
> +                       tree = kunit_kernel.LinuxSourceTree(build_dir, kunitconfig_paths=[os.devnull])
>                         mock.patch.object(tree._ops, 'start', side_effect=fake_start).start()
>
>                         with self.assertRaises(ValueError):
>
> --
> 2.52.0
>