author | Augie Fackler <augie@google.com> |
Thu, 21 Nov 2019 23:35:29 -0500 | |
changeset 43736 | 640bae94f2f3 |
parent 43076 | 2372284d9457 |
child 44117 | c5e0a9b97b8a |
permissions | -rw-r--r-- |
33918
eddca62d9e64
tests: ensure demandimport test uses absolute_import
Augie Fackler <raf@durin42.com>
parents:
32448
diff
changeset
|
1 |
from __future__ import absolute_import, print_function |
28948
16390f4cccf0
py3: make test-demandimport use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27535
diff
changeset
|
2 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
3 |
from mercurial import demandimport |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
4 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
5 |
demandimport.enable() |
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
6 |
|
23643
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
7 |
import os |
29868
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
8 |
import subprocess |
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
9 |
import sys |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
10 |
import types |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
11 |
|
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
12 |
# Don't import pycompat because it has too many side-effects. |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
13 |
ispy3 = sys.version_info[0] >= 3 |
29868
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
14 |
|
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
15 |
# Only run if demandimport is allowed |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
16 |
if subprocess.call( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
17 |
['python', '%s/hghave' % os.environ['TESTDIR'], 'demandimport'] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
18 |
): |
29868
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
19 |
sys.exit(80) |
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
20 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
21 |
# We rely on assert, which gets optimized out. |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
22 |
if sys.flags.optimize: |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
23 |
sys.exit(80) |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
24 |
|
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
25 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
26 |
from importlib.util import _LazyModule |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
27 |
|
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
28 |
try: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
29 |
from importlib.util import _Module as moduletype |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
30 |
except ImportError: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
31 |
moduletype = types.ModuleType |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
32 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
33 |
moduletype = types.ModuleType |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
34 |
|
23643
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
35 |
if os.name != 'nt': |
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
36 |
try: |
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
37 |
import distutils.msvc9compiler |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
38 |
|
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
39 |
print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
40 |
'distutils.msvc9compiler needs to be an immediate ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
41 |
'importerror on non-windows platforms' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
42 |
) |
23643
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
43 |
distutils.msvc9compiler |
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
44 |
except ImportError: |
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
45 |
pass |
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
46 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
47 |
import re |
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
48 |
|
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
49 |
rsub = re.sub |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
50 |
|
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
51 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
52 |
def f(obj): |
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
53 |
l = repr(obj) |
4802
3a4310e8fe72
test-demandimport: match upper-case hexadecimal
Patrick Mezard <pmezard@gmail.com>
parents:
4631
diff
changeset
|
54 |
l = rsub("0x[0-9a-fA-F]+", "0x?", l) |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
55 |
l = rsub("from '.*'", "from '?'", l) |
13083
c0290fc6b486
test-demandimport.py: PyPy support
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12865
diff
changeset
|
56 |
l = rsub("'<[a-z]*>'", "'<whatever>'", l) |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
57 |
return l |
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
58 |
|
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
59 |
|
36237
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
60 |
demandimport.disable() |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
61 |
os.environ['HGDEMANDIMPORT'] = 'disable' |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
62 |
# this enable call should not actually enable demandimport! |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
63 |
demandimport.enable() |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
64 |
from mercurial import node |
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
65 |
|
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
66 |
# We use assert instead of a unittest test case because having imports inside |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
67 |
# functions changes behavior of the demand importer. |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
68 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
69 |
assert not isinstance(node, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
70 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
71 |
assert f(node) == "<module 'mercurial.node' from '?'>", f(node) |
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
72 |
|
36237
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
73 |
# now enable it for real |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
74 |
del os.environ['HGDEMANDIMPORT'] |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
75 |
demandimport.enable() |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
76 |
|
36251
c2c5f9f6fa21
tests: avoid referring to pvec in demandimport test
Martin von Zweigbergk <martinvonz@google.com>
parents:
36237
diff
changeset
|
77 |
# Test access to special attributes through demandmod proxy |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
78 |
assert 'mercurial.error' not in sys.modules |
36251
c2c5f9f6fa21
tests: avoid referring to pvec in demandimport test
Martin von Zweigbergk <martinvonz@google.com>
parents:
36237
diff
changeset
|
79 |
from mercurial import error as errorproxy |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
80 |
|
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
81 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
82 |
# unsure why this isn't lazy. |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
83 |
assert not isinstance(f, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
84 |
assert f(errorproxy) == "<module 'mercurial.error' from '?'>", f(errorproxy) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
85 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
86 |
assert f(errorproxy) == "<unloaded module 'error'>", f(errorproxy) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
87 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
88 |
doc = ' '.join(errorproxy.__doc__.split()[:3]) |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
89 |
assert doc == 'Mercurial exceptions. This', doc |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
90 |
assert errorproxy.__name__ == 'mercurial.error', errorproxy.__name__ |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
91 |
|
36251
c2c5f9f6fa21
tests: avoid referring to pvec in demandimport test
Martin von Zweigbergk <martinvonz@google.com>
parents:
36237
diff
changeset
|
92 |
# __name__ must be accessible via __dict__ so the relative imports can be |
c2c5f9f6fa21
tests: avoid referring to pvec in demandimport test
Martin von Zweigbergk <martinvonz@google.com>
parents:
36237
diff
changeset
|
93 |
# resolved |
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
94 |
name = errorproxy.__dict__['__name__'] |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
95 |
assert name == 'mercurial.error', name |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
96 |
|
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
97 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
98 |
assert not isinstance(errorproxy, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
99 |
assert f(errorproxy) == "<module 'mercurial.error' from '?'>", f(errorproxy) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
100 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
101 |
assert f(errorproxy) == "<proxied module 'error'>", f(errorproxy) |
36251
c2c5f9f6fa21
tests: avoid referring to pvec in demandimport test
Martin von Zweigbergk <martinvonz@google.com>
parents:
36237
diff
changeset
|
102 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
103 |
import os |
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
104 |
|
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
105 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
106 |
assert not isinstance(os, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
107 |
assert f(os) == "<module 'os' from '?'>", f(os) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
108 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
109 |
assert f(os) == "<unloaded module 'os'>", f(os) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
110 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
111 |
assert f(os.system) == '<built-in function system>', f(os.system) |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
112 |
assert f(os) == "<module 'os' from '?'>", f(os) |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
113 |
|
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
114 |
assert 'mercurial.utils.procutil' not in sys.modules |
37964
1d0610fdd63b
tests: migrate demandimport.py away from deprecated `util` module symbols
Matt Harbison <matt_harbison@yahoo.com>
parents:
36251
diff
changeset
|
115 |
from mercurial.utils import procutil |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
116 |
|
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
117 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
118 |
assert isinstance(procutil, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
119 |
assert f(procutil) == "<module 'mercurial.utils.procutil' from '?'>", f( |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
120 |
procutil |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
121 |
) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
122 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
123 |
assert f(procutil) == "<unloaded module 'procutil'>", f(procutil) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
124 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
125 |
assert f(procutil.system) == '<function system at 0x?>', f(procutil.system) |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
126 |
assert procutil.__class__ == moduletype, procutil.__class__ |
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
127 |
assert f(procutil) == "<module 'mercurial.utils.procutil' from '?'>", f( |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
128 |
procutil |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
129 |
) |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
130 |
assert f(procutil.system) == '<function system at 0x?>', f(procutil.system) |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
131 |
|
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
132 |
assert 'mercurial.hgweb' not in sys.modules |
27535
0d0f4070f6d7
test-demandimport: ensure that relative imports are deferred
Bryan O'Sullivan <bos@serpentine.com>
parents:
23643
diff
changeset
|
133 |
from mercurial import hgweb |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
134 |
|
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
135 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
136 |
assert not isinstance(hgweb, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
137 |
assert f(hgweb) == "<module 'mercurial.hgweb' from '?'>", f(hgweb) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
138 |
assert isinstance(hgweb.hgweb_mod, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
139 |
assert ( |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
140 |
f(hgweb.hgweb_mod) == "<module 'mercurial.hgweb.hgweb_mod' from '?'>" |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
141 |
), f(hgweb.hgweb_mod) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
142 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
143 |
assert f(hgweb) == "<unloaded module 'hgweb'>", f(hgweb) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
144 |
assert f(hgweb.hgweb_mod) == "<unloaded module 'hgweb_mod'>", f( |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
145 |
hgweb.hgweb_mod |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
146 |
) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
147 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
148 |
assert f(hgweb) == "<module 'mercurial.hgweb' from '?'>", f(hgweb) |
27535
0d0f4070f6d7
test-demandimport: ensure that relative imports are deferred
Bryan O'Sullivan <bos@serpentine.com>
parents:
23643
diff
changeset
|
149 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
150 |
import re as fred |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
151 |
|
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
152 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
153 |
assert not isinstance(fred, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
154 |
assert f(fred) == "<module 're' from '?'>" |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
155 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
156 |
assert f(fred) == "<unloaded module 're'>", f(fred) |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
157 |
|
32447
252d2260c74e
demandimport: look for 'mod' suffix as alternative name for module reference
Yuya Nishihara <yuya@tcha.org>
parents:
30647
diff
changeset
|
158 |
import re as remod |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
159 |
|
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
160 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
161 |
assert not isinstance(remod, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
162 |
assert f(remod) == "<module 're' from '?'>" |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
163 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
164 |
assert f(remod) == "<unloaded module 're'>", f(remod) |
32447
252d2260c74e
demandimport: look for 'mod' suffix as alternative name for module reference
Yuya Nishihara <yuya@tcha.org>
parents:
30647
diff
changeset
|
165 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
166 |
import sys as re |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
167 |
|
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
168 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
169 |
assert not isinstance(re, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
170 |
assert f(re) == "<module 'sys' (built-in)>" |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
171 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
172 |
assert f(re) == "<unloaded module 'sys'>", f(re) |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
173 |
|
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
174 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
175 |
assert not isinstance(fred, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
176 |
assert f(fred) == "<module 're' from '?'>", f(fred) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
177 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
178 |
assert f(fred) == "<unloaded module 're'>", f(fred) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
179 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
180 |
assert f(fred.sub) == '<function sub at 0x?>', f(fred.sub) |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
181 |
|
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
182 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
183 |
assert not isinstance(fred, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
184 |
assert f(fred) == "<module 're' from '?'>", f(fred) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
185 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
186 |
assert f(fred) == "<proxied module 're'>", f(fred) |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
187 |
|
32447
252d2260c74e
demandimport: look for 'mod' suffix as alternative name for module reference
Yuya Nishihara <yuya@tcha.org>
parents:
30647
diff
changeset
|
188 |
remod.escape # use remod |
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
189 |
assert f(remod) == "<module 're' from '?'>", f(remod) |
32447
252d2260c74e
demandimport: look for 'mod' suffix as alternative name for module reference
Yuya Nishihara <yuya@tcha.org>
parents:
30647
diff
changeset
|
190 |
|
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
191 |
if ispy3: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
192 |
assert not isinstance(re, _LazyModule) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
193 |
assert f(re) == "<module 'sys' (built-in)>" |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
194 |
assert f(type(re.stderr)) == "<class '_io.TextIOWrapper'>", f( |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
195 |
type(re.stderr) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
196 |
) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
197 |
assert f(re) == "<module 'sys' (built-in)>" |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
198 |
else: |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
199 |
assert f(re) == "<unloaded module 'sys'>", f(re) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
200 |
assert f(re.stderr) == "<open file '<whatever>', mode 'w' at 0x?>", f( |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
201 |
re.stderr |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
202 |
) |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
203 |
assert f(re) == "<proxied module 'sys'>", f(re) |
21025
54af51c18c4c
demandimport: make it possible to disable by setting HGDEMANDIMPORT=disable
Mads Kiilerich <madski@unity3d.com>
parents:
13083
diff
changeset
|
204 |
|
41507
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
205 |
assert 'telnetlib' not in sys.modules |
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
206 |
import telnetlib |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
207 |
|
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
208 |
if ispy3: |
41507
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
209 |
assert not isinstance(telnetlib, _LazyModule) |
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
210 |
assert f(telnetlib) == "<module 'telnetlib' from '?'>" |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
211 |
else: |
41507
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
212 |
assert f(telnetlib) == "<unloaded module 'telnetlib'>", f(telnetlib) |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
213 |
|
30022
26a4e46af2bc
demandimport: error out early on missing attribute of non package (issue5373)
Yuya Nishihara <yuya@tcha.org>
parents:
29981
diff
changeset
|
214 |
try: |
41507
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
215 |
from telnetlib import unknownattr |
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
216 |
|
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
217 |
assert False, ( |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
218 |
'no demandmod should be created for attribute of non-package ' |
41507
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
219 |
'module:\ntelnetlib.unknownattr = %s' % f(unknownattr) |
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
220 |
) |
30022
26a4e46af2bc
demandimport: error out early on missing attribute of non package (issue5373)
Yuya Nishihara <yuya@tcha.org>
parents:
29981
diff
changeset
|
221 |
except ImportError as inst: |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
222 |
assert rsub(r"'", '', str(inst)).startswith( |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
223 |
'cannot import name unknownattr' |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
224 |
) |
30647
1914db1b7d9e
demandimport: do not raise ImportError for unknown item in fromlist
Yuya Nishihara <yuya@tcha.org>
parents:
30022
diff
changeset
|
225 |
|
37964
1d0610fdd63b
tests: migrate demandimport.py away from deprecated `util` module symbols
Matt Harbison <matt_harbison@yahoo.com>
parents:
36251
diff
changeset
|
226 |
from mercurial import util |
1d0610fdd63b
tests: migrate demandimport.py away from deprecated `util` module symbols
Matt Harbison <matt_harbison@yahoo.com>
parents:
36251
diff
changeset
|
227 |
|
30647
1914db1b7d9e
demandimport: do not raise ImportError for unknown item in fromlist
Yuya Nishihara <yuya@tcha.org>
parents:
30022
diff
changeset
|
228 |
# Unlike the import statement, __import__() function should not raise |
1914db1b7d9e
demandimport: do not raise ImportError for unknown item in fromlist
Yuya Nishihara <yuya@tcha.org>
parents:
30022
diff
changeset
|
229 |
# ImportError even if fromlist has an unknown item |
1914db1b7d9e
demandimport: do not raise ImportError for unknown item in fromlist
Yuya Nishihara <yuya@tcha.org>
parents:
30022
diff
changeset
|
230 |
# (see Python/import.c:import_module_level() and ensure_fromlist()) |
41507
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
231 |
assert 'zipfile' not in sys.modules |
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
232 |
zipfileimp = __import__('zipfile', globals(), locals(), ['unknownattr']) |
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
233 |
assert f(zipfileimp) == "<module 'zipfile' from '?'>", f(zipfileimp) |
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
234 |
assert not util.safehasattr(zipfileimp, 'unknownattr') |