test-symlink-os-yes-fs-no.py
42 lines
| 1.1 KiB
| text/x-python
|
PythonLexer
/ tests / test-symlink-os-yes-fs-no.py
Martin Geisler
|
r11769 | import os, sys, time | ||
Dan Villiom Podlaski Christiansen
|
r14168 | from mercurial import hg, ui, commands, util | ||
Dov Feldstern
|
r6879 | |||
TESTDIR = os.environ["TESTDIR"] | ||||
Nicolas Dumazet
|
r14116 | BUNDLEPATH = os.path.join(TESTDIR, 'bundles', 'test-no-symlinks.hg') | ||
Dov Feldstern
|
r6879 | |||
# only makes sense to test on os which supports symlinks | ||||
Augie Fackler
|
r14971 | if not getattr(os, "symlink", False): | ||
Dov Feldstern
|
r6879 | sys.exit(80) # SKIPPED_STATUS defined in run-tests.py | ||
Martin Geisler
|
r11769 | # clone with symlink support | ||
u = ui.ui() | ||||
Peter Arrenbrecht
|
r14553 | hg.clone(u, {}, BUNDLEPATH, 'test0') | ||
Martin Geisler
|
r11769 | |||
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 | ||||
Dov Feldstern
|
r6879 | def symlink_failure(src, dst): | ||
raise OSError, (1, "Operation not permitted") | ||||
os.symlink = symlink_failure | ||||
Martin Geisler
|
r11769 | # 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') | ||||
Dan Villiom Podlaski Christiansen
|
r14168 | fp.write(util.readfile(f[:-4])) | ||
Martin Geisler
|
r11769 | fp.close() | ||
# reload repository | ||||
u = ui.ui() | ||||
repo = hg.repository(u, 'test0') | ||||
commands.status(u, repo) | ||||
# try cloning a repo which contains symlinks | ||||
Dov Feldstern
|
r6879 | u = ui.ui() | ||
Peter Arrenbrecht
|
r14553 | hg.clone(u, {}, BUNDLEPATH, 'test1') | ||