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
@@@ -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