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@xxxxxxxxx> --- 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html