diff --git a/subsys/testsuite/Kconfig b/subsys/testsuite/Kconfig index 6fb7d695fc283..66d05c85b3fe8 100644 --- a/subsys/testsuite/Kconfig +++ b/subsys/testsuite/Kconfig @@ -95,9 +95,18 @@ config COVERAGE_DUMP endchoice +config HAVE_COVERAGE_DUMP_PATH_EXCLUDE + bool + default y + depends on COVERAGE_DUMP_PATH_EXCLUDE != "" + help + Helper symbol that is true when COVERAGE_DUMP_PATH_EXCLUDE is a + non-empty string + config COVERAGE_DUMP_PATH_EXCLUDE string "Exclude files matching this pattern from the coverage data" default "" + depends on !MINIMAL_LIBC help Filenames are matched against the pattern using the POSIX fnmatch function. Filenames are based on their path in the build folder, not the diff --git a/subsys/testsuite/coverage/coverage.c b/subsys/testsuite/coverage/coverage.c index 832606a922410..cbf0dcd1343c5 100644 --- a/subsys/testsuite/coverage/coverage.c +++ b/subsys/testsuite/coverage/coverage.c @@ -9,7 +9,11 @@ #include #include #include + +#ifdef CONFIG_HAVE_COVERAGE_DUMP_PATH_EXCLUDE #include +#endif /* CONFIG_HAVE_COVERAGE_DUMP_PATH_EXCLUDE */ + #include "coverage.h" K_HEAP_DEFINE(gcov_heap, CONFIG_COVERAGE_GCOV_HEAP_SIZE); @@ -316,11 +320,13 @@ void gcov_coverage_dump(void) } printk("\nGCOV_COVERAGE_DUMP_START"); while (gcov_list) { +#ifdef CONFIG_HAVE_COVERAGE_DUMP_PATH_EXCLUDE if ((strlen(CONFIG_COVERAGE_DUMP_PATH_EXCLUDE) > 0) && (fnmatch(CONFIG_COVERAGE_DUMP_PATH_EXCLUDE, gcov_list->filename, 0) == 0)) { /* Don't print a note here, it would be interpreted as dump data */ goto file_dump_end; } +#endif /* CONFIG_HAVE_COVERAGE_DUMP_PATH_EXCLUDE */ dump_on_console_start(gcov_list->filename); size = gcov_calculate_buff_size(gcov_list); @@ -340,7 +346,7 @@ void gcov_coverage_dump(void) dump_on_console_data(buffer, size); k_heap_free(&gcov_heap, buffer); -file_dump_end: +goto file_dump_end; file_dump_end: gcov_list = gcov_list->next; if (gcov_list_first == gcov_list) { goto coverage_dump_end;