[PATCH 1/2] t2013: add test for missing but active submodule
When cloning a superproject with the option
--recurse-submodules='.', it is easy to find yourself wanting
a submodule active, but not having that submodule present in
the modules directory.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
t/t2013-checkout-submodule.sh | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/t/t2013-checkout-submodule.sh b/t/t2013-checkout-submodule.sh
index 6ef15738e44..c69640fc341 100755
--- a/t/t2013-checkout-submodule.sh
+++ b/t/t2013-checkout-submodule.sh
@@ -63,6 +63,30 @@ test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .git/
! test -s actual
'
+test_expect_success 'setup superproject with historic submodule' '
+ test_create_repo super1 &&
+ test_create_repo sub1 &&
+ test_commit -C sub1 sub_content &&
+ git -C super1 submodule add ../sub1 &&
+ git -C super1 commit -a -m "sub1 added" &&
+ test_commit -C super1 historic_state &&
+ git -C super1 rm sub1 &&
+ git -C super1 commit -a -m "deleted sub" &&
+ test_commit -C super1 new_state &&
+ test_path_is_missing super1/sub &&
+
+ # The important part is to ensure sub1 is not in there any more.
+ # There is another series in flight, that may remove an
+ # empty .gitmodules file entirely.
+ test_must_be_empty super1/.gitmodules
+'
+
+test_expect_failure 'checkout old state with deleted submodule' '
+ test_when_finished "rm -rf super1 sub1 super1_clone" &&
+ git clone --recurse-submodules super1 super1_clone &&
+ git -C super1_clone checkout --recurse-submodules historic_state
+'
+
KNOWN_FAILURE_DIRECTORY_SUBMODULE_CONFLICTS=1
test_submodule_switch_recursing_with_args "checkout"
--
2.18.0