RE: [PATCH 14/16] checkout: recurse into submodules if asked to
From: David Turner <hidden>
Date: 2016-11-16 17:03:37
quoted hunk ↗ jump to hunk
-----Original Message----- From: Stefan Beller [mailto:sbeller@google.com]diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh index79cdd34..e0773c6 100755--- a/t/lib-submodule-update.sh +++ b/t/lib-submodule-update.sh@@ -634,7 +634,13 @@ test_submodule_forced_switch () { ########################## Modified submodule######################### # Updating a submodule sha1 doesn't update the submodule's work tree - test_expect_success "$command: modified submodule does not update submodule work tree" ' + if test "$KNOWN_FAILURE_RECURSE_SUBMODULE_SERIES_BREAKS_REPLACE_SUBMODULE_TEST" = 1 + then + RESULT="failure" + else + RESULT="success" + fi + test_expect_$RESULT "$command: modified submodule does not update submodule work tree" '
Why does this break? I thought it was only if checkout is run with --recurse-submodules that anything should change?
+test_expect_success 'dirty file file is not deleted' '
Duplicate 'file' in this test name.
+# This is ok in theory, we just need to make sure # the garbage +collection doesn't eat the commit. +test_expect_success 'different commit prevents from deleting' '
This isn't a different commit -- it's a dirty index, right?
+test_expect_failure '"checkout --recurse-submodules" does not care about untracked submodule content' ' + echo untracked >submodule/untracked && + git checkout --recurse-submodules master && + git diff-files --quiet --ignore-submodules=untracked && + git diff-index --quiet --cached HEAD && + rm submodule/untracked +'
Use test_when_finished for cleanup.
+test_expect_failure '"checkout --recurse-submodules" needs -f when submodule commit is not present (but does fail anyway)' ' + git checkout --recurse-submodules -b bogus_commit master && + git update-index --cacheinfo 160000 0123456789012345678901234567890123456789 submodule && + BOGUS_TREE=$(git write-tree) && + BOGUS_COMMIT=$(echo "bogus submodule commit" | git commit-tree $BOGUS_TREE) && + git commit -m "bogus submodule commit" && + git checkout --recurse-submodules -f master && + test_must_fail git checkout --recurse-submodules bogus_commit && + git diff-files --quiet && + test_must_fail git checkout --recurse-submodules -f bogus_commit && + test_must_fail git diff-files --quiet submodule && + git diff-files --quiet file && + git diff-index --quiet --cached HEAD && + git checkout --recurse-submodules -f master ' +KNOWN_FAILURE_RECURSE_SUBMODULE_SERIES_BREAKS_REPLACE_SUBMODULE_TEST=1 test_submodule_switch "git checkout" +KNOWN_FAILURE_RECURSE_SUBMODULE_SERIES_BREAKS_REPLACE_SUBMODULE_TEST= test_submodule_forced_switch "git checkout -f" test_done -- 2.10.1.469.g00a8914