aboutsummaryrefslogtreecommitdiff
path: root/src/cmocka.c
diff options
context:
space:
mode:
authorAnderson Toshiyuki Sasaki <ansasaki@redhat.com>2019-03-15 13:36:52 +0100
committerAndreas Schneider <asn@cryptomilk.org>2019-03-28 13:32:02 +0100
commit262e7d00d0bfea6315f854818a561d9e45a34673 (patch)
treee755f7b882d420397a1e298d4acb21e41a1ee0a0 /src/cmocka.c
parent4c5639246c1cce6e695eba66cfd9d0ff92af6a91 (diff)
downloadcmocka-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.c21
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;
}
}