* tests/ls/stat-free-symlinks.sh: s/|| fail/|| fail=1/.
* tests/misc/tee.sh: Likewise.
* tests/touch/relative.sh: Likewise.
* cfg.mk (sc_prohibit_or_fail): A new syntax-check to avoid this.
in_vc_files='^tests/' \
$(_sc_search_regexp)
+# Ensure that tests don't use `cmd ... || fail` as that's a noop.
+sc_prohibit_or_fail:
+ @prohibit='\|\| fail$$' \
+ exclude=':#' \
+ halt='|| fail detected. Please use: || fail=1' \
+ in_vc_files='^tests/' \
+ $(_sc_search_regexp)
+
# Ensure that env vars are not passed through returns_ as
# that was seen to fail on FreeBSD /bin/sh at least
sc_prohibit_env_returns:
# symlink and an executable file properly.
LS_COLORS='or=0:mi=0:ex=01;32:ln=01;35' \
- strace -qe stat ls -F --color=always x link-to-x > out.tmp 2> err || fail
+ strace -qe stat ls -F --color=always x link-to-x > out.tmp 2> err || fail=1
# Elide info messages strace can send to stdout of the form:
# [ Process PID=1234 runs in 32 bit mode. ]
sed '/Process PID=/d' out.tmp > out
tee - <sample >out 2>err || fail=1
compare sample ./- || fail=1
compare sample out || fail=1
-compare /dev/null err || fail
+compare /dev/null err || fail=1
# Ensure tee exits early if no more writable outputs
if test -w /dev/full && test -c /dev/full; then
# Set times back by 5 days.
touch --ref f --date='-5 days' f || fail=1
-TZ=UTC0 ls -og --time-style=+%Y-%m-%d f > out.1 || fail
+TZ=UTC0 ls -og --time-style=+%Y-%m-%d f > out.1 || fail=1
sed 's/ f$//;s/.* //' out.1 > out
cat <<\EOF > exp || framework_failure_