summaryrefslogtreecommitdiff
path: root/tests/test-symlink-placeholder.t
diff options
context:
space:
mode:
authorLorry <lorry@roadtrain.codethink.co.uk>2012-08-22 14:49:51 +0100
committerLorry <lorry@roadtrain.codethink.co.uk>2012-08-22 14:49:51 +0100
commita498da43c7fdb9f24b73680c02a4a3588cc62d9a (patch)
treedaf8119dae1749b5165b68033a1b23a7375ce9ce /tests/test-symlink-placeholder.t
downloadmercurial-tarball-a498da43c7fdb9f24b73680c02a4a3588cc62d9a.tar.gz
Tarball conversion
Diffstat (limited to 'tests/test-symlink-placeholder.t')
-rw-r--r--tests/test-symlink-placeholder.t72
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/test-symlink-placeholder.t b/tests/test-symlink-placeholder.t
new file mode 100644
index 0000000..501b62b
--- /dev/null
+++ b/tests/test-symlink-placeholder.t
@@ -0,0 +1,72 @@
+ $ "$TESTDIR/hghave" symlink || exit 80
+
+Create extension that can disable symlink support:
+
+ $ cat > nolink.py <<EOF
+ > from mercurial import extensions, util
+ > def setflags(orig, f, l, x):
+ > pass
+ > def checklink(orig, path):
+ > return False
+ > def extsetup(ui):
+ > extensions.wrapfunction(util, 'setflags', setflags)
+ > extensions.wrapfunction(util, 'checklink', checklink)
+ > EOF
+
+ $ hg init unix-repo
+ $ cd unix-repo
+ $ echo foo > a
+ $ ln -s a b
+ $ hg ci -Am0
+ adding a
+ adding b
+ $ cd ..
+
+Simulate a checkout shared on NFS/Samba:
+
+ $ hg clone -q unix-repo shared
+ $ cd shared
+ $ rm b
+ $ echo foo > b
+ $ hg --config extensions.n=$TESTTMP/nolink.py status --debug
+ ignoring suspect symlink placeholder "b"
+
+Make a clone using placeholders:
+
+ $ hg --config extensions.n=$TESTTMP/nolink.py clone . ../win-repo
+ updating to branch default
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ cd ../win-repo
+ $ cat b
+ a (no-eol)
+ $ hg --config extensions.n=$TESTTMP/nolink.py st --debug
+
+Write binary data to the placeholder:
+
+ >>> open('b', 'w').write('this is a binary\0')
+ $ hg --config extensions.n=$TESTTMP/nolink.py st --debug
+ ignoring suspect symlink placeholder "b"
+
+Write a long string to the placeholder:
+
+ >>> open('b', 'w').write('this' * 1000)
+ $ hg --config extensions.n=$TESTTMP/nolink.py st --debug
+ ignoring suspect symlink placeholder "b"
+
+Commit shouldn't succeed:
+
+ $ hg --config extensions.n=$TESTTMP/nolink.py ci -m1
+ nothing changed
+ [1]
+
+Write a valid string to the placeholder:
+
+ >>> open('b', 'w').write('this')
+ $ hg --config extensions.n=$TESTTMP/nolink.py st --debug
+ M b
+ $ hg --config extensions.n=$TESTTMP/nolink.py ci -m1
+ $ hg manifest tip --verbose
+ 644 a
+ 644 @ b
+
+ $ cd ..