Skip to content

Commit 95cae9b

Browse files
asemjonovsnashif
authored andcommitted
zephyr: Fix verify run all check
In scenarios where test_main is overridden ztest_run_all may be invoked multiple times leading to the verify check to fail inadvertently. Signed-off-by: Al Semjonovs <[email protected]>
1 parent c6393e2 commit 95cae9b

File tree

4 files changed

+30
-17
lines changed

4 files changed

+30
-17
lines changed

subsys/testsuite/ztest/Kconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,12 @@ config ZTEST_RULE_1CPU
9898

9999
endmenu
100100

101+
config ZTEST_VERIFY_RUN_ALL
102+
bool "Validates all defined tests have ran"
103+
default y
104+
help
105+
This rule will fail the project if not all tests have been run.
106+
101107
config ZTEST_SHUFFLE
102108
bool "Shuffle the order of tests and suites"
103109
select TEST_RANDOM_GENERATOR if !ENTROPY_HAS_DRIVER

subsys/testsuite/ztest/src/ztest_defaults.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ const char *ztest_relative_filename(const char *file)
3030
void z_ztest_run_all(const void *state)
3131
{
3232
ztest_run_test_suites(state);
33-
ztest_verify_all_test_suites_ran();
3433
}
3534

3635
/**

subsys/testsuite/ztest/src/ztest_new.c

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -648,30 +648,39 @@ void ztest_verify_all_test_suites_ran(void)
648648
struct ztest_suite_node *suite;
649649
struct ztest_unit_test *test;
650650

651-
for (suite = _ztest_suite_node_list_start; suite < _ztest_suite_node_list_end; ++suite) {
652-
if (suite->stats->run_count < 1) {
653-
PRINT("ERROR: Test suite '%s' did not run.\n", suite->name);
654-
all_tests_run = false;
651+
if (IS_ENABLED(CONFIG_ZTEST_VERIFY_RUN_ALL)) {
652+
for (suite = _ztest_suite_node_list_start; suite < _ztest_suite_node_list_end;
653+
++suite) {
654+
if (suite->stats->run_count < 1) {
655+
PRINT("ERROR: Test suite '%s' did not run.\n", suite->name);
656+
all_tests_run = false;
657+
}
655658
}
656-
}
657659

658-
for (test = _ztest_unit_test_list_start; test < _ztest_unit_test_list_end; ++test) {
659-
suite = ztest_find_test_suite(test->test_suite_name);
660-
if (suite == NULL) {
661-
PRINT("ERROR: Test '%s' assigned to test suite '%s' which doesn't exist\n",
662-
test->name, test->test_suite_name);
663-
all_tests_run = false;
660+
for (test = _ztest_unit_test_list_start; test < _ztest_unit_test_list_end; ++test) {
661+
suite = ztest_find_test_suite(test->test_suite_name);
662+
if (suite == NULL) {
663+
PRINT("ERROR: Test '%s' assigned to test suite '%s' which doesn't "
664+
"exist\n",
665+
test->name, test->test_suite_name);
666+
all_tests_run = false;
667+
}
664668
}
665-
}
666669

667-
if (!all_tests_run) {
668-
test_status = 1;
670+
if (!all_tests_run) {
671+
test_status = 1;
672+
}
669673
}
670674
}
671675

672676
void ztest_run_all(const void *state) { ztest_api.run_all(state); }
673677

674-
void __weak test_main(void) { ztest_run_all(NULL); }
678+
void __weak test_main(void)
679+
{
680+
ztest_run_all(NULL);
681+
682+
ztest_verify_all_test_suites_ran();
683+
}
675684

676685
#ifndef KERNEL
677686
int main(void)

subsys/testsuite/ztest/src/ztest_posix.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ void z_ztest_run_all(const void *state)
132132
z_ztest_list_tests();
133133
} else {
134134
ztest_run_test_suites(state);
135-
ztest_verify_all_test_suites_ran();
136135
}
137136
}
138137

0 commit comments

Comments
 (0)