When the arguments to test_must_fail() begin with a variable assignment, test_must_fail() attempts to execute the variable assignment as a command. This fails, and so test_must_fail returns with a successful status value without running the command it was intended to test. For example, the following script: #!/bin/sh test_must_fail () { "$@" test $? -gt 0 -a $? -le 129 } foo='wo adrian' test_must_fail foo='yo adrian' sh -c 'echo foo: $foo' always exits zero and prints the message: test.sh: line 3: foo=yo adrian: command not found Test 16 calls test_must_fail in such a way and therefore has not been testing whether git 'do[es] not fire editor in the presence of conflicts'. Fix this by reverting to the traditional negation operator '!' and accept the caveat that segfault will not be detected. Signed-off-by: Brandon Casey <casey@xxxxxxxxxxxxxxx> --- Unless you have a better work around... -brandon t/t7502-commit.sh | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh index ed871a6..e3469e0 100755 --- a/t/t7502-commit.sh +++ b/t/t7502-commit.sh @@ -212,7 +212,9 @@ test_expect_success 'do not fire editor in the presence of conflicts' ' # Must fail due to conflict test_must_fail git cherry-pick -n master && echo "editor not started" >.git/result && - test_must_fail GIT_EDITOR="$(pwd)/.git/FAKE_EDITOR" git commit && + # We intentionally do not use test_must_fail on the next line since the + # mechanism does not work when setting environment variables inline + ! GIT_EDITOR="$(pwd)/.git/FAKE_EDITOR" git commit && test "$(cat .git/result)" = "editor not started" ' -- 1.5.5.3 -- 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