mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
d9b901b22c
Summary: This makes it easier to get rid of revlog stores. `debugindexdot` is no longer supported since it reads revlogs. Two tests use flat manifest bundles. They are no longer supported due to remotefilelog today has some assumptions that treemanifest extension is also being used. Reviewed By: DurhamG Differential Revision: D27971126 fbshipit-source-id: fdb992a8d72bbcf562b5cb95b3f29051dd1c9464
70 lines
1.6 KiB
Python
70 lines
1.6 KiB
Python
from __future__ import absolute_import
|
|
|
|
import os
|
|
import sys
|
|
import time
|
|
|
|
from edenscm.mercurial import commands, fscap, hg, ui as uimod, util
|
|
from hghave import require
|
|
|
|
|
|
require(["false"]) # incompatible with remotefilelog + non-treemanifest
|
|
|
|
|
|
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
|
|
|
|
with open(os.environ["HGRCPATH"], "a+") as f:
|
|
f.write("[extensions]\n")
|
|
f.write("treemanifest=!\n")
|
|
|
|
u = uimod.ui.load()
|
|
# 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
|
|
fscap.getfscap = lambda *args: None
|
|
|
|
|
|
def islink_failure(path):
|
|
return False
|
|
|
|
|
|
os.path.islink = islink_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 = uimod.ui.load()
|
|
repo = hg.repository(u, "test0")
|
|
commands.status(u, repo)
|
|
|
|
# try cloning a repo which contains symlinks
|
|
u = uimod.ui.load()
|
|
hg.clone(u, {}, BUNDLEPATH, "test1")
|