[GUILT v4 09/33] Test suite: properly check the exit status of commands.
- From
Per Cederqvist <cederp@opera.com>
- Date
- May 18, 2014, 21:59 UTC
- Message-ID
- <1400450409-30998-10-git-send-email-cederp@opera.com>
- In-Reply-To
- <1400450409-30998-1-git-send-email-cederp@opera.com>
The "cmd" and "shouldfail" functions checked the exit status of the replace_path function instead of the actual command that was running. (The $? construct checks the exit status of the last command in a pipeline, not the first command.)
Print an explicit error message if a command that should fail actually succeeds.
Updated t-032.sh, which used "shouldfail" instead of "cmd" in one place. (The comment in the script makes it clear that the command is expected to succeed.)
Signed-off-by: Per Cederqvist <cederp@opera.com> --- regression/scaffold | 23 ++++++++++++++++------- regression/t-032.sh | 2 +- 2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/regression/scaffold b/regression/scaffold index 5c8b73e..2e04c83 100644 --- a/regression/scaffold +++ b/regression/scaffold @@ -51,19 +51,28 @@ function filter_dd function cmd { echo "% $@" - "$@" 2>&1 | replace_path && return 0 - return 1 + if ! ( + exec 3>&1 + rv=`(("$@" 2>&1; echo $? >&4) | replace_path >&3 ) 4>&1` + exit $rv + ) ; then + echo "% FAIL: The above command should succeed but failed." + exit 1 + fi } # usage: shouldfail <cmd>.. function shouldfail { echo "% $@" - ( - "$@" 2>&1 || return 0 - return 1 - ) | replace_path - return $? + if ( + exec 3>&1 + rv=`(("$@" 2>&1; echo $? >&4) | replace_path >&3 ) 4>&1` + exit $rv + ) ; then + echo "% FAIL: The above command should fail but succeeded." + exit 1 + fi } # usage: list_files diff --git a/regression/t-032.sh b/regression/t-032.sh index b1d5f19..bba401e 100755 --- a/regression/t-032.sh +++ b/regression/t-032.sh @@ -28,7 +28,7 @@ shouldfail guilt import -P foo3 foo cmd guilt import -P foo2 foo # ok -shouldfail guilt import foo +cmd guilt import foo # duplicate patch name (implicit) shouldfail guilt import foo
-- 1.8.3.1