Skip to content

Commit

Permalink
t6035: use test_ln_s_add to remove SYMLINKS prerequisite
Browse files Browse the repository at this point in the history
All tests in t6035 are protected by SYMLINKS. But that is not necessary,
because a lot of the functionality can be tested provided symbolic link
entries enter the index and object data base. Use test_ln_s_add for this
purpose.

Some test cases do test the presence of symbolic links on the file system.
Move these tests into separate test cases that remain protected by
SYMLINKS.

There is one instance of expect_failure. There is a possibility that this
test case fails differently depending on whether SYMLINKS is present or
not; but this is not the case.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Johannes Sixt authored and Junio C Hamano committed Jun 7, 2013
1 parent 622f98e commit bfd7804
Showing 1 changed file with 47 additions and 26 deletions.
73 changes: 47 additions & 26 deletions t/t6035-merge-dir-to-symlink.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
test_description='merging when a directory was replaced with a symlink'
. ./test-lib.sh

test_expect_success SYMLINKS 'create a commit where dir a/b changed to symlink' '
test_expect_success 'create a commit where dir a/b changed to symlink' '
mkdir -p a/b/c a/b-2/c &&
> a/b/c/d &&
> a/b-2/c/d &&
Expand All @@ -12,20 +12,20 @@ test_expect_success SYMLINKS 'create a commit where dir a/b changed to symlink'
git commit -m base &&
git tag start &&
rm -rf a/b &&
ln -s b-2 a/b &&
git add -A &&
test_ln_s_add b-2 a/b &&
git commit -m "dir to symlink"
'

test_expect_success SYMLINKS 'checkout does not clobber untracked symlink' '
test_expect_success 'checkout does not clobber untracked symlink' '
git checkout HEAD^0 &&
git reset --hard master &&
git rm --cached a/b &&
git commit -m "untracked symlink remains" &&
test_must_fail git checkout start^0
'

test_expect_success SYMLINKS 'a/b-2/c/d is kept when clobbering symlink b' '
test_expect_success 'a/b-2/c/d is kept when clobbering symlink b' '
git checkout HEAD^0 &&
git reset --hard master &&
git rm --cached a/b &&
Expand All @@ -34,14 +34,14 @@ test_expect_success SYMLINKS 'a/b-2/c/d is kept when clobbering symlink b' '
test -f a/b-2/c/d
'

test_expect_success SYMLINKS 'checkout should not have deleted a/b-2/c/d' '
test_expect_success 'checkout should not have deleted a/b-2/c/d' '
git checkout HEAD^0 &&
git reset --hard master &&
git checkout start^0 &&
test -f a/b-2/c/d
'

test_expect_success SYMLINKS 'setup for merge test' '
test_expect_success 'setup for merge test' '
git reset --hard &&
test -f a/b-2/c/d &&
echo x > a/x &&
Expand All @@ -50,39 +50,51 @@ test_expect_success SYMLINKS 'setup for merge test' '
git tag baseline
'

test_expect_success SYMLINKS 'Handle D/F conflict, do not lose a/b-2/c/d in merge (resolve)' '
test_expect_success 'Handle D/F conflict, do not lose a/b-2/c/d in merge (resolve)' '
git reset --hard &&
git checkout baseline^0 &&
git merge -s resolve master &&
test -h a/b &&
test -f a/b-2/c/d
'

test_expect_success SYMLINKS 'Handle D/F conflict, do not lose a/b-2/c/d in merge (recursive)' '
test_expect_success SYMLINKS 'a/b was resolved as symlink' '
test -h a/b
'

test_expect_success 'Handle D/F conflict, do not lose a/b-2/c/d in merge (recursive)' '
git reset --hard &&
git checkout baseline^0 &&
git merge -s recursive master &&
test -h a/b &&
test -f a/b-2/c/d
'

test_expect_success SYMLINKS 'Handle F/D conflict, do not lose a/b-2/c/d in merge (resolve)' '
test_expect_success SYMLINKS 'a/b was resolved as symlink' '
test -h a/b
'

