test-symlinks
84 lines
| 1.7 KiB
| text/plain
|
TextLexer
/ tests / test-symlinks
Matthew Elder
|
r1408 | #!/bin/sh | ||
#Test bug regarding symlinks that showed up in hg 0.7 | ||||
#Author: Matthew Elder <sseses@gmail.com> | ||||
Patrick Mezard
|
r4882 | "$TESTDIR/hghave" symlink || exit 80 | ||
Matthew Elder
|
r1408 | #make and initialize repo | ||
hg init test; cd test; | ||||
#make a file and a symlink | ||||
touch foo; ln -s foo bar; | ||||
#import with addremove -- symlink walking should _not_ screwup. | ||||
hg addremove | ||||
#commit -- the symlink should _not_ appear added to dir state | ||||
hg commit -m 'initial' | ||||
#add a new file so hg will let me commit again | ||||
touch bomb | ||||
#again, symlink should _not_ show up on dir state | ||||
hg addremove | ||||
#Assert screamed here before, should go by without consequence | ||||
hg commit -m 'is there a bug?' | ||||
Benoit Boissinot
|
r1487 | |||
Thomas Arendsen Hein
|
r3988 | cd .. ; rm -r test | ||
Benoit Boissinot
|
r1487 | hg init test; cd test; | ||
mkdir dir | ||||
touch a.c dir/a.o dir/b.o | ||||
# test what happens if we want to trick hg | ||||
hg commit -A -m 0 | ||||
echo "relglob:*.o" > .hgignore | ||||
rm a.c | ||||
rm dir/a.o | ||||
rm dir/b.o | ||||
mkdir dir/a.o | ||||
Thomas Arendsen Hein
|
r3750 | ln -s nonexist dir/b.o | ||
Benoit Boissinot
|
r1487 | mkfifo a.c | ||
Thomas Arendsen Hein
|
r1620 | # it should show a.c, dir/a.o and dir/b.o deleted | ||
Benoit Boissinot
|
r1487 | hg status | ||
Benoit Boissinot
|
r1527 | hg status a.c | ||
Jim Meyering
|
r2115 | |||
echo '# test absolute path through symlink outside repo' | ||||
cd .. | ||||
p=`pwd` | ||||
hg init x | ||||
ln -s x y | ||||
cd x | ||||
touch f | ||||
hg add f | ||||
hg status $p/y/f | ||||
echo '# try symlink outside repo to file inside' | ||||
ln -s x/f ../z | ||||
# this should fail | ||||
hg status ../z && { echo hg mistakenly exited with status 0; exit 1; } || : | ||||
Giorgos Keramidas
|
r4137 | |||
cd .. ; rm -r test | ||||
hg init test; cd test; | ||||
echo '# try cloning symlink in a subdir' | ||||
echo '1. commit a symlink' | ||||
mkdir -p a/b/c | ||||
cd a/b/c | ||||
ln -s /path/to/symlink/source demo | ||||
cd ../../.. | ||||
hg stat | ||||
hg commit -A -m 'add symlink in a/b/c subdir' | ||||
echo '2. clone it' | ||||
cd .. | ||||
hg clone test testclone | ||||
Brendan Cully
|
r5116 | |||
echo '# git symlink diff' | ||||
cd testclone | ||||
hg diff --git -r null:tip | ||||
hg export --git tip > ../sl.diff | ||||
echo '# import git symlink diff' | ||||
hg rm a/b/c/demo | ||||
hg commit -m'remove link' | ||||
hg import ../sl.diff | ||||
hg diff --git -r 1:tip | ||||