rebase: add t3426 for submodule updates

Test that the rebase command updates the work tree as expected for
changes which don't result in conflicts. To make that work add two
helper functions that add a commit only touching files and then
revert it. This allows to rebase the target commit over these two
and to compare the result.

Set KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR to
document that "replace directory with submodule" fails for an
interactive rebase because a directory "sub1" already exists.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jens Lehmann 2014-06-19 22:12:51 +02:00 committed by Junio C Hamano
parent 663ed39a88
commit c7e69168cf

46
t/t3426-rebase-submodule.sh Executable file
View File

@ -0,0 +1,46 @@
#!/bin/sh
test_description='rebase can handle submodules'
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-submodule-update.sh
. "$TEST_DIRECTORY"/lib-rebase.sh
git_rebase () {
git status -su >expect &&
ls -1pR * >>expect &&
git checkout -b ours HEAD &&
echo x >>file1 &&
git add file1 &&
git commit -m add_x &&
git revert HEAD &&
git status -su >actual &&
ls -1pR * >>actual &&
test_cmp expect actual &&
git rebase "$1"
}
test_submodule_switch "git_rebase"
git_rebase_interactive () {
git status -su >expect &&
ls -1pR * >>expect &&
git checkout -b ours HEAD &&
echo x >>file1 &&
git add file1 &&
git commit -m add_x &&
git revert HEAD &&
git status -su >actual &&
ls -1pR * >>actual &&
test_cmp expect actual &&
set_fake_editor &&
echo "fake-editor.sh" >.git/info/exclude &&
git rebase -i "$1"
}
KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
# The real reason "replace directory with submodule" fails is because a
# directory "sub1" exists, but we reuse the suppression added for merge here
test_submodule_switch "git_rebase_interactive"
test_done