From: Jonathan Date: Mon, 25 Apr 2022 20:27:20 GMT Subject: [PATCH v1 1/2] t7615: test how merge behave when there is untracked file 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 Signed-off-by: COGONI Guillaume --- 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