Thread (43 messages) 43 messages, 4 authors, 2016-12-03

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 index
79cdd34..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
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help