]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t3701: stop using `env` in force_color()
authorDenton Liu <liu.denton@gmail.com>
Tue, 7 Jul 2020 06:04:34 +0000 (02:04 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 7 Jul 2020 20:07:26 +0000 (13:07 -0700)
In a future patch, we plan on making the test_must_fail()-family of
functions accept only git commands. Even though force_color() wraps an
invocation of `env git`, test_must_fail() will not be able to figure
this out since it will assume that force_color() is just some random
function which is disallowed.

Instead of using `env` in force_color() (which does not support shell
functions), export the environment variables in a subshell. Write the
invocation as `force_color test_must_fail git ...` since shell functions
are now supported.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t3701-add-interactive.sh

index 49decbac711386b497b19f22d16324422c0609b5..fb73a847cb9dba41081a2e8d9d34cd4ea1950268 100755 (executable)
@@ -31,7 +31,16 @@ diff_cmp () {
 # indicates a dumb terminal, so we set that variable, too.
 
 force_color () {
-       env GIT_PAGER_IN_USE=true TERM=vt100 "$@"
+       # The first element of $@ may be a shell function, as a result POSIX
+       # does not guarantee that "one-shot assignment" will not persist after
+       # the function call. Thus, we prevent these variables from escaping
+       # this function's context with this subshell.
+       (
+               GIT_PAGER_IN_USE=true &&
+               TERM=vt100 &&
+               export GIT_PAGER_IN_USE TERM &&
+               "$@"
+       )
 }
 
 test_expect_success 'setup (initial)' '
@@ -604,7 +613,7 @@ test_expect_success 'detect bogus diffFilter output' '
        echo content >test &&
        test_config interactive.diffFilter "sed 1d" &&
        printf y >y &&
-       test_must_fail force_color git add -p <y
+       force_color test_must_fail git add -p <y
 '
 
 test_expect_success 'diff.algorithm is passed to `git diff-files`' '