Merge branch 'jk/test-lint-forbid-when-finished-in-subshell' into maint
authorJunio C Hamano <gitster@pobox.com>
Fri, 11 Dec 2015 19:14:09 +0000 (11:14 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 11 Dec 2015 19:14:10 +0000 (11:14 -0800)
Because "test_when_finished" in our test framework queues the
clean-up tasks to be done in a shell variable, it should not be
used inside a subshell. Add a mechanism to allow 'bash' to catch
such uses, and fix the ones that were found.

* jk/test-lint-forbid-when-finished-in-subshell:
test-lib-functions: detect test_when_finished in subshell
t7800: don't use test_config in a subshell
test-lib-functions: support "test_config -C <dir> ..."
t5801: don't use test_when_finished in a subshell
t7610: don't use test_config in a subshell

1  2 
t/t7800-difftool.sh
diff --combined t/t7800-difftool.sh
index a771cf77f5b4f52aa14965a78f9dce2df6a65eec,48c6e2bc830e74ab8d242e49c08f38609b5ef585..ec8bc8c7656fd7f0fd03226b5491f5bc9d532dd7
@@@ -492,35 -492,16 +492,35 @@@ test_expect_success PERL 'difftool --no
  
  test_expect_success PERL 'difftool properly honors gitlink and core.worktree' '
        git submodule add ./. submod/ule &&
+       test_config -C submod/ule diff.tool checktrees &&
+       test_config -C submod/ule difftool.checktrees.cmd '\''
+               test -d "$LOCAL" && test -d "$REMOTE" && echo good
+               '\'' &&
        (
                cd submod/ule &&
-               test_config diff.tool checktrees &&
-               test_config difftool.checktrees.cmd '\''
-                       test -d "$LOCAL" && test -d "$REMOTE" && echo good
-               '\'' &&
                echo good >expect &&
                git difftool --tool=checktrees --dir-diff HEAD~ >actual &&
                test_cmp expect actual
        )
  '
  
 +test_expect_success PERL,SYMLINKS 'difftool --dir-diff symlinked directories' '
 +      git init dirlinks &&
 +      (
 +              cd dirlinks &&
 +              git config diff.tool checktrees &&
 +              git config difftool.checktrees.cmd "echo good" &&
 +              mkdir foo &&
 +              : >foo/bar &&
 +              git add foo/bar &&
 +              test_commit symlink-one &&
 +              ln -s foo link &&
 +              git add link &&
 +              test_commit symlink-two &&
 +              echo good >expect &&
 +              git difftool --tool=checktrees --dir-diff HEAD~ >actual &&
 +              test_cmp expect actual
 +      )
 +'
 +
  test_done