Nguyễn Thái Ngọc Duy  <[email protected]> writes:

> +test_trace() {
> +     local expected="$1"

Style: "test_trace () {" is how we start a shell function.
Portability: we do not use "local".

> +     shift
> +     GIT_TRACE=1 test-run-command "$@" run-command true 2>&1 >/dev/null | \
> +             sed 's/.* run_command: //' >actual &&
> +     echo "$expected true" >expected &&
> +     test_cmp expected actual

Consistency: everybody else in the test script contrasts "actual" vs
"expect" (they happen to be of the same length ;-); don't say
expectED just to be different.

> +}
> +
> +test_expect_success 'GIT_TRACE with environment variables' '
> +     test_trace "abc=1 def=2" env abc=1 env def=2 &&
> +     test_trace "abc=2" env abc env abc=1 env abc=2 &&
> +     test_trace "abc=2" env abc env abc=2 &&
> +     abc=1 test_trace "def=1" env abc=1 env def=1 &&

Portability: "VAR=VAL shell_function args..." does not work
everywhere, unlike "VAR=VAL command args..." that exports the set of
environment variables for just a single shot invocation of the
command.

Running this script with dash fails, even though bash does behave as
you expect.

> +     abc=1 test_trace "def=1" env abc env abc=1 env def=1 &&
> +     test_trace "def=1" env non-exist env def=1 &&
> +     test_trace "abc=2" env abc=1 env abc env abc=2 &&
> +     abc=1 def=2 test_trace "unset abc def;" env abc env def &&
> +     abc=1 def=2 test_trace "unset def; abc=3" env abc env def env abc=3 &&
> +     abc=1 test_trace "unset abc;" env abc=2 env abc
> +'

Taking them together, here is what I'll be queuing on top to make
today's push-out to pass the tests.

Thanks.

diff --git a/t/t0061-run-command.sh b/t/t0061-run-command.sh
index e6208316c3..24c92b6cd7 100755
--- a/t/t0061-run-command.sh
+++ b/t/t0061-run-command.sh
@@ -141,26 +141,41 @@ test_expect_success 'run_command outputs ' '
        test_cmp expect actual
 '
 
-test_trace() {
-       local expected="$1"
+test_trace () {
+       expect="$1"
        shift
        GIT_TRACE=1 test-run-command "$@" run-command true 2>&1 >/dev/null | \
                sed 's/.* run_command: //' >actual &&
-       echo "$expected true" >expected &&
-       test_cmp expected actual
+       echo "$expect true" >expect &&
+       test_cmp expect actual
 }
 
 test_expect_success 'GIT_TRACE with environment variables' '
        test_trace "abc=1 def=2" env abc=1 env def=2 &&
        test_trace "abc=2" env abc env abc=1 env abc=2 &&
        test_trace "abc=2" env abc env abc=2 &&
-       abc=1 test_trace "def=1" env abc=1 env def=1 &&
-       abc=1 test_trace "def=1" env abc env abc=1 env def=1 &&
+       (
+               abc=1 && export abc &&
+               test_trace "def=1" env abc=1 env def=1
+       ) &&
+       (
+               abc=1 && export abc &&
+               test_trace "def=1" env abc env abc=1 env def=1
+       ) &&
        test_trace "def=1" env non-exist env def=1 &&
        test_trace "abc=2" env abc=1 env abc env abc=2 &&
-       abc=1 def=2 test_trace "unset abc def;" env abc env def &&
-       abc=1 def=2 test_trace "unset def; abc=3" env abc env def env abc=3 &&
-       abc=1 test_trace "unset abc;" env abc=2 env abc
+       (
+               abc=1 def=2 && export abc def &&
+               test_trace "unset abc def;" env abc env def
+       ) &&
+       (
+               abc=1 def=2 && export abc def &&
+               test_trace "unset def; abc=3" env abc env def env abc=3
+       ) &&
+       (
+               abc=1 && export abc &&
+               test_trace "unset abc;" env abc=2 env abc
+       )
 '
 
 test_done
-- 
2.16.0-rc2-179-g03f5267cd7

Reply via email to