diff options
author | Jakub Kicinski <kuba@kernel.org> | 2024-04-19 19:52:35 -0700 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-04-23 10:13:56 -0700 |
commit | 01b431641c33d488ecc6cd6d9e01f7f073bfa54f (patch) | |
tree | 7d0449e458e4c69b484d8dba9f689c639cb0b85e /tools | |
parent | a48a87c0866444343354f211d30b5acab54bb800 (diff) | |
download | linux-01b431641c33d488ecc6cd6d9e01f7f073bfa54f.tar.gz linux-01b431641c33d488ecc6cd6d9e01f7f073bfa54f.tar.bz2 linux-01b431641c33d488ecc6cd6d9e01f7f073bfa54f.zip |
selftests: net: support matching cases by name prefix
While writing tests with a lot more cases I got tired of having
to jump back and forth to add the name of the test to the ksft_run()
list. Most unittest frameworks do some name matching, e.g. assume
that functions with names starting with test_ are test cases.
Support similar flow in ksft_run(). Let the author list the desired
prefixes. globals() need to be passed explicitly, IDK how to work
around that.
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/20240420025237.3309296-6-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/testing/selftests/drivers/net/ping.py | 3 | ||||
-rw-r--r-- | tools/testing/selftests/net/lib/py/ksft.py | 13 |
2 files changed, 13 insertions, 3 deletions
diff --git a/tools/testing/selftests/drivers/net/ping.py b/tools/testing/selftests/drivers/net/ping.py index e75908d7c558..9f65a0764aab 100755 --- a/tools/testing/selftests/drivers/net/ping.py +++ b/tools/testing/selftests/drivers/net/ping.py @@ -18,8 +18,7 @@ def test_v6(cfg) -> None: def main() -> None: with NetDrvEpEnv(__file__) as cfg: - ksft_run([test_v4, test_v6], - args=(cfg, )) + ksft_run(globs=globals(), case_pfx={"test_"}, args=(cfg, )) ksft_exit() diff --git a/tools/testing/selftests/net/lib/py/ksft.py b/tools/testing/selftests/net/lib/py/ksft.py index e7f79f6185b0..f84e9fdd0032 100644 --- a/tools/testing/selftests/net/lib/py/ksft.py +++ b/tools/testing/selftests/net/lib/py/ksft.py @@ -99,7 +99,18 @@ def ktap_result(ok, cnt=1, case="", comment=""): print(res) -def ksft_run(cases, args=()): +def ksft_run(cases=None, globs=None, case_pfx=None, args=()): + cases = cases or [] + + if globs and case_pfx: + for key, value in globs.items(): + if not callable(value): + continue + for prefix in case_pfx: + if key.startswith(prefix): + cases.append(value) + break + totals = {"pass": 0, "fail": 0, "skip": 0, "xfail": 0} print("KTAP version 1") |