Skip to content

Commit

Permalink
t7502-commit.sh: test_must_fail doesn't work with inline environment …
Browse files Browse the repository at this point in the history
…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>
  • Loading branch information
drafnel authored and gitster committed Jun 19, 2008
1 parent 20827d9 commit e200783
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion t/t7502-commit.sh
Expand Up @@ -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"
'

Expand Down

0 comments on commit e200783

Please sign in to comment.