1
0
Fork 0
mirror of https://github.com/vbatts/go-mtree.git synced 2025-09-13 22:03:19 +00:00
go-mtree/test/cli
Aleksa Sarai 945eeeda2d
tests: cli: properly check for exit status codes in error cases
POSIX explicitly requires "set -e" to NOT treat "! cmd" as an error even
if fails[1]:

> The -e setting shall be ignored when executing the compound list
> following the while, until, if, or elif reserved word, *a pipeline
> beginning with the ! reserved word*, or any command of an AND-OR list
> other than the last. *[emphasis added]*

And bash has similar documentation on this behaviour[2].

This means that our tests were completely ineffective at detecting error
codes from gomtree, and as a result we did not detect the regression in
commit 83c9fdb78b ("refactor: prefactor for adding new subcommands").

The simplest solution (as done in this patch) is to just wrap all of the
failing examples in a subshell, which causes the shell to no longer
consider them exempt from "set -e". A more complete solution would be to
either switch to something like bats entirely or at least use something
like their "run" helper function to test for exit status codes
correctly.

[1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#set
[2]: https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html

Fixes: 5d7f6c36e0 ("walk: directory is expected to be walked. A file is not.")
Fixes: 2d841d54bf ("test: testing the double -f comparison")
Fixes: f6c295f2e9 ("test: cli: add unicode verification test")
Fixes: 071977cef6 ("test: cli: add xattr tests")
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
2025-09-08 23:53:21 +10:00
..
0001.sh *: rework the test tools, so no dep is ignored 2022-04-03 23:15:40 -04:00
0001a.sh *: begin incorporating the "validate" subcommand 2023-10-24 10:25:18 -04:00
0002.sh *: rework the test tools, so no dep is ignored 2022-04-03 23:15:40 -04:00
0003.sh tests: cli: properly check for exit status codes in error cases 2025-09-08 23:53:21 +10:00
0004.sh *: rework the test tools, so no dep is ignored 2022-04-03 23:15:40 -04:00
0005.sh *: rework the test tools, so no dep is ignored 2022-04-03 23:15:40 -04:00
0006.sh *: rework the test tools, so no dep is ignored 2022-04-03 23:15:40 -04:00
0007.sh *: rework the test tools, so no dep is ignored 2022-04-03 23:15:40 -04:00
0008.sh *: rework the test tools, so no dep is ignored 2022-04-03 23:15:40 -04:00
0009.sh tests: cli: properly check for exit status codes in error cases 2025-09-08 23:53:21 +10:00
0010.sh tests: cli: properly check for exit status codes in error cases 2025-09-08 23:53:21 +10:00
0011.sh tests: cli: properly check for exit status codes in error cases 2025-09-08 23:53:21 +10:00