Mercurial > hg
view tests/test-symlink-os-yes-fs-no.py @ 35540:f948c5b3f5c9 stable
run-tests: avoid set PYTHONUSERBASE environment variable to None
According to python documentation, get_config_var can return None and it was
during running mercurial tests under a virtual environment with the local built
mercurial installed as a python package with `pip install -e .`.
On the other hand, if mercurial is installed in the user library folders with
`pip install --local -e .` the issue doesn't reproduce.
The fallback is that it will just set an empty string and everything should work
as before, according to https://www.python.org/dev/peps/pep-0370/:
The path to the user base directory can be overwritten with the environment
variable PYTHONUSERBASE. The default location is used when PYTHONUSERBASE is
not set or empty.
author | Mihai Popescu <mihai@unity3d.com> |
---|---|
date | Mon, 08 Jan 2018 13:52:43 +0100 |
parents | d83ca854fa21 |
children | 5ac84b20f184 |
line wrap: on
line source
from __future__ import absolute_import import os import sys import time from mercurial import ( commands, hg, ui as uimod, 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 = 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 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')