Mercurial > hg
annotate tests/test-demandimport.py @ 51316:178e50edb4f8
changelog: stop useless enforcing split at the end of transaction
Changelogs are no longer created inline, and existing changelogs are
automatically split. Since we now enforce splitting at the start of any write,
we don't need to enforce splitting at the end of the transaction.
This has the nice side effect of killing the only user of "side_write".
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 11 Jan 2024 16:35:52 +0100 |
parents | d718eddf01d9 |
children | be227c60a3e0 |
rev | line source |
---|---|
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 |