[igt-dev] [PATCH i-g-t 10/10] KUnit: replace abort with graceful skip

Dominik Karol Piatkowski dominik.karol.piatkowski at intel.com
Tue Jun 13 07:27:26 UTC 2023


Sample drm_buddy output with missing requirements:
	Starting subtest: drm_buddy_test
	(drm_buddy:32218) igt_kmod-WARNING: Unable to load KUnit
	Subtest drm_buddy_test: SKIP (0.001s)

Signed-off-by: Dominik Karol Piątkowski <dominik.karol.piatkowski at intel.com>
Cc: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
Cc: Mauro Carvalho Chehab <mauro.chehab at linux.intel.com>
---
 lib/igt_kmod.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
index 1511bdef4..04220f404 100644
--- a/lib/igt_kmod.c
+++ b/lib/igt_kmod.c
@@ -763,27 +763,27 @@ static void __igt_kunit(const char *module_name, const char *opts)
 	int ret;
 	struct ktap_test_results *results;
 	struct ktap_test_results_element *temp;
+	bool skip = false;
 
 	/* get normalized module name */
 	if (igt_ktest_init(&tst, module_name) != 0) {
-		igt_warn("Unable to initialize ktest for %s\n", module_name);
-		igt_fail(IGT_EXIT_SKIP);
+		igt_skip("Unable to initialize ktest for %s\n", module_name);
 	}
 
 	if (igt_ktest_begin(&tst) != 0) {
-		igt_warn("Unable to begin ktest for %s\n", module_name);
-
 		igt_ktest_fini(&tst);
-		igt_fail(IGT_EXIT_SKIP);
+		igt_skip("Unable to begin ktest for %s\n", module_name);
 	}
 
 	if (tst.kmsg < 0) {
 		igt_warn("Could not open /dev/kmsg\n");
+		skip = true;
 		goto unload;
 	}
 
 	if (lseek(tst.kmsg, 0, SEEK_END)) {
 		igt_warn("Could not seek the end of /dev/kmsg\n");
+		skip = true;
 		goto unload;
 	}
 
@@ -791,6 +791,7 @@ static void __igt_kunit(const char *module_name, const char *opts)
 
 	if (f == NULL) {
 		igt_warn("Could not turn /dev/kmsg file descriptor into a FILE pointer\n");
+		skip = true;
 		goto unload;
 	}
 
@@ -798,7 +799,8 @@ static void __igt_kunit(const char *module_name, const char *opts)
 	if (igt_kmod_load("kunit", NULL) != 0 ||
 	    kmod_module_new_from_name(kmod_ctx(), "kunit", &kunit_kmod) != 0) {
 		igt_warn("Unable to load KUnit\n");
-		igt_fail(IGT_EXIT_FAILURE);
+		skip = true;
+		goto unload;
 	}
 
 	is_builtin = kmod_module_get_initstate(kunit_kmod) == KMOD_MODULE_BUILTIN;
@@ -808,7 +810,8 @@ static void __igt_kunit(const char *module_name, const char *opts)
 	if (igt_kmod_load(module_name, opts) != 0) {
 		igt_warn("Unable to load %s module\n", module_name);
 		ret = ktap_parser_stop();
-		igt_fail(IGT_EXIT_FAILURE);
+		skip = true;
+		goto unload;
 	}
 
 	while (READ_ONCE(results->still_running) || READ_ONCE(results->head) != NULL)
@@ -836,6 +839,9 @@ unload:
 
 	igt_ktest_fini(&tst);
 
+	if (skip)
+		igt_skip("");
+
 	ret = ktap_parser_stop();
 
 	if (ret != 0)
-- 
2.34.1



More information about the igt-dev mailing list