On Thu, Feb 4, 2021 at 9:31 AM Daniel Latypov <dlaty...@google.com> wrote: > > E.g. specifying this would run suites with "list" in their name. > kunit.filter_glob=list* > > Note: the executor prints out a TAP header that includes the number of > suites we intend to run. > So unless we want to report empty results for filtered-out suites, we > need to do the filtering here in the executor. > It's also probably better in the executor since we most likely don't > want any filtering to apply to tests built as modules. > > This code does add a CONFIG_GLOB=y dependency for CONFIG_KUNIT=y. > But the code seems light enough that it shouldn't be an issue. > > For now, we only filter on suite names so we don't have to create copies > of the suites themselves, just the array (of arrays) holding them. > > The name is rather generic since in the future, we could consider > extending it to a syntax like: > kunit.filter_glob=<suite_glob>.<test_glob> > E.g. to run all the del list tests > kunit.filter_glob=list-kunit-test.*del* > > But at the moment, it's far easier to manually comment out test cases in > test files as opposed to messing with sets of Kconfig entries to select > specific suites. > So even just doing this makes using kunit far less annoying. > > Signed-off-by: Daniel Latypov <dlaty...@google.com>
One minor issue below, otherwise: Reviewed-by: Brendan Higgins <brendanhigg...@google.com> > --- > lib/kunit/Kconfig | 1 + > lib/kunit/executor.c | 91 +++++++++++++++++++++++++++++++++++++++----- > 2 files changed, 83 insertions(+), 9 deletions(-) > > diff --git a/lib/kunit/Kconfig b/lib/kunit/Kconfig > index 00909e6a2443..0b5dfb001bac 100644 > --- a/lib/kunit/Kconfig > +++ b/lib/kunit/Kconfig > @@ -4,6 +4,7 @@ > > menuconfig KUNIT > tristate "KUnit - Enable support for unit tests" > + select GLOB if KUNIT=y > help > Enables support for kernel unit tests (KUnit), a lightweight unit > testing and mocking framework for the Linux kernel. These tests are > diff --git a/lib/kunit/executor.c b/lib/kunit/executor.c > index a95742a4ece7..996efb80dba6 100644 > --- a/lib/kunit/executor.c > +++ b/lib/kunit/executor.c > @@ -1,6 +1,8 @@ > // SPDX-License-Identifier: GPL-2.0 > > #include <kunit/test.h> > +#include <linux/glob.h> > +#include <linux/moduleparam.h> > > /* > * These symbols point to the .kunit_test_suites section and are defined in > @@ -11,14 +13,79 @@ extern struct kunit_suite * const * const > __kunit_suites_end[]; > > #if IS_BUILTIN(CONFIG_KUNIT) > > -static void kunit_print_tap_header(void) > +static char *filter_glob; > +module_param(filter_glob, charp, 0); You should probably also use MODULE_PARM_DESC().