On 7/31/24 9:57 PM, Shuah Khan wrote:
On 7/31/24 07:39, Muhammad Usama Anjum wrote:
Don't print that 88 sub-tests are going to be executed, but then skip. This is against TAP compliance. Instead check pre-requisites first before printing total number of tests.
Does TAP clearly mention this?
Yes from https://testanything.org/tap-version-13-specification.html
Skipping everything This listing shows that the entire listing is a skip. No tests were run.
TAP version 13 1..0 # skip because English-to-French translator isn't installed
We can see above that we need to print 1..0 and skip without printing the total number of tests to be executed as they are going to be skipped.
Old non-tap compliant output: TAP version 13 1..88 ok 2 # SKIP all tests require euid == 0 # Planned tests != run tests (88 != 1) # Totals: pass:0 fail:0 xfail:0 xpass:0 skip:1 error:0
New and correct output: TAP version 13 1..0 # SKIP all tests require euid == 0
The problem is that this new output doesn't show how many tests are in this test suite that could be run.
I am not use if this is better for communicating coverage information even if meets the TAP compliance.
I think the number of tests represents the number of planned tests. If we don't plan to run X number of tests, we shouldn't print it.
Signed-off-by: Muhammad Usama Anjum usama.anjum@collabora.com
Changes since v1:
- Remove simplifying if condition lines
- Update the patch message
tools/testing/selftests/openat2/resolve_test.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/openat2/resolve_test.c b/tools/testing/selftests/openat2/resolve_test.c index bbafad440893c..85a4c64ee950d 100644 --- a/tools/testing/selftests/openat2/resolve_test.c +++ b/tools/testing/selftests/openat2/resolve_test.c @@ -508,12 +508,13 @@ void test_openat2_opath_tests(void) int main(int argc, char **argv) { ksft_print_header(); - ksft_set_plan(NUM_TESTS); /* NOTE: We should be checking for CAP_SYS_ADMIN here... */ if (geteuid() != 0) ksft_exit_skip("all tests require euid == 0\n"); + ksft_set_plan(NUM_TESTS);
test_openat2_opath_tests(); if (ksft_get_fail_cnt() + ksft_get_error_cnt() > 0)
thanks, -- Shuah