##// END OF EJS Templates
lfs: add the 'lfs' requirement in the changegroup transaction introducing lfs...
lfs: add the 'lfs' requirement in the changegroup transaction introducing lfs A hook like this is how largefiles manages to do the same. Largefiles uses a changegroup hook, but this uses pretxnchangegroup because that actually causes the transaction to rollback in the unlikely event that writing the requirements out fails. Sadly, the requires file itself isn't rolled back if a subsequent hook fails, but that seems trivial. Now that commit, changegroup and convert are covered, I don't think there's any way to get an lfs repo without the requirement. The grep exit code is blotted out of some test-lfs-serve.t tests now showing the requirement, because run-tests.py doesn't support conditionalizing the exit code.

File last commit:

r33919:eddca62d default
r35520:6bb940de default
Show More
test-demandimport.py
106 lines | 2.9 KiB | text/x-python | PythonLexer
/ tests / test-demandimport.py
Augie Fackler
tests: ensure demandimport test uses absolute_import
r33919 from __future__ import absolute_import, print_function
Pulkit Goyal
py3: make test-demandimport use print_function...
r28948
Martin Geisler
tests: renamed Python tests to .py
r8449 from mercurial import demandimport
demandimport.enable()
Augie Fackler
demandimport: blacklist distutils.msvc9compiler (issue4475)...
r23643 import os
timeless
tests: skip demandimport if disabled...
r29868 import subprocess
import sys
# Only run if demandimport is allowed
if subprocess.call(['python', '%s/hghave' % os.environ['TESTDIR'],
'demandimport']):
sys.exit(80)
Augie Fackler
demandimport: blacklist distutils.msvc9compiler (issue4475)...
r23643 if os.name != 'nt':
try:
import distutils.msvc9compiler
Pulkit Goyal
py3: make test-demandimport use print_function...
r28948 print('distutils.msvc9compiler needs to be an immediate '
'importerror on non-windows platforms')
Augie Fackler
demandimport: blacklist distutils.msvc9compiler (issue4475)...
r23643 distutils.msvc9compiler
except ImportError:
pass
Martin Geisler
tests: renamed Python tests to .py
r8449 import re
rsub = re.sub
def f(obj):
l = repr(obj)
l = rsub("0x[0-9a-fA-F]+", "0x?", l)
l = rsub("from '.*'", "from '?'", l)
Dan Villiom Podlaski Christiansen
test-demandimport.py: PyPy support...
r13083 l = rsub("'<[a-z]*>'", "'<whatever>'", l)
Martin Geisler
tests: renamed Python tests to .py
r8449 return l
import os
Pulkit Goyal
py3: make test-demandimport use print_function...
r28948 print("os =", f(os))
print("os.system =", f(os.system))
print("os =", f(os))
Martin Geisler
tests: renamed Python tests to .py
r8449
from mercurial import util
Pulkit Goyal
py3: make test-demandimport use print_function...
r28948 print("util =", f(util))
print("util.system =", f(util.system))
print("util =", f(util))
print("util.system =", f(util.system))
Martin Geisler
tests: renamed Python tests to .py
r8449
Bryan O'Sullivan
test-demandimport: ensure that relative imports are deferred...
r27535 from mercurial import hgweb
Pulkit Goyal
py3: make test-demandimport use print_function...
r28948 print("hgweb =", f(hgweb))
print("hgweb_mod =", f(hgweb.hgweb_mod))
print("hgweb =", f(hgweb))
Bryan O'Sullivan
test-demandimport: ensure that relative imports are deferred...
r27535
Martin Geisler
tests: renamed Python tests to .py
r8449 import re as fred
Pulkit Goyal
py3: make test-demandimport use print_function...
r28948 print("fred =", f(fred))
Martin Geisler
tests: renamed Python tests to .py
r8449
Yuya Nishihara
demandimport: look for 'mod' suffix as alternative name for module reference...
r32447 import re as remod
print("remod =", f(remod))
Martin Geisler
tests: renamed Python tests to .py
r8449 import sys as re
Pulkit Goyal
py3: make test-demandimport use print_function...
r28948 print("re =", f(re))
Martin Geisler
tests: renamed Python tests to .py
r8449
Pulkit Goyal
py3: make test-demandimport use print_function...
r28948 print("fred =", f(fred))
print("fred.sub =", f(fred.sub))
print("fred =", f(fred))
Martin Geisler
tests: renamed Python tests to .py
r8449
Yuya Nishihara
demandimport: look for 'mod' suffix as alternative name for module reference...
r32447 remod.escape # use remod
print("remod =", f(remod))
Pulkit Goyal
py3: make test-demandimport use print_function...
r28948 print("re =", f(re))
print("re.stderr =", f(re.stderr))
print("re =", f(re))
Mads Kiilerich
demandimport: make it possible to disable by setting HGDEMANDIMPORT=disable...
r21025
Yuya Nishihara
demandimport: stop overriding __getattribute__()...
r32448 # Test access to special attributes through demandmod proxy
from mercurial import pvec as pvecproxy
print("pvecproxy =", f(pvecproxy))
print("pvecproxy.__doc__ = %r"
% (' '.join(pvecproxy.__doc__.split()[:3]) + ' ...'))
print("pvecproxy.__name__ = %r" % pvecproxy.__name__)
# __name__ must be accessible via __dict__ so the relative imports can be
# resolved
print("pvecproxy.__dict__['__name__'] = %r" % pvecproxy.__dict__['__name__'])
print("pvecproxy =", f(pvecproxy))
Yuya Nishihara
demandimport: error out early on missing attribute of non package (issue5373)...
r30022 import contextlib
print("contextlib =", f(contextlib))
try:
from contextlib import unknownattr
print('no demandmod should be created for attribute of non-package '
'module:\ncontextlib.unknownattr =', f(unknownattr))
except ImportError as inst:
Yuya Nishihara
demandimport: do not raise ImportError for unknown item in fromlist...
r30647 print('contextlib.unknownattr = ImportError: %s'
% rsub(r"'", '', str(inst)))
# Unlike the import statement, __import__() function should not raise
# ImportError even if fromlist has an unknown item
# (see Python/import.c:import_module_level() and ensure_fromlist())
contextlibimp = __import__('contextlib', globals(), locals(), ['unknownattr'])
print("__import__('contextlib', ..., ['unknownattr']) =", f(contextlibimp))
print("hasattr(contextlibimp, 'unknownattr') =",
util.safehasattr(contextlibimp, 'unknownattr'))
Yuya Nishihara
demandimport: error out early on missing attribute of non package (issue5373)...
r30022
Mads Kiilerich
demandimport: make it possible to disable by setting HGDEMANDIMPORT=disable...
r21025 demandimport.disable()
os.environ['HGDEMANDIMPORT'] = 'disable'
timeless
tests: clarify demandimport disabled state
r29981 # this enable call should not actually enable demandimport!
Mads Kiilerich
demandimport: make it possible to disable by setting HGDEMANDIMPORT=disable...
r21025 demandimport.enable()
from mercurial import node
Pulkit Goyal
py3: make test-demandimport use print_function...
r28948 print("node =", f(node))