author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
Fri, 12 Apr 2024 14:21:14 +0100 | |
branch | stable |
changeset 51568 | 2a89d2f6336f |
parent 50928 | d718eddf01d9 |
child 51744 | be227c60a3e0 |
child 52010 | 37f693975cbc |
permissions | -rw-r--r-- |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
1 |
from mercurial import demandimport |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
2 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
3 |
demandimport.enable() |
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
4 |
|
23643
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
5 |
import os |
29868
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
6 |
import subprocess |
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
7 |
import sys |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
8 |
import types |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
9 |
|
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
10 |
# Don't import pycompat because it has too many side-effects. |
49941
643312047e44
tests: os module is frozen in Python 3.11 (issue6786)
Anton Shestakov <av6@dwimlabs.net>
parents:
48875
diff
changeset
|
11 |
ispy311 = (sys.version_info.major, sys.version_info.minor) >= (3, 11) |
29868
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
12 |
|
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
13 |
# Only run if demandimport is allowed |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
14 |
if subprocess.call( |
46226
0826d684a1b5
test: replace a many occurence of `python` with `$PYTHON`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45396
diff
changeset
|
15 |
[os.environ['PYTHON'], '%s/hghave' % os.environ['TESTDIR'], 'demandimport'] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
16 |
): |
29868
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
17 |
sys.exit(80) |
4b50e1f922a0
tests: skip demandimport if disabled
timeless <timeless@mozdev.org>
parents:
28948
diff
changeset
|
18 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
19 |
# 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
|
20 |
if sys.flags.optimize: |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
21 |
sys.exit(80) |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
22 |
|
44117
c5e0a9b97b8a
hgdemandimport: disable on Python 3.5
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43076
diff
changeset
|
23 |
# The demand importer doesn't work on Python 3.5. |
c5e0a9b97b8a
hgdemandimport: disable on Python 3.5
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43076
diff
changeset
|
24 |
if sys.version_info[0:2] == (3, 5): |
c5e0a9b97b8a
hgdemandimport: disable on Python 3.5
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43076
diff
changeset
|
25 |
sys.exit(80) |
c5e0a9b97b8a
hgdemandimport: disable on Python 3.5
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43076
diff
changeset
|
26 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
27 |
from importlib.util import _LazyModule |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
28 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
29 |
try: |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
30 |
from importlib.util import _Module as moduletype |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
31 |
except ImportError: |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
32 |
moduletype = types.ModuleType |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
33 |
|
23643
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
34 |
if os.name != 'nt': |
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
35 |
try: |
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
36 |
import distutils.msvc9compiler |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
37 |
|
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
38 |
print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
39 |
'distutils.msvc9compiler needs to be an immediate ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
40 |
'importerror on non-windows platforms' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
41 |
) |
23643
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
42 |
distutils.msvc9compiler |
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
43 |
except ImportError: |
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
44 |
pass |
2205d00b6d2b
demandimport: blacklist distutils.msvc9compiler (issue4475)
Augie Fackler <raf@durin42.com>
parents:
21025
diff
changeset
|
45 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
46 |
import re |
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
47 |
|
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
48 |
rsub = re.sub |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
49 |
|
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
50 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
51 |
def f(obj): |
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
52 |
l = repr(obj) |
4802
3a4310e8fe72
test-demandimport: match upper-case hexadecimal
Patrick Mezard <pmezard@gmail.com>
parents:
4631
diff
changeset
|
53 |
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
|
54 |
l = rsub("from '.*'", "from '?'", l) |
13083
c0290fc6b486
test-demandimport.py: PyPy support
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12865
diff
changeset
|
55 |
l = rsub("'<[a-z]*>'", "'<whatever>'", l) |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
56 |
return l |
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
57 |
|
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41507
diff
changeset
|
58 |
|
36237
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
59 |
demandimport.disable() |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
60 |
os.environ['HGDEMANDIMPORT'] = 'disable' |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
61 |
# 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
|
62 |
demandimport.enable() |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
63 |
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
|
64 |
|
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
65 |
# 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
|
66 |
# functions changes behavior of the demand importer. |
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
67 |
assert not isinstance(node, _LazyModule) |
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
68 |
|
36237
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
69 |
# now enable it for real |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
70 |
del os.environ['HGDEMANDIMPORT'] |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
71 |
demandimport.enable() |
b39f0fdb0338
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
Martin von Zweigbergk <martinvonz@google.com>
parents:
33918
diff
changeset
|
72 |
|
36251
c2c5f9f6fa21
tests: avoid referring to pvec in demandimport test
Martin von Zweigbergk <martinvonz@google.com>
parents:
36237
diff
changeset
|
73 |
# 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
|
74 |
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
|
75 |
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
|
76 |
|
49972
1bd33932713d
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
diff
changeset
|
77 |
assert isinstance(errorproxy, _LazyModule) |
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
78 |
assert f(errorproxy) == "<module 'mercurial.error' from '?'>", f(errorproxy) |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
79 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
80 |
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
|
81 |
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
|
82 |
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
|
83 |
|
36251
c2c5f9f6fa21
tests: avoid referring to pvec in demandimport test
Martin von Zweigbergk <martinvonz@google.com>
parents:
36237
diff
changeset
|
84 |
# __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
|
85 |
# resolved |
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
86 |
name = errorproxy.__dict__['__name__'] |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
87 |
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
|
88 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
89 |
assert not isinstance(errorproxy, _LazyModule) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
90 |
assert f(errorproxy) == "<module 'mercurial.error' from '?'>", f(errorproxy) |
36251
c2c5f9f6fa21
tests: avoid referring to pvec in demandimport test
Martin von Zweigbergk <martinvonz@google.com>
parents:
36237
diff
changeset
|
91 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
92 |
import os |
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
93 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
94 |
assert not isinstance(os, _LazyModule) |
49972
1bd33932713d
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
diff
changeset
|
95 |
if ispy311: |
1bd33932713d
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
diff
changeset
|
96 |
assert f(os) == "<module 'os' (frozen)>", f(os) |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
97 |
else: |
49972
1bd33932713d
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
diff
changeset
|
98 |
assert f(os) == "<module 'os' from '?'>", f(os) |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
99 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
100 |
assert f(os.system) == '<built-in function system>', f(os.system) |
49941
643312047e44
tests: os module is frozen in Python 3.11 (issue6786)
Anton Shestakov <av6@dwimlabs.net>
parents:
48875
diff
changeset
|
101 |
if ispy311: |
643312047e44
tests: os module is frozen in Python 3.11 (issue6786)
Anton Shestakov <av6@dwimlabs.net>
parents:
48875
diff
changeset
|
102 |
assert f(os) == "<module 'os' (frozen)>", f(os) |
643312047e44
tests: os module is frozen in Python 3.11 (issue6786)
Anton Shestakov <av6@dwimlabs.net>
parents:
48875
diff
changeset
|
103 |
else: |
643312047e44
tests: os module is frozen in Python 3.11 (issue6786)
Anton Shestakov <av6@dwimlabs.net>
parents:
48875
diff
changeset
|
104 |
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
|
105 |
|
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
106 |
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
|
107 |
from mercurial.utils import procutil |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
108 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
109 |
assert isinstance(procutil, _LazyModule) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
110 |
assert f(procutil) == "<module 'mercurial.utils.procutil' from '?'>", f( |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
111 |
procutil |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
112 |
) |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
113 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
114 |
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
|
115 |
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
|
116 |
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
|
117 |
procutil |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
118 |
) |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
119 |
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
|
120 |
|
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
121 |
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
|
122 |
from mercurial import hgweb |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
123 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
124 |
assert isinstance(hgweb, _LazyModule) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
125 |
assert f(hgweb) == "<module 'mercurial.hgweb' from '?'>", f(hgweb) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
126 |
assert isinstance(hgweb.hgweb_mod, _LazyModule) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
127 |
assert f(hgweb.hgweb_mod) == "<module 'mercurial.hgweb.hgweb_mod' from '?'>", f( |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
128 |
hgweb.hgweb_mod |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
129 |
) |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
130 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
131 |
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
|
132 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
133 |
import re as fred |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
134 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
135 |
assert not isinstance(fred, _LazyModule) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
136 |
assert f(fred) == "<module 're' from '?'>" |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
137 |
|
32447
252d2260c74e
demandimport: look for 'mod' suffix as alternative name for module reference
Yuya Nishihara <yuya@tcha.org>
parents:
30647
diff
changeset
|
138 |
import re as remod |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
139 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
140 |
assert not isinstance(remod, _LazyModule) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
141 |
assert f(remod) == "<module 're' from '?'>" |
32447
252d2260c74e
demandimport: look for 'mod' suffix as alternative name for module reference
Yuya Nishihara <yuya@tcha.org>
parents:
30647
diff
changeset
|
142 |
|
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
143 |
import sys as re |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
144 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
145 |
assert not isinstance(re, _LazyModule) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
146 |
assert f(re) == "<module 'sys' (built-in)>" |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
147 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
148 |
assert not isinstance(fred, _LazyModule) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
149 |
assert f(fred) == "<module 're' from '?'>", f(fred) |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
150 |
|
41505
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
151 |
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
|
152 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
153 |
assert not isinstance(fred, _LazyModule) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
154 |
assert f(fred) == "<module 're' from '?'>", f(fred) |
4631
e3afa670e484
demandimport: fix issue579 and add a test
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
155 |
|
32447
252d2260c74e
demandimport: look for 'mod' suffix as alternative name for module reference
Yuya Nishihara <yuya@tcha.org>
parents:
30647
diff
changeset
|
156 |
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
|
157 |
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
|
158 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
159 |
assert not isinstance(re, _LazyModule) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
160 |
assert f(re) == "<module 'sys' (built-in)>" |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
161 |
assert f(type(re.stderr)) == "<class '_io.TextIOWrapper'>", f(type(re.stderr)) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
162 |
assert f(re) == "<module 'sys' (built-in)>" |
21025
54af51c18c4c
demandimport: make it possible to disable by setting HGDEMANDIMPORT=disable
Mads Kiilerich <madski@unity3d.com>
parents:
13083
diff
changeset
|
163 |
|
41507
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
164 |
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
|
165 |
import telnetlib |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
166 |
|
49871
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
167 |
assert isinstance(telnetlib, _LazyModule) |
ecde742a5a9d
tests: drop py2 support from test-demandimport.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
49588
diff
changeset
|
168 |
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
|
169 |
|
30022
26a4e46af2bc
demandimport: error out early on missing attribute of non package (issue5373)
Yuya Nishihara <yuya@tcha.org>
parents:
29981
diff
changeset
|
170 |
try: |
41507
30248d6bc057
tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41506
diff
changeset
|
171 |
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
|
172 |
|
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
173 |
assert False, ( |
dffd6a301570
py3: replace print() with assert in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37964
diff
changeset
|
174 |
'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
|
175 |
'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
|
176 |
) |
30022
26a4e46af2bc
demandimport: error out early on missing attribute of non package (issue5373)
Yuya Nishihara <yuya@tcha.org>
parents:
29981
diff
changeset
|
177 |
except ImportError as inst: |
41506
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
178 |
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
|
179 |
'cannot import name unknownattr' |
3e89736b98ce
py3: conditionalize test-demandimport.py for Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41505
diff
changeset
|
180 |
) |
30647
1914db1b7d9e
demandimport: do not raise ImportError for unknown item in fromlist
Yuya Nishihara <yuya@tcha.org>
parents:
30022
diff
changeset
|
181 |
|
1914db1b7d9e
demandimport: do not raise ImportError for unknown item in fromlist
Yuya Nishihara <yuya@tcha.org>
parents:
30022
diff
changeset
|
182 |
# 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
|
183 |
# 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
|
184 |
# (see Python/import.c:import_module_level() and ensure_fromlist()) |
45396
fc8299319ffe
tests: fix test-demandimport.py on Python 3.9
Manuel Jacob <me@manueljacob.de>
parents:
44118
diff
changeset
|
185 |
assert 'ftplib' not in sys.modules |
fc8299319ffe
tests: fix test-demandimport.py on Python 3.9
Manuel Jacob <me@manueljacob.de>
parents:
44118
diff
changeset
|
186 |
zipfileimp = __import__('ftplib', globals(), locals(), ['unknownattr']) |
fc8299319ffe
tests: fix test-demandimport.py on Python 3.9
Manuel Jacob <me@manueljacob.de>
parents:
44118
diff
changeset
|
187 |
assert f(zipfileimp) == "<module 'ftplib' from '?'>", f(zipfileimp) |
50928
d718eddf01d9
safehasattr: drop usage in favor of hasattr
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49972
diff
changeset
|
188 |
assert not hasattr(zipfileimp, 'unknownattr') |
49588
7236f11db0c3
demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents:
48875
diff
changeset
|
189 |
|
7236f11db0c3
demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents:
48875
diff
changeset
|
190 |
|
7236f11db0c3
demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents:
48875
diff
changeset
|
191 |
# test deactivation for issue6725 |
7236f11db0c3
demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents:
48875
diff
changeset
|
192 |
del sys.modules['telnetlib'] |
7236f11db0c3
demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents:
48875
diff
changeset
|
193 |
with demandimport.deactivated(): |
7236f11db0c3
demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents:
48875
diff
changeset
|
194 |
import telnetlib |
7236f11db0c3
demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents:
48875
diff
changeset
|
195 |
assert telnetlib.__loader__ == telnetlib.__spec__.loader |
7236f11db0c3
demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents:
48875
diff
changeset
|
196 |
assert telnetlib.__loader__.get_resource_reader |