[PATCH v1 1/2] t7615: test how merge behave when there is untracked file
- From
- Jonathan <git.jonathan.bressat@gmail.com>
- Date
- Apr 25, 2022, 20:27 UTC
- Message-ID
- <20220425202721.20066-2-git.jonathan.bressat@gmail.com>
- In-Reply-To
- <20220425202721.20066-1-git.jonathan.bressat@gmail.com>
when there is untracked file that has the same name than file in the merged branch git refuse to proceed, even when the file has the same content
t6436 test a similar thing but not especially with same content file
Signed-off-by: Jonathan <git.jonathan.bressat@gmail.com> Signed-off-by: COGONI Guillaume <cogoni.guillaume@gmail.com> --- t/t7615-merge-untracked.sh | 63 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 t/t7615-merge-untracked.sh
diff --git a/t/t7615-merge-untracked.sh b/t/t7615-merge-untracked.sh new file mode 100755 index 0000000000..053e6b80ee --- /dev/null +++ b/t/t7615-merge-untracked.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +test_description='test when merge with untracked file' + +GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main +export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME + +. ./test-lib.sh + +test_expect_success 'setup' ' + test_commit "init" README.md "content" && + git checkout -b A +' + +test_expect_success 'fastforward fail when untracked file has the same content' ' + test_when_finished "git branch -D B && git reset --hard init && git clean --force" && + git checkout -b B && + test_commit --no-tag "tracked" file "content" && + git checkout A && + echo content >file && + test_must_fail git merge B +' + +test_expect_success 'fastforward fail when untracked file has different content' ' + test_when_finished "git branch -D B && git reset --hard init && git clean --force" && + git checkout -b B && + test_commit --no-tag "tracked" file "content" && + git switch A && + echo other >file && + test_must_fail git merge B +' + +test_expect_success 'normal merge fail when untracked file has the same content' ' + test_when_finished "git branch -D B && git reset --hard init && git clean --force" && + git checkout -b B && + test_commit --no-tag "tracked" file "content" fileB "content" && + git switch A && + test_commit --no-tag "exA" fileA "content" && + echo content >file && + test_must_fail git merge B +' + +test_expect_success 'normal merge fail when untracked file has different content' ' + test_when_finished "git branch -D B && git reset --hard init && git clean --force" && + git checkout -b B && + test_commit --no-tag "tracked" file "content" fileB "content" && + git switch A && + test_commit --no-tag "exA" fileA "content" && + echo dif >file && + test_must_fail git merge B +' + +test_expect_success 'merge fail when tracked file modification is unstaged' ' + test_when_finished "git branch -D B && git reset --hard init && git clean --force" && + test_commit --no-tag "unstaged" file "other" && + git checkout -b B && + test_commit --no-tag "staged" file "content" && + git switch A && + echo content >file && + test_must_fail git merge B +' + +test_done
-- 2.35.1.7.gc8609858e0.dirty