Skip to content

Commit

Permalink
merge: add t7613 for submodule updates
Browse files Browse the repository at this point in the history
Test that the merge command updates the work tree as expected (for
submodule changes which don't result in conflicts) when used without
arguments or with the '--ff', '--ff-only' and '--no-ff' flag.

Implement the KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR
switch to expect the known failure that --no-ff merges do not create the
empty submodule directory.

The KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES
switch is also implemented to expect the known failure that --no-ff
merges attempt to merge the new files in the former submodule directory
with those of the removed submodule.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jens Lehmann authored and Junio C Hamano committed Jul 14, 2014
1 parent 8f8ba56 commit 663ed39
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 3 deletions.
24 changes: 21 additions & 3 deletions t/lib-submodule-update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,16 @@ test_submodule_switch () {
'
# ... as does removing a directory with tracked files with a
# submodule.
test_expect_success "$command: replace directory with submodule" '
if test "$KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR" = 1
then
# Non fast-forward merges fail with "Directory sub1 doesn't
# exist. sub1" because the empty submodule directory is not
# created
RESULT="failure"
else
RESULT="success"
fi
test_expect_$RESULT "$command: replace directory with submodule" '
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
Expand Down Expand Up @@ -328,7 +337,16 @@ test_submodule_switch () {
'
# Replacing a submodule with files in a directory must fail as the
# submodule work tree isn't removed ...
test_expect_success "$command: replace submodule with a directory must fail" '
if test "$KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES" = 1
then
# Non fast-forward merges attempt to merge the former
# submodule files with the newly checked out ones in the
# directory of the same name while it shouldn't.
RESULT="failure"
else
RESULT="success"
fi
test_expect_$RESULT "$command: replace submodule with a directory must fail" '
prolog &&
reset_work_tree_to add_sub1 &&
(
Expand All @@ -340,7 +358,7 @@ test_submodule_switch () {
)
'
# ... especially when it contains a .git directory.
test_expect_success "$command: replace submodule containing a .git directory with a directory must fail" '
test_expect_$RESULT "$command: replace submodule containing a .git directory with a directory must fail" '
prolog &&
reset_work_tree_to add_sub1 &&
(
Expand Down
19 changes: 19 additions & 0 deletions t/t7613-merge-submodule.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/sh

test_description='merge can handle submodules'

. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-submodule-update.sh

# merges without conflicts
test_submodule_switch "git merge"

test_submodule_switch "git merge --ff"

test_submodule_switch "git merge --ff-only"

KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
test_submodule_switch "git merge --no-ff"

test_done

0 comments on commit 663ed39

Please sign in to comment.