If we failed because: - target dir doesn't exist - failed to copy from stdout - failed to rename $3 We would correctly return error 209, but the target would still be marked as having been built, so redo-ifchange would not try to build it next time, beause we forgot to call sf.set_failed() in those cases. minimal/do worked correctly. Added a test to catch this in the future.
22 lines
342 B
Text
22 lines
342 B
Text
rm -f x/shouldfail
|
|
|
|
log=$PWD/$1.log
|
|
rm -f "$log"
|
|
|
|
expect_fail() {
|
|
local rv=$1
|
|
shift
|
|
if ("$@") >>$log 2>&1; then
|
|
cat "$log" >&2
|
|
echo "unexpected success:" "$@" >&2
|
|
return $rv
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
cd inner
|
|
expect_fail 11 redo ../x/shouldfail # should fail
|
|
expect_fail 12 redo-ifchange ../x/shouldfail # should fail again
|
|
|
|
exit 0
|