]> git.ipfire.org Git - thirdparty/nftables.git/commit
tests/shell: skip tests if nft does not support JSON mode
authorThomas Haller <thaller@redhat.com>
Fri, 8 Sep 2023 15:07:24 +0000 (17:07 +0200)
committerFlorian Westphal <fw@strlen.de>
Sat, 9 Sep 2023 14:54:43 +0000 (16:54 +0200)
commite0fba157382afebf011caa5ae658d44eb0588dcc
treee46a2160534bb48115404a9600ed31ec668b778f
parent5004259496fb2785a95dad3e6d2384c886fcec0a
tests/shell: skip tests if nft does not support JSON mode

We can build nft without JSON support, and some tests will fail without
it. Instead, they should be skipped. Also note, that the test accepts any
nft binary via the "NFT" environment variable. So it's not enough to
make the skipping dependent on build configuration, but on the currently
used $NFT variable.

Let "run-test.sh" detect and export a "NFT_TEST_HAVE_json=y|n" variable. This
is heavily inspired by Florian's feature probing patches.

Tests that require JSON can check that variable, and skip. Note that
they check in the form of [ "$NFT_TEST_HAVE_json" != n ], so the test is
only skipped, if we explicitly detect lack of support. That is, don't
check via [ "$NFT_TEST_HAVE_json" = y ].

Some of the tests still run parts of the tests that don't require JSON.
Only towards the end of such partial run, mark the test as skipped.

Some tests require JSON support throughout. For those, add  a mechanism
where tests can add a tag (in their first 10 lines):

  # NFT_TEST_REQUIRES(NFT_TEST_HAVE_json)

This will be checked by "test-wrapper.sh", which will skip the test.
The purpose of this is to make it low-effort to skip a test and to print
the reason in the text output as

    Test skipped due to NFT_TEST_HAVE_json=n (test has "NFT_TEST_REQUIRES(NFT_TEST_HAVE_json)" tag)

This is intentionally not shortened to NFT_TEST_REQUIRES(json), so that
we can grep for NFT_TEST_HAVE_json to find all relevant places.

Note that while NFT_TEST_HAVE_json is autodetected, the caller can also
force it by setting the environment variable. This allows to see what
would happen to such a test.

Signed-off-by: Thomas Haller <thaller@redhat.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
tests/shell/helpers/test-wrapper.sh
tests/shell/run-tests.sh
tests/shell/testcases/json/0001set_statements_0
tests/shell/testcases/json/0002table_map_0
tests/shell/testcases/json/0003json_schema_version_0
tests/shell/testcases/json/0004json_schema_version_1
tests/shell/testcases/json/0005secmark_objref_0
tests/shell/testcases/json/0006obj_comment_0
tests/shell/testcases/json/netdev
tests/shell/testcases/listing/0021ruleset_json_terse_0
tests/shell/testcases/transactions/0049huge_0