--- a/tests/test-symlink-os-yes-fs-no.py Sat Aug 07 16:27:16 2010 +0900
+++ b/tests/test-symlink-os-yes-fs-no.py Mon Aug 09 15:31:56 2010 +0200
@@ -1,5 +1,5 @@
-import os, sys
-from mercurial import hg, ui
+import os, sys, time
+from mercurial import hg, ui, commands
TESTDIR = os.environ["TESTDIR"]
@@ -7,11 +7,35 @@
if not hasattr(os, "symlink"):
sys.exit(80) # SKIPPED_STATUS defined in run-tests.py
-# this is what symlink would do on a non-symlink file system
+# clone with symlink support
+u = ui.ui()
+hg.clone(u, os.path.join(TESTDIR, 'test-no-symlinks.hg'), 'test0')
+
+repo = hg.repository(u, 'test0')
+
+# wait a bit, or the status call wont update the dirstate
+time.sleep(1)
+commands.status(u, repo)
+
+# now disable symlink support -- this is what os.symlink would do on a
+# non-symlink file system
def symlink_failure(src, dst):
raise OSError, (1, "Operation not permitted")
os.symlink = symlink_failure
-# now try cloning a repo which contains symlinks
+# dereference links as if a Samba server has exported this to a
+# Windows client
+for f in 'test0/a.lnk', 'test0/d/b.lnk':
+ os.unlink(f)
+ fp = open(f, 'wb')
+ fp.write(open(f[:-4]).read())
+ fp.close()
+
+# reload repository
+u = ui.ui()
+repo = hg.repository(u, 'test0')
+commands.status(u, repo)
+
+# try cloning a repo which contains symlinks
u = ui.ui()
hg.clone(u, os.path.join(TESTDIR, 'test-no-symlinks.hg'), 'test1')