diff options
author | Anderson Toshiyuki Sasaki <ansasaki@redhat.com> | 2019-03-15 13:36:52 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2019-03-28 13:32:02 +0100 |
commit | 262e7d00d0bfea6315f854818a561d9e45a34673 (patch) | |
tree | e755f7b882d420397a1e298d4acb21e41a1ee0a0 /src/cmocka.c | |
parent | 4c5639246c1cce6e695eba66cfd9d0ff92af6a91 (diff) | |
download | cmocka-262e7d00d0bfea6315f854818a561d9e45a34673.tar.gz cmocka-262e7d00d0bfea6315f854818a561d9e45a34673.tar.xz cmocka-262e7d00d0bfea6315f854818a561d9e45a34673.zip |
cmocka: Add cmocka_set_skip_filter() to skip tests
The introduced cmocka_set_skip_filter() allows setting a filter for
tests to be skipped. It supports the same wildcards allowed for
cmocka_set_test_filter() (i.e. '*' or '?').
Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/cmocka.c')
-rw-r--r-- | src/cmocka.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/cmocka.c b/src/cmocka.c index 6bfc831..6233155 100644 --- a/src/cmocka.c +++ b/src/cmocka.c @@ -313,6 +313,8 @@ static enum cm_message_output global_msg_output = CM_OUTPUT_STDOUT; static const char *global_test_filter_pattern; +static const char *global_skip_filter_pattern; + #ifndef _WIN32 /* Signals caught by exception_handler(). */ static const int exception_signals[] = { @@ -2693,6 +2695,11 @@ void cmocka_set_test_filter(const char *pattern) global_test_filter_pattern = pattern; } +void cmocka_set_skip_filter(const char *pattern) +{ + global_skip_filter_pattern = pattern; +} + /**************************************************************************** * TIME CALCULATIONS ****************************************************************************/ @@ -2979,10 +2986,18 @@ int _cmocka_run_group_tests(const char *group_name, || tests[i].setup_func != NULL || tests[i].teardown_func != NULL)) { if (global_test_filter_pattern != NULL) { - int ok; + int match; + + match = c_strmatch(tests[i].name, global_test_filter_pattern); + if (!match) { + continue; + } + } + if (global_skip_filter_pattern != NULL) { + int match; - ok = c_strmatch(tests[i].name, global_test_filter_pattern); - if (!ok) { + match = c_strmatch(tests[i].name, global_skip_filter_pattern); + if (match) { continue; } } |