test symlinks on symlink-capable os but non-capable filesystem (issue1149)
authorDov Feldstern <dfeldstern@fastimap.com>
Thu, 31 Jul 2008 22:41:19 +0300
changeset 6879 24fd94ed1cc0
parent 6878 202d178ec706
child 6880 892806b3fc0f
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.
tests/test-symlink-os-yes-fs-no.py
tests/test-symlink-os-yes-fs-no.py.out
--- /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