sapling/eden/scm/tests/test-symlink-os-yes-fs-no.py
Jun Wu d9b901b22c extensions: always enable remotefilelog
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
2021-05-06 12:13:17 -07:00

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