test_expect_success 'Handle F/D conflict, do not lose a/b-2/c/d in merge (resolve)' '
git reset --hard &&
git checkout master^0 &&
git merge -s resolve baseline^0 &&
test -h a/b &&
test -f a/b-2/c/d
'

test_expect_success SYMLINKS 'Handle F/D conflict, do not lose a/b-2/c/d in merge (recursive)' '
test_expect_success SYMLINKS 'a/b was resolved as symlink' '
test -h a/b
'

test_expect_success 'Handle F/D conflict, do not lose a/b-2/c/d in merge (recursive)' '
git reset --hard &&
git checkout master^0 &&
git merge -s recursive baseline^0 &&
test -h a/b &&
test -f a/b-2/c/d
'

test_expect_failure SYMLINKS 'do not lose untracked in merge (resolve)' '
test_expect_success SYMLINKS 'a/b was resolved as symlink' '
test -h a/b
'

test_expect_failure 'do not lose untracked in merge (resolve)' '
git reset --hard &&
git checkout baseline^0 &&
>a/b/c/e &&
Expand All @@ -91,7 +103,7 @@ test_expect_failure SYMLINKS 'do not lose untracked in merge (resolve)' '
test -f a/b-2/c/d
'

test_expect_success SYMLINKS 'do not lose untracked in merge (recursive)' '
test_expect_success 'do not lose untracked in merge (recursive)' '
git reset --hard &&
git checkout baseline^0 &&
>a/b/c/e &&
Expand All @@ -100,52 +112,61 @@ test_expect_success SYMLINKS 'do not lose untracked in merge (recursive)' '
test -f a/b-2/c/d
'

test_expect_success SYMLINKS 'do not lose modifications in merge (resolve)' '
test_expect_success 'do not lose modifications in merge (resolve)' '
git reset --hard &&
git checkout baseline^0 &&
echo more content >>a/b/c/d &&
test_must_fail git merge -s resolve master
'

test_expect_success SYMLINKS 'do not lose modifications in merge (recursive)' '
test_expect_success 'do not lose modifications in merge (recursive)' '
git reset --hard &&
git checkout baseline^0 &&
echo more content >>a/b/c/d &&
test_must_fail git merge -s recursive master
'

test_expect_success SYMLINKS 'setup a merge where dir a/b-2 changed to symlink' '
test_expect_success 'setup a merge where dir a/b-2 changed to symlink' '
git reset --hard &&
git checkout start^0 &&
rm -rf a/b-2 &&
ln -s b a/b-2 &&
git add -A &&
test_ln_s_add b a/b-2 &&
git commit -m "dir a/b-2 to symlink" &&
git tag test2
'

test_expect_success SYMLINKS 'merge should not have D/F conflicts (resolve)' '
test_expect_success 'merge should not have D/F conflicts (resolve)' '
git reset --hard &&
git checkout baseline^0 &&
git merge -s resolve test2 &&
test -h a/b-2 &&
test -f a/b/c/d
'

test_expect_success SYMLINKS 'merge should not have D/F conflicts (recursive)' '
test_expect_success SYMLINKS 'a/b-2 was resolved as symlink' '
test -h a/b-2
'

test_expect_success 'merge should not have D/F conflicts (recursive)' '
git reset --hard &&
git checkout baseline^0 &&
git merge -s recursive test2 &&
test -h a/b-2 &&
test -f a/b/c/d
'

test_expect_success SYMLINKS 'merge should not have F/D conflicts (recursive)' '
test_expect_success SYMLINKS 'a/b-2 was resolved as symlink' '
test -h a/b-2
'

test_expect_success 'merge should not have F/D conflicts (recursive)' '
git reset --hard &&
git checkout -b foo test2 &&
git merge -s recursive baseline^0 &&
test -h a/b-2 &&
test -f a/b/c/d
'

test_expect_success SYMLINKS 'a/b-2 was resolved as symlink' '
test -h a/b-2
'

test_done

0 comments on commit bfd7804

Please sign in to comment.