builtin/grep: add grep.fallbackToNoIndex config
[gitweb.git] / t / t7403-submodule-sync.sh
index 38f6cc4bf076fd966ea41e2d42668ee57bd17809..79bc135bf69ea5813f0a372db6bbefa0f9a92753 100755 (executable)
@@ -61,6 +61,19 @@ test_expect_success 'change submodule' '
        )
 '
 
+reset_submodule_urls () {
+       local root
+       root=$(pwd) &&
+       (
+               cd super-clone/submodule &&
+               git config remote.origin.url "$root/submodule"
+       ) &&
+       (
+               cd super-clone/submodule/sub-submodule &&
+               git config remote.origin.url "$root/submodule"
+       )
+}
+
 test_expect_success 'change submodule url' '
        (
                cd super &&
@@ -132,6 +145,65 @@ test_expect_success '"git submodule sync --recursive" should update all submodul
        )
 '
 
+test_expect_success 'reset submodule URLs' '
+       reset_submodule_urls super-clone
+'
+
+test_expect_success '"git submodule sync" should update submodule URLs - subdirectory' '
+       (
+               cd super-clone &&
+               git pull --no-recurse-submodules &&
+               mkdir -p sub &&
+               cd sub &&
+               git submodule sync >../../output
+       ) &&
+       grep "\\.\\./submodule" output &&
+       test -d "$(
+               cd super-clone/submodule &&
+               git config remote.origin.url
+       )" &&
+       test ! -d "$(
+               cd super-clone/submodule/sub-submodule &&
+               git config remote.origin.url
+       )" &&
+       (
+               cd super-clone/submodule &&
+               git checkout master &&
+               git pull
+       ) &&
+       (
+               cd super-clone &&
+               test -d "$(git config submodule.submodule.url)"
+       )
+'
+
+test_expect_success '"git submodule sync --recursive" should update all submodule URLs - subdirectory' '
+       (
+               cd super-clone &&
+               (
+                       cd submodule &&
+                       git pull --no-recurse-submodules
+               ) &&
+               mkdir -p sub &&
+               cd sub &&
+               git submodule sync --recursive >../../output
+       ) &&
+       grep "\\.\\./submodule/sub-submodule" output &&
+       test -d "$(
+               cd super-clone/submodule &&
+               git config remote.origin.url
+       )" &&
+       test -d "$(
+               cd super-clone/submodule/sub-submodule &&
+               git config remote.origin.url
+       )" &&
+       (
+               cd super-clone/submodule/sub-submodule &&
+               git checkout master &&
+               git pull
+       )
+'
+
 test_expect_success '"git submodule sync" should update known submodule URLs' '
        (
                cd empty-clone &&
@@ -174,7 +246,7 @@ test_expect_success '"git submodule sync" handles origin URL of the form foo/bar
                        cd submodule &&
                        #actual foo/submodule
                        test "$(git config remote.origin.url)" = "../foo/submodule"
-               )
+               ) &&
                (
                        cd submodule/sub-submodule &&
                        test "$(git config remote.origin.url)" != "../../foo/submodule"
@@ -191,7 +263,7 @@ test_expect_success '"git submodule sync --recursive" propagates changes in orig
                        cd submodule &&
                        #actual foo/submodule
                        test "$(git config remote.origin.url)" = "../foo/submodule"
-               )
+               ) &&
                (
                        cd submodule/sub-submodule &&
                        test "$(git config remote.origin.url)" = "../../foo/submodule"