Commit 0d3ce2ac by Edward Thomson

offer exact name matching with a `$` suffix

When using `-s` to specify a particular test, it will do a prefix match.
Thus, `-sapply::both::rename_a_to_b_to_c` will match both a test named
`test_apply_both__rename_a_to_b_to_c` and a test that begins with that
name, like `test_apply_both__rename_a_to_b_to_c_exact`.

Permit a trailing `$` to `-s` syntax.  This allows a user to specify
`-sapply::both::rename_a_to_b_to_c$` to match _only_ the
`test_apply_both__rename_a_to_b_to_c` function.

We already filter to ensure that the given prefix matches the current
test name.  Also ensure that the length of the test name matches the
length of the filter, sans trailing `$`.
parent d4b953f8
...@@ -293,6 +293,7 @@ clar_run_suite(const struct clar_suite *suite, const char *filter) ...@@ -293,6 +293,7 @@ clar_run_suite(const struct clar_suite *suite, const char *filter)
const struct clar_func *test = suite->tests; const struct clar_func *test = suite->tests;
size_t i, matchlen; size_t i, matchlen;
struct clar_report *report; struct clar_report *report;
int exact = 0;
if (!suite->enabled) if (!suite->enabled)
return; return;
...@@ -317,6 +318,11 @@ clar_run_suite(const struct clar_suite *suite, const char *filter) ...@@ -317,6 +318,11 @@ clar_run_suite(const struct clar_suite *suite, const char *filter)
while (*filter == ':') while (*filter == ':')
++filter; ++filter;
matchlen = strlen(filter); matchlen = strlen(filter);
if (matchlen && filter[matchlen - 1] == '$') {
exact = 1;
matchlen--;
}
} }
} }
...@@ -324,6 +330,9 @@ clar_run_suite(const struct clar_suite *suite, const char *filter) ...@@ -324,6 +330,9 @@ clar_run_suite(const struct clar_suite *suite, const char *filter)
if (filter && strncmp(test[i].name, filter, matchlen)) if (filter && strncmp(test[i].name, filter, matchlen))
continue; continue;
if (exact && strlen(test[i].name) != matchlen)
continue;
_clar.active_test = test[i].name; _clar.active_test = test[i].name;
report = calloc(1, sizeof(struct clar_report)); report = calloc(1, sizeof(struct clar_report));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment