From d9de017d6c61bf1a372b586fa366773357ef32bf Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 8 Jan 2025 14:29:07 +1000 Subject: [PATCH] test: fix --filter-params handling The previous implementation skipped parameters that were filtered, so our test cases got called with parameters missing. Fix this by filtering any test case that has a negative fnmatch on any parameter. Part-of: --- test/litest.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/test/litest.c b/test/litest.c index ecda7386..2831e464 100644 --- a/test/litest.c +++ b/test/litest.c @@ -770,10 +770,9 @@ permutation_func(struct litest_parameters_permutation *permutation, void *userda struct litest_test_parameters *params = litest_test_parameters_new(); struct litest_parameters_permutation_value *pmv; - bool all_filtered = true; + bool filtered = false; list_for_each(pmv, &permutation->values, link) { const struct param_filter *f = data->param_filters; - bool filtered = false; while (!filtered && strlen(f->name)) { if (streq(pmv->name, f->name)) { char *s = multivalue_as_str(&pmv->value); @@ -783,18 +782,20 @@ permutation_func(struct litest_parameters_permutation *permutation, void *userda } f++; } - if (!filtered) { - struct litest_test_param *tp = zalloc(sizeof *tp); - snprintf(tp->name, sizeof(tp->name), "%s", pmv->name); - tp->value = multivalue_copy(&pmv->value); - list_append(¶ms->test_params, &tp->link); - all_filtered = false; - } + if (filtered) + break; + + struct litest_test_param *tp = zalloc(sizeof *tp); + snprintf(tp->name, sizeof(tp->name), "%s", pmv->name); + tp->value = multivalue_copy(&pmv->value); + list_append(¶ms->test_params, &tp->link); } - if (all_filtered) + if (filtered) { + litest_test_parameters_unref(params); return 0; + } struct test *t;