Code

Explicitly set X to avoid potential build breakage
[git.git] / t / t7407-submodule-foreach.sh
index e5be13c271c92ce7c51601ee1eaf966d849d8ae4..9b69fe2e1470e406b005e629a6f7759f8e564ddf 100755 (executable)
@@ -77,7 +77,7 @@ test_expect_success 'test basic "submodule foreach" usage' '
                git config foo.bar zar &&
                git submodule foreach "git config --file \"\$toplevel/.git/config\" foo.bar"
        ) &&
-       test_cmp expect actual
+       test_i18ncmp expect actual
 '
 
 test_expect_success 'setup nested submodules' '
@@ -118,19 +118,19 @@ test_expect_success 'use "submodule foreach" to checkout 2nd level submodule' '
        git clone super clone2 &&
        (
                cd clone2 &&
-               test ! -d sub1/.git &&
-               test ! -d sub2/.git &&
-               test ! -d sub3/.git &&
-               test ! -d nested1/.git &&
+               test_must_fail git rev-parse --resolve-git-dir sub1/.git &&
+               test_must_fail git rev-parse --resolve-git-dir sub2/.git &&
+               test_must_fail git rev-parse --resolve-git-dir sub3/.git &&
+               test_must_fail git rev-parse --resolve-git-dir nested1/.git &&
                git submodule update --init &&
-               test -d sub1/.git &&
-               test -d sub2/.git &&
-               test -d sub3/.git &&
-               test -d nested1/.git &&
-               test ! -d nested1/nested2/.git &&
+               git rev-parse --resolve-git-dir sub1/.git &&
+               git rev-parse --resolve-git-dir sub2/.git &&
+               git rev-parse --resolve-git-dir sub3/.git &&
+               git rev-parse --resolve-git-dir nested1/.git &&
+               test_must_fail git rev-parse --resolve-git-dir nested1/nested2/.git &&
                git submodule foreach "git submodule update --init" &&
-               test -d nested1/nested2/.git &&
-               test ! -d nested1/nested2/nested3/.git
+               git rev-parse --resolve-git-dir nested1/nested1/nested2/.git
+               test_must_fail git rev-parse --resolve-git-dir nested1/nested2/nested3/.git
        )
 '
 
@@ -138,8 +138,8 @@ test_expect_success 'use "foreach --recursive" to checkout all submodules' '
        (
                cd clone2 &&
                git submodule foreach --recursive "git submodule update --init" &&
-               test -d nested1/nested2/nested3/.git &&
-               test -d nested1/nested2/nested3/submodule/.git
+               git rev-parse --resolve-git-dir nested1/nested2/nested3/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/nested3/submodule/.git
        )
 '
 
@@ -158,7 +158,7 @@ test_expect_success 'test messages from "foreach --recursive"' '
                cd clone2 &&
                git submodule foreach --recursive "true" > ../actual
        ) &&
-       test_cmp expect actual
+       test_i18ncmp expect actual
 '
 
 cat > expect <<EOF
@@ -183,18 +183,18 @@ test_expect_success 'use "update --recursive" to checkout all submodules' '
        git clone super clone3 &&
        (
                cd clone3 &&
-               test ! -d sub1/.git &&
-               test ! -d sub2/.git &&
-               test ! -d sub3/.git &&
-               test ! -d nested1/.git &&
+               test_must_fail git rev-parse --resolve-git-dir sub1/.git &&
+               test_must_fail git rev-parse --resolve-git-dir sub2/.git &&
+               test_must_fail git rev-parse --resolve-git-dir sub3/.git &&
+               test_must_fail git rev-parse --resolve-git-dir nested1/.git &&
                git submodule update --init --recursive &&
-               test -d sub1/.git &&
-               test -d sub2/.git &&
-               test -d sub3/.git &&
-               test -d nested1/.git &&
-               test -d nested1/nested2/.git &&
-               test -d nested1/nested2/nested3/.git &&
-               test -d nested1/nested2/nested3/submodule/.git
+               git rev-parse --resolve-git-dir sub1/.git &&
+               git rev-parse --resolve-git-dir sub2/.git &&
+               git rev-parse --resolve-git-dir sub3/.git &&
+               git rev-parse --resolve-git-dir nested1/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/nested3/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/nested3/submodule/.git
        )
 '
 
