diff options
author | Brandon Casey <casey@nrlssc.navy.mil> | 2008-06-19 12:32:02 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-06-19 16:07:06 -0700 |
commit | e2007832552ccea9befed9003580c494f09e666e (patch) | |
tree | ec42e7cad6e4ba8f351628c737533fb3be633cee /t | |
parent | 20827d99c5ee079d92831474a0b6e66b79757dbd (diff) | |
download | git-e2007832552ccea9befed9003580c494f09e666e.tar.gz git-e2007832552ccea9befed9003580c494f09e666e.tar.xz |
t7502-commit.sh: test_must_fail doesn't work with inline environment variables
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'.
A workaround is to set and export the variable in a normal way, not
using one-shot notation. Because this would affect the remainder of
the process, the test is done inside a subshell.
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-x | t/t7502-commit.sh | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh index ed871a6b4..c25eff9e4 100755 --- a/t/t7502-commit.sh +++ b/t/t7502-commit.sh @@ -212,7 +212,11 @@ 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 && + ( + GIT_EDITOR="$(pwd)/.git/FAKE_EDITOR" && + export GIT_EDITOR && + test_must_fail git commit + ) && test "$(cat .git/result)" = "editor not started" ' |