Skip to content

Commit 8fc36c3

Browse files
chooglengitster
authored andcommitted
submodule--helper tests: add missing "display path" coverage
There are two locations in prepare_to_clone_next_submodule() that manually calculate the submodule display path. As discussed in the next commit the "Skipping" output isn't exactly what we want, but let's test how we behave now, before changing the existing behavior. Signed-off-by: Glen Choo <[email protected]> Signed-off-by: Ævar Arnfjörð Bjarmason <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent c9e221b commit 8fc36c3

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

t/t7406-submodule-update.sh

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,4 +1116,66 @@ test_expect_success 'submodule update --filter sets partial clone settings' '
11161116
test_cmp_config -C super-filter/submodule blob:none remote.origin.partialclonefilter
11171117
'
11181118

1119+
# NEEDSWORK: Clean up the tests so that we can reuse the test setup.
1120+
# Don't reuse the existing repos because the earlier tests have
1121+
# intentionally disruptive configurations.
1122+
test_expect_success 'setup clean recursive superproject' '
1123+
git init bottom &&
1124+
test_commit -C bottom "bottom" &&
1125+
git init middle &&
1126+
git -C middle submodule add ../bottom bottom &&
1127+
git -C middle commit -m "middle" &&
1128+
git init top &&
1129+
git -C top submodule add ../middle middle &&
1130+
git -C top commit -m "top" &&
1131+
git clone --recurse-submodules top top-clean
1132+
'
1133+
1134+
test_expect_success 'submodule update should skip unmerged submodules' '
1135+
test_when_finished "rm -fr top-cloned" &&
1136+
cp -r top-clean top-cloned &&
1137+
1138+
# Create an upstream commit in each repo, starting with bottom
1139+
test_commit -C bottom upstream_commit &&
1140+
# Create middle commit
1141+
git -C middle/bottom fetch &&
1142+
git -C middle/bottom checkout -f FETCH_HEAD &&
1143+
git -C middle add bottom &&
1144+
git -C middle commit -m "upstream_commit" &&
1145+
# Create top commit
1146+
git -C top/middle fetch &&
1147+
git -C top/middle checkout -f FETCH_HEAD &&
1148+
git -C top add middle &&
1149+
git -C top commit -m "upstream_commit" &&
1150+
1151+
# Create a downstream conflict
1152+
test_commit -C top-cloned/middle/bottom downstream_commit &&
1153+
git -C top-cloned/middle add bottom &&
1154+
git -C top-cloned/middle commit -m "downstream_commit" &&
1155+
git -C top-cloned/middle fetch --recurse-submodules origin &&
1156+
test_must_fail git -C top-cloned/middle merge origin/main &&
1157+
1158+
# Make the update of "middle" a no-op, otherwise we error out
1159+
# because of its unmerged state
1160+
test_config -C top-cloned submodule.middle.update !true &&
1161+
git -C top-cloned submodule update --recursive 2>actual.err &&
1162+
cat >expect.err <<-\EOF &&
1163+
Skipping unmerged submodule middle//bottom
1164+
EOF
1165+
test_cmp expect.err actual.err
1166+
'
1167+
1168+
test_expect_success 'submodule update --recursive skip submodules with strategy=none' '
1169+
test_when_finished "rm -fr top-cloned" &&
1170+
cp -r top-clean top-cloned &&
1171+
1172+
test_commit -C top-cloned/middle/bottom downstream_commit &&
1173+
git -C top-cloned/middle config submodule.bottom.update none &&
1174+
git -C top-cloned submodule update --recursive 2>actual.err &&
1175+
cat >expect.err <<-\EOF &&
1176+
Skipping submodule '\''../middle/'\''
1177+
EOF
1178+
test_cmp expect.err actual.err
1179+
'
1180+
11191181
test_done

0 commit comments

Comments
 (0)