test symlinks on symlink-capable os but non-capable filesystem (issue1149)
The "real" way to test this is to mount a non-symlink-capable filesystem, and
try working on it; however, I don't know how to mount filesystems as a
non-priveleged user from within the testing framework. So instead, os.symlink
is overridden to raise the exception that would be raised on such a filesystem.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-symlink-os-yes-fs-no.py Thu Jul 31 22:41:19 2008 +0300
@@ -0,0 +1,17 @@
+import os, sys
+from mercurial import hg, ui
+
+TESTDIR = os.environ["TESTDIR"]
+
+# only makes sense to test on os which supports symlinks
+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
+def symlink_failure(src, dst):
+ raise OSError, (1, "Operation not permitted")
+os.symlink = symlink_failure
+
+# now try cloning a repo which contains symlinks
+u = ui.ui()
+hg.clone(u, os.path.join(TESTDIR, 'test-no-symlinks.hg'), 'test1')
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-symlink-os-yes-fs-no.py.out Thu Jul 31 22:41:19 2008 +0300
@@ -0,0 +1,7 @@
+requesting all changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 4 changes to 4 files
+updating working directory
+4 files updated, 0 files merged, 0 files removed, 0 files unresolved