Jonathan Tan <jonathantanmy@xxxxxxxxxx> writes: > Factor out the commonalities from test_submodule_switch() and > test_submodule_forced_switch() in lib-submodule-update.sh, and document > their usage. > > This also makes explicit (through the KNOWN_FAILURE_FORCED_SWITCH_TESTS > variable) the fact that, currently, all functionality tested using > test_submodule_forced_switch() do not correctly handle the situation in > which a submodule is replaced with an ordinary directory. > > Signed-off-by: Jonathan Tan <jonathantanmy@xxxxxxxxxx> > --- > I find tests that use lib-submodule-update.sh difficult to understand > due to the lack of clarity of what test_submodule_switch() and others do > with their argument - I hope this will make things easier for future > readers. > --- > t/lib-submodule-update.sh | 250 +++++++++------------------------------------- > 1 file changed, 46 insertions(+), 204 deletions(-) I suspect that the benefit of this is a lot larger than "document" a test helper function or two ;-) "document & clean-up", perhaps? > - # ... unless there is an untracked file in its place. > - test_expect_success "$command: added submodule doesn't remove untracked unignored file with same name" ' > - prolog && > - reset_work_tree_to no_submodule && > - ( > - cd submodule_update && > - git branch -t add_sub1 origin/add_sub1 && > - >sub1 && > - test_must_fail $command add_sub1 && > - test_superproject_content origin/no_submodule && > - test_must_be_empty sub1 > - ) > - ' This is not included in the _common thing, but is added back to the updated _switch and _forced_switch, both of which call the _common thing, at the end. > @@ -538,59 +529,53 @@ test_submodule_switch () { > test_submodule_content sub1 origin/add_sub1 > ) > ' > - # Updating a submodule from an invalid sha1 doesn't update the > - # submodule's work tree, subsequent update will succeed > - test_expect_$RESULT "$command: modified submodule does not update submodule work tree from invalid commit" ' > - prolog && > - reset_work_tree_to invalid_sub1 && > - ( > - cd submodule_update && > - git branch -t valid_sub1 origin/valid_sub1 && > - $command valid_sub1 && > - test_superproject_content origin/valid_sub1 && > - test_dir_is_empty sub1 && > - git submodule update --init --recursive && > - test_submodule_content sub1 origin/valid_sub1 > - ) > - ' This piece seems to have been lost from the updated code; _common does not inherit this test, and _switch does not add it back after calling _common. Its copy does appear in _forced_switch, though. I didn't compare the before-and-after with fine toothed comb, but a cursory look didn't find anything glaringly questionable other than the above.