##// END OF EJS Templates
notify: add maxdiffstat option to truncate long file lists...
notify: add maxdiffstat option to truncate long file lists Large scale changes like a new GCC version can easily result in 1MB+ emails due to diffstat alone. The new maxdiffstat option truncates the list similar to what maxdiff already provides for the diffs. Differential Revision: https://phab.mercurial-scm.org/D3402

File last commit:

r36255:b39f0fdb default
r37795:a4cac7b0 default
Show More
test-demandimport.py
109 lines | 3.0 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
Martin von Zweigbergk
tests: actually check that HGDEMANDIMPORT=disable disables demandimport...
r36255 demandimport.disable()
os.environ['HGDEMANDIMPORT'] = 'disable'
# this enable call should not actually enable demandimport!
demandimport.enable()
from mercurial import node
print("node =", f(node))
# now enable it for real
del os.environ['HGDEMANDIMPORT']
demandimport.enable()
Martin von Zweigbergk
tests: avoid referring to pvec in demandimport test...
r36265 # Test access to special attributes through demandmod proxy
from mercurial import error as errorproxy
print("errorproxy =", f(errorproxy))
print("errorproxy.__doc__ = %r"
% (' '.join(errorproxy.__doc__.split()[:3]) + ' ...'))
print("errorproxy.__name__ = %r" % errorproxy.__name__)
# __name__ must be accessible via __dict__ so the relative imports can be
# resolved
print("errorproxy.__dict__['__name__'] = %r" % errorproxy.__dict__['__name__'])
print("errorproxy =", f(errorproxy))
Martin Geisler
tests: renamed Python tests to .py
r8449 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: 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'))