[PATCH v2 1/2] libtracefs: utest: Return non-zero exit code when something fails

Michal Sojka <[email protected]> Mon, 28 Jul 2025 16:34:33 +0200
Newsgroups org.kernel.vger.linux-trace-devel
Message-ID <[email protected]>
Previously, the test suite returned zero exit status even if something
failed. One could learn about the failure from the output, such as:

    WARNING - Suite initialization failed for 'tracefs library'.
    Run Summary:    Type  Total    Ran Passed Failed Inactive
                  suites      1      0    n/a      1        0
                   tests     37      0      0      0        0

However, when the test suite is run via meson, i.e. with:

    meson setup build && meson test -C build

Meson always reports success, because it primarily looks at process
exit code.

To not make meson mask failures, this commit sets the exit code to one
if some suite (we have just one) or test fails. Additionally, it
prints error messages in the suite initialization function, to make
the failure more understandable.

Signed-off-by: Michal Sojka <[email protected]>

---
Changes in v2:
- Fixed typos in the commit message.
- Use tabs instead of spaces for indentation.
---
 utest/trace-utest.c   | 8 +++++++-
 utest/tracefs-utest.c | 8 ++++++--
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/utest/trace-utest.c b/utest/trace-utest.c
index 39485a1..b40a217 100644
--- a/utest/trace-utest.c
+++ b/utest/trace-utest.c
@@ -79,6 +79,12 @@ int main(int argc, char **argv)
 
 	CU_basic_set_mode(verbose);
 	CU_basic_run_tests();
+
+	int err = CU_get_error() != CUE_SUCCESS ||
+		CU_get_number_of_suites_failed() > 0 ||
+		CU_get_number_of_failures() > 0;
+
 	CU_cleanup_registry();
-	return 0;
+
+	return err ? 1 : 0;
 }
diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c
index cc7e689..4a412b2 100644
--- a/utest/tracefs-utest.c
+++ b/utest/tracefs-utest.c
@@ -3849,11 +3849,15 @@ static int test_suite_destroy(void)
 static int test_suite_init(void)
 {
 	test_tep = tracefs_local_events(NULL);
-	if (test_tep == NULL)
+	if (test_tep == NULL) {
+		perror("tracefs_local_events");
 		return 1;
+	}
 	test_instance = tracefs_instance_create(TEST_INSTANCE_NAME);
-	if (!test_instance)
+	if (!test_instance) {
+		perror("tracefs_instance_create");
 		return 1;
+	}
 
 	mapping_is_supported = tracefs_mapped_is_supported();
 	if (mapping_is_supported)
-- 
2.50.0