summaryrefslogtreecommitdiff
path: root/t/t7502-commit.sh
diff options
context:
space:
mode:
authorBrandon Casey <casey@nrlssc.navy.mil>2008-06-19 17:32:02 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-06-19 23:07:06 (GMT)
commite2007832552ccea9befed9003580c494f09e666e (patch)
treeec42e7cad6e4ba8f351628c737533fb3be633cee /t/t7502-commit.sh
parent20827d99c5ee079d92831474a0b6e66b79757dbd (diff)
downloadgit-e2007832552ccea9befed9003580c494f09e666e.zip
git-e2007832552ccea9befed9003580c494f09e666e.tar.gz
git-e2007832552ccea9befed9003580c494f09e666e.tar.bz2
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/t7502-commit.sh')
-rwxr-xr-xt/t7502-commit.sh6
1 files changed, 5 insertions, 1 deletions
diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh
index ed871a6..c25eff9 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"
'