ref-filter: rename the 'strip' option to 'lstrip'
[gitweb.git] / t / t2013-checkout-submodule.sh
index fda3f0af7eb0fcaf7d0d61ff10a22e2dedaa416b..6847f7582234d656563f867976a64142a3a01621 100755 (executable)
@@ -3,6 +3,7 @@
 test_description='checkout can handle submodules'
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-submodule-update.sh
 
 test_expect_success 'setup' '
        mkdir submodule &&
@@ -23,7 +24,7 @@ test_expect_success '"reset <submodule>" updates the index' '
        git update-index --refresh &&
        git diff-files --quiet &&
        git diff-index --quiet --cached HEAD &&
-       test_must_fail git reset HEAD^ submodule &&
+       git reset HEAD^ submodule &&
        test_must_fail git diff-files --quiet &&
        git reset submodule &&
        git diff-files --quiet
@@ -39,4 +40,31 @@ test_expect_success '"checkout <submodule>" updates the index only' '
        git diff-files --quiet
 '
 
+test_expect_success '"checkout <submodule>" honors diff.ignoreSubmodules' '
+       git config diff.ignoreSubmodules dirty &&
+       echo x> submodule/untracked &&
+       git checkout HEAD >actual 2>&1 &&
+       ! test -s actual
+'
+
+test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .gitmodules' '
+       git config diff.ignoreSubmodules none &&
+       git config -f .gitmodules submodule.submodule.path submodule &&
+       git config -f .gitmodules submodule.submodule.ignore untracked &&
+       git checkout HEAD >actual 2>&1 &&
+       ! test -s actual
+'
+
+test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .git/config' '
+       git config -f .gitmodules submodule.submodule.ignore none &&
+       git config submodule.submodule.path submodule &&
+       git config submodule.submodule.ignore all &&
+       git checkout HEAD >actual 2>&1 &&
+       ! test -s actual
+'
+
+test_submodule_switch "git checkout"
+
+test_submodule_forced_switch "git checkout -f"
+
 test_done