tests/test-symlink-os-yes-fs-no.py
author Dov Feldstern <dfeldstern@fastimap.com>
Thu, 31 Jul 2008 22:41:19 +0300
changeset 6879 24fd94ed1cc0
child 11769 ca6cebd8734e
permissions -rw-r--r--
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.

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')