# HG changeset patch # User Dov Feldstern # Date 1217533279 -10800 # Node ID 24fd94ed1cc03b947310d9dc9764f874a87a170d # Parent 202d178ec706885077c646d4f09e3ad194a5335d 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. diff -r 202d178ec706 -r 24fd94ed1cc0 tests/test-symlink-os-yes-fs-no.py --- /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') diff -r 202d178ec706 -r 24fd94ed1cc0 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.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