annotate tests/test-demandimport.py @ 50330:eb07591825fa stable

rhg: show a bug in the rust implementation of path_encode introduced recently In commit 96d31efd21f7 I did a refactoring where I dropped a chunk of code by accident, thus introducing a bug. This commit adds a test demonstrating that bug.
author Arseniy Alekseyev <aalekseyev@janestreet.com>
date Fri, 24 Mar 2023 19:01:03 +0000
parents 1bd33932713d
children d718eddf01d9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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>
parents: 49871 49942
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>
parents: 49871 49942
diff changeset
95 if ispy311:
1bd33932713d branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49871 49942
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>
parents: 49871 49942
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
37964
1d0610fdd63b tests: migrate demandimport.py away from deprecated `util` module symbols
Matt Harbison <matt_harbison@yahoo.com>
parents: 36251
diff changeset
182 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
183
30647
1914db1b7d9e demandimport: do not raise ImportError for unknown item in fromlist
Yuya Nishihara <yuya@tcha.org>
parents: 30022
diff changeset
184 # 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
185 # 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
186 # (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
187 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
188 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
189 assert f(zipfileimp) == "<module 'ftplib' from '?'>", f(zipfileimp)
41507
30248d6bc057 tests: use unimported modules in test-demandimport.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41506
diff changeset
190 assert not util.safehasattr(zipfileimp, 'unknownattr')
49588
7236f11db0c3 demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents: 48875
diff changeset
191
7236f11db0c3 demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents: 48875
diff changeset
192
7236f11db0c3 demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents: 48875
diff changeset
193 # test deactivation for issue6725
7236f11db0c3 demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents: 48875
diff changeset
194 del sys.modules['telnetlib']
7236f11db0c3 demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents: 48875
diff changeset
195 with demandimport.deactivated():
7236f11db0c3 demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents: 48875
diff changeset
196 import telnetlib
7236f11db0c3 demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents: 48875
diff changeset
197 assert telnetlib.__loader__ == telnetlib.__spec__.loader
7236f11db0c3 demandimport: ensure lazyloaderex sets loader attributes (issue6725)
Jason R. Coombs <jaraco@jaraco.com>
parents: 48875
diff changeset
198 assert telnetlib.__loader__.get_resource_reader