Commit 95bd2a3
committed
cmd/runtimetest/main: Use TAP diagnostics for errors
This lets us print SHOULD violations even if they're non-fatal. It
also gets us back to consumable TAP output. I added a /foo entry to
defaultFS for testing, and before this commit:
$ ./runtimetest
TAP version 13
ok 1 - root filesystem
ok 2 - hostname
ok 3 - mounts
not ok 4 - capabilities
ok 5 - default symlinks
ok 6 - default devices
ok 7 - linux devices
not ok 8 - linux process
ok 9 - masked paths
ok 10 - oom score adj
ok 11 - read only paths
not ok 12 - rlimits
ok 13 - sysctls
ok 14 - uid mappings
ok 15 - gid mappings
1..15
3 errors occurred:
* Unexpected bounding capability chown set for process
* UID expected: 1, actual: 1000
* Wrong rlimit value:
$ echo $?
1
The TAP 13 spec doesn't cover script exit-code handling [1], but that
exit code confuses prove unless you set --ignore-exit:
$ prove ./runtimetest
./runtimetest .. 1/? 3 errors occurred:
* Unexpected bounding capability chown set for process
* UID expected: 1, actual: 1000
* Wrong rlimit value:
./runtimetest .. Dubious, test returned 1 (wstat 256, 0x100)
Failed 4/16 subtests
Test Summary Report
-------------------
./runtimetest (Wstat: 256 Tests: 16 Failed: 4)
Failed tests: 4, 6, 9, 13
Non-zero exit status: 1
Files=1, Tests=16, 0 wallclock secs ( 0.02 usr + 0.00 sys = 0.02 CPU)
Result: FAIL
Note the "Dubious, test returned 1". And with the diagnostics written
to stderr, there's no way to have prove catch that.
With this commit, we're back to TAP-compatible output and exit codes,
using TAP's diagnostics [2] to share the failure details.
$ ./runtimetest
TAP version 13
ok 1 - root filesystem
ok 2 - hostname
ok 3 - mounts
not ok 4 - capabilities
# Unexpected bounding capability chown set for process
ok 5 - default symlinks
ok 6 - default file system
# /foo SHOULD exist and expected type is tmpfs
# Refer to: https://github.com/opencontainers/runtime-spec/blob/v1.0.0/config-linux.md#default-filesystems
ok 7 - default devices
ok 8 - linux devices
not ok 9 - linux process
# UID expected: 1, actual: 1000
ok 10 - masked paths
ok 11 - oom score adj
ok 12 - read only paths
not ok 13 - rlimits
# Wrong rlimit value:
ok 14 - sysctls
ok 15 - uid mappings
ok 16 - gid mappings
1..16
$ echo $?
0
You can use prove without --ignore-edit to summarize:
$ prove ./runtimetest
./runtimetest .. Failed 3/16 subtests
Test Summary Report
-------------------
./runtimetest (Wstat: 0 Tests: 16 Failed: 3)
Failed tests: 4, 9, 13
Files=1, Tests=16, 0 wallclock secs ( 0.01 usr + 0.00 sys = 0.01 CPU)
Result: FAIL
And prove knows that the tests failed from TAP, with the script exit
code saying "we were able to run the tests" and not speaking to
pass/fail:
$ echo $?
1
If that's too compact, you can ask prove to show failures and
comments:
$ prove -fo ./runtimetest
./runtimetest .. 1/?
not ok 4 - capabilities
# Unexpected bounding capability chown set for process
# /foo SHOULD exist and expected type is tmpfs
# Refer to: https://github.com/opencontainers/runtime-spec/blob/v1.0.0/config-linux.md#default-filesystems
not ok 9 - linux process
# UID expected: 1, actual: 1000
not ok 13 - rlimits
# Wrong rlimit value:
./runtimetest .. Failed 3/16 subtests
Test Summary Report
-------------------
./runtimetest (Wstat: 0 Tests: 16 Failed: 3)
Failed tests: 4, 9, 13
Files=1, Tests=16, 0 wallclock secs ( 0.02 usr + 0.00 sys = 0.02 CPU)
Result: FAIL
You can also turn that SHOULD error into a failure by cranking up the
compliance level:
$ prove -fo ./runtimetest :: --compliance-level SHOULD
./runtimetest .. 1/?
not ok 4 - capabilities
# Unexpected bounding capability chown set for process
not ok 6 - default file system
# /foo SHOULD exist and expected type is tmpfs
# Refer to: https://github.com/opencontainers/runtime-spec/blob/v1.0.0/config-linux.md#default-filesystems
not ok 9 - linux process
# UID expected: 1, actual: 1000
not ok 13 - rlimits
# Wrong rlimit value:
./runtimetest .. Failed 4/16 subtests
Test Summary Report
-------------------
./runtimetest (Wstat: 0 Tests: 16 Failed: 4)
Failed tests: 4, 6, 9, 13
Files=1, Tests=16, 0 wallclock secs ( 0.02 usr + 0.00 sys = 0.02 CPU)
Result: FAIL
[1]: https://testanything.org/tap-version-13-specification.html#todo
[2]: https://testanything.org/tap-version-13-specification.html#diagnostics
Signed-off-by: W. Trevor King <wking@tremily.us>1 parent 8178fda commit 95bd2a3
1 file changed
+14
-21
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
18 | 17 | | |
19 | 18 | | |
20 | 19 | | |
| |||
706 | 705 | | |
707 | 706 | | |
708 | 707 | | |
709 | | - | |
710 | | - | |
711 | | - | |
712 | | - | |
713 | | - | |
714 | | - | |
715 | | - | |
716 | | - | |
717 | | - | |
718 | | - | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
719 | 711 | | |
720 | 712 | | |
721 | | - | |
722 | | - | |
723 | | - | |
724 | | - | |
725 | | - | |
726 | | - | |
727 | | - | |
728 | | - | |
729 | | - | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
730 | 722 | | |
| 723 | + | |
731 | 724 | | |
732 | 725 | | |
733 | 726 | | |
734 | 727 | | |
735 | | - | |
| 728 | + | |
736 | 729 | | |
737 | 730 | | |
738 | 731 | | |
| |||
0 commit comments