@@ -247,14 +247,17 @@ test_expect_success 'ensure "status --cached --recursive" preserves the --cached
 
 test_expect_success 'use "git clone --recursive" to checkout all submodules' '
        git clone --recursive super clone4 &&
-       test -d clone4/.git &&
-       test -d clone4/sub1/.git &&
-       test -d clone4/sub2/.git &&
-       test -d clone4/sub3/.git &&
-       test -d clone4/nested1/.git &&
-       test -d clone4/nested1/nested2/.git &&
-       test -d clone4/nested1/nested2/nested3/.git &&
-       test -d clone4/nested1/nested2/nested3/submodule/.git
+       (
+               cd clone4 &&
+               git rev-parse --resolve-git-dir .git &&
+               git rev-parse --resolve-git-dir sub1/.git &&
+               git rev-parse --resolve-git-dir sub2/.git &&
+               git rev-parse --resolve-git-dir sub3/.git &&
+               git rev-parse --resolve-git-dir nested1/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/nested3/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/nested3/submodule/.git
+       )
 '
 
 test_expect_success 'test "update --recursive" with a flag with spaces' '
@@ -262,14 +265,14 @@ test_expect_success 'test "update --recursive" with a flag with spaces' '
        git clone super clone5 &&
        (
                cd clone5 &&
-               test ! -d nested1/.git &&
+               test_must_fail git rev-parse --resolve-git-dir d nested1/.git &&
                git submodule update --init --recursive --reference="$(dirname "$PWD")/common objects" &&
-               test -d nested1/.git &&
-               test -d nested1/nested2/.git &&
-               test -d nested1/nested2/nested3/.git &&
-               test -f nested1/.git/objects/info/alternates &&
-               test -f nested1/nested2/.git/objects/info/alternates &&
-               test -f nested1/nested2/nested3/.git/objects/info/alternates
+               git rev-parse --resolve-git-dir nested1/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/nested3/.git &&
+               test -f .git/modules/nested1/objects/info/alternates &&
+               test -f .git/modules/nested1/modules/nested2/objects/info/alternates &&
+               test -f .git/modules/nested1/modules/nested2/modules/nested3/objects/info/alternates
        )
 '
 
@@ -277,19 +280,37 @@ test_expect_success 'use "update --recursive nested1" to checkout all submodules
        git clone super clone6 &&
        (
                cd clone6 &&
-               test ! -d sub1/.git &&
-               test ! -d sub2/.git &&
-               test ! -d sub3/.git &&
-               test ! -d nested1/.git &&
+               test_must_fail git rev-parse --resolve-git-dir sub1/.git &&
+               test_must_fail git rev-parse --resolve-git-dir sub2/.git &&
+               test_must_fail git rev-parse --resolve-git-dir sub3/.git &&
+               test_must_fail git rev-parse --resolve-git-dir nested1/.git &&
                git submodule update --init --recursive -- nested1 &&
-               test ! -d sub1/.git &&
-               test ! -d sub2/.git &&
-               test ! -d sub3/.git &&
-               test -d nested1/.git &&
-               test -d nested1/nested2/.git &&
-               test -d nested1/nested2/nested3/.git &&
-               test -d nested1/nested2/nested3/submodule/.git
+               test_must_fail git rev-parse --resolve-git-dir sub1/.git &&
+               test_must_fail git rev-parse --resolve-git-dir sub2/.git &&
+               test_must_fail git rev-parse --resolve-git-dir sub3/.git &&
+               git rev-parse --resolve-git-dir nested1/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/nested3/.git &&
+               git rev-parse --resolve-git-dir nested1/nested2/nested3/submodule/.git
        )
 '
 
+test_expect_success 'command passed to foreach retains notion of stdin' '
+       (
+               cd super &&
+               git submodule foreach echo success >../expected &&
+               yes | git submodule foreach "read y && test \"x\$y\" = xy && echo success" >../actual
+       ) &&
+       test_cmp expected actual
+'
+
+test_expect_success 'command passed to foreach --recursive retains notion of stdin' '
+       (
+               cd clone2 &&
+               git submodule foreach --recursive echo success >../expected &&
+               yes | git submodule foreach --recursive "read y && test \"x\$y\" = xy && echo success" >../actual
+       ) &&
+       test_cmp expected actual
+'
+
 test_done