git/t/t2007-checkout-symlink.sh
Johannes Sixt 889c6f0e4d tests: use test_ln_s_add to remove SYMLINKS prerequisite (trivial cases)
There are many instances where the treatment of symbolic links in the
object model and the algorithms are tested, but where it is not
necessary to actually have a symbolic link in the worktree. Make
adjustments to the tests and remove the SYMLINKS prerequisite when
appropriate in trivial cases, where "trivial" means:

- merely a replacement of 'ln -s a b && git add b' by test_ln_s_add
  is needed;

- a test for symbolic link on the file system can be split off (and
  remains protected by SYMLINKS);

- existing code is equivalent to test_ln_s_add.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-07 15:01:45 -07:00

53 lines
939 B
Bash
Executable File

#!/bin/sh
#
# Copyright (c) 2007 Junio C Hamano
test_description='git checkout to switch between branches with symlink<->dir'
. ./test-lib.sh
test_expect_success setup '
mkdir frotz &&
echo hello >frotz/filfre &&
git add frotz/filfre &&
test_tick &&
git commit -m "master has file frotz/filfre" &&
git branch side &&
echo goodbye >nitfol &&
git add nitfol &&
test_tick &&
git commit -m "master adds file nitfol" &&
git checkout side &&
git rm --cached frotz/filfre &&
mv frotz xyzzy &&
test_ln_s_add xyzzy frotz &&
git add xyzzy/filfre &&
test_tick &&
git commit -m "side moves frotz/ to xyzzy/ and adds frotz->xyzzy/"
'
test_expect_success 'switch from symlink to dir' '
git checkout master
'
test_expect_success 'Remove temporary directories & switch to master' '
rm -fr frotz xyzzy nitfol &&
git checkout -f master
'
test_expect_success 'switch from dir to symlink' '
git checkout side
'
test_done