Mercurial > hg
annotate tests/test-demandimport.py @ 43644:e01e0641f18a
cmdutil: use field names instead of field numbers on scmutil.status
As part of my pytype adventures I want to make scmutil.status no longer a
subclass of tuple. This is part of that process.
Differential Revision: https://phab.mercurial-scm.org/D7396
author | Augie Fackler <augie@google.com> |
---|---|
date | Thu, 14 Nov 2019 15:26:17 -0500 |
parents | 2372284d9457 |
children | c5e0a9b97b8a |
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') |