tests/test-symlink-os-yes-fs-no.py
branchstable
changeset 11769 ca6cebd8734e
parent 6879 24fd94ed1cc0
child 14116 cd3032437064
--- 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')