##// END OF EJS Templates
check-code: ban use of '[[ ]]' in tests
check-code: ban use of '[[ ]]' in tests

File last commit:

r18178:6ae45c0b default
r25588:b4007137 default
Show More
test-symlink-os-yes-fs-no.py
45 lines | 1.2 KiB | text/x-python | PythonLexer
/ tests / test-symlink-os-yes-fs-no.py
import os, sys, time
from mercurial import hg, ui, commands, util
TESTDIR = os.environ["TESTDIR"]
BUNDLEPATH = os.path.join(TESTDIR, 'bundles', 'test-no-symlinks.hg')
# only makes sense to test on os which supports symlinks
if not getattr(os, "symlink", False):
sys.exit(80) # SKIPPED_STATUS defined in run-tests.py
u = ui.ui()
# hide outer repo
hg.peer(u, {}, '.', create=True)
# clone with symlink support
hg.clone(u, {}, BUNDLEPATH, '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
# 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(util.readfile(f[:-4]))
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, {}, BUNDLEPATH, 'test1')