war on "sleep" in tests
[gitweb.git] / t / t7406-submodule-update.sh
index 3442c05d2a535dcd4ae7a6784db7ed268695191c..1382a8e58a14c8fcc92889aad492d5883fd64f2b 100755 (executable)
@@ -6,7 +6,7 @@
 test_description='Test updating submodules
 
 This test verifies that "git submodule update" detaches the HEAD of the
-submodule and "git submodule update --rebase" does not detach the HEAD.
+submodule and "git submodule update --rebase/--merge" does not detach the HEAD.
 '
 
 . ./test-lib.sh
@@ -14,8 +14,8 @@ submodule and "git submodule update --rebase" does not detach the HEAD.
 
 compare_head()
 {
-    sha_master=`git-rev-list --max-count=1 master`
-    sha_head=`git-rev-list --max-count=1 HEAD`
+    sha_master=`git rev-list --max-count=1 master`
+    sha_head=`git rev-list --max-count=1 HEAD`
 
     test "$sha_master" = "$sha_head"
 }
@@ -28,6 +28,8 @@ test_expect_success 'setup a submodule tree' '
        git commit -m upstream
        git clone . super &&
        git clone super submodule &&
+       git clone super rebasing &&
+       git clone super merging &&
        (cd super &&
         git submodule add ../submodule submodule &&
         test_tick &&
@@ -45,6 +47,16 @@ test_expect_success 'setup a submodule tree' '
         ) &&
         git add submodule &&
         git commit -m "submodule update"
+       ) &&
+       (cd super &&
+        git submodule add ../rebasing rebasing &&
+        test_tick &&
+        git commit -m "rebasing"
+       ) &&
+       (cd super &&
+        git submodule add ../merging merging &&
+        test_tick &&
+        git commit -m "rebasing"
        )
 '
 
@@ -76,9 +88,23 @@ test_expect_success 'submodule update --rebase staying on master' '
        )
 '
 
-test_expect_success 'submodule update - rebase true in .git/config' '
+test_expect_success 'submodule update --merge staying on master' '
+       (cd super/submodule &&
+         git reset --hard HEAD~1
+       ) &&
+       (cd super &&
+        (cd submodule &&
+         compare_head
+        ) &&
+        git submodule update --merge submodule &&
+        cd submodule &&
+        compare_head
+       )
+'
+
+test_expect_success 'submodule update - rebase in .git/config' '
        (cd super &&
-        git config submodule.submodule.rebase true
+        git config submodule.submodule.update rebase
        ) &&
        (cd super/submodule &&
          git reset --hard HEAD~1
@@ -93,9 +119,9 @@ test_expect_success 'submodule update - rebase true in .git/config' '
        )
 '
 
-test_expect_success 'submodule update - rebase false in .git/config but --rebase given' '
+test_expect_success 'submodule update - checkout in .git/config but --rebase given' '
        (cd super &&
-        git config submodule.submodule.rebase false
+        git config submodule.submodule.update checkout
        ) &&
        (cd super/submodule &&
          git reset --hard HEAD~1
@@ -110,9 +136,43 @@ test_expect_success 'submodule update - rebase false in .git/config but --rebase
        )
 '
 
-test_expect_success 'submodule update - rebase false in .git/config' '
+test_expect_success 'submodule update - merge in .git/config' '
        (cd super &&
-        git config submodule.submodule.rebase false
+        git config submodule.submodule.update merge
+       ) &&
+       (cd super/submodule &&
+         git reset --hard HEAD~1
+       ) &&
+       (cd super &&
+        (cd submodule &&
+         compare_head
+        ) &&
+        git submodule update submodule &&
+        cd submodule &&
+        compare_head
+       )
+'
+
+test_expect_success 'submodule update - checkout in .git/config but --merge given' '
+       (cd super &&
+        git config submodule.submodule.update checkout
+       ) &&
+       (cd super/submodule &&
+         git reset --hard HEAD~1
+       ) &&
+       (cd super &&
+        (cd submodule &&
+         compare_head
+        ) &&
+        git submodule update --merge submodule &&
+        cd submodule &&
+        compare_head
+       )
+'
+
+test_expect_success 'submodule update - checkout in .git/config' '
+       (cd super &&
+        git config submodule.submodule.update checkout
        ) &&
        (cd super/submodule &&
          git reset --hard HEAD^
@@ -129,11 +189,17 @@ test_expect_success 'submodule update - rebase false in .git/config' '
 
 test_expect_success 'submodule init picks up rebase' '
        (cd super &&
-        git config submodule.rebasing.url git://non-existing/git &&
-        git config submodule.rebasing.path does-not-matter &&
-        git config submodule.rebasing.rebase true &&
+        git config -f .gitmodules submodule.rebasing.update rebase &&
         git submodule init rebasing &&
-        test true = $(git config --bool submodule.rebasing.rebase)
+        test "rebase" = "$(git config submodule.rebasing.update)"
+       )
+'
+
+test_expect_success 'submodule init picks up merge' '
+       (cd super &&
+        git config -f .gitmodules submodule.merging.update merge &&
+        git submodule init merging &&
+        test "merge" = "$(git config submodule.merging.update)"
        )
 '