annotate tests/test-demandimport.py @ 44115:e1b8b4e4f496

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