Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: tools/telemetry/third_party/modulegraph/modulegraph_tests/test_pep420_nspkg.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 """
2 Tests that deal with pep420 namespace packages.
3
4 PEP 420 is new in Python 3.3
5 """
6 import os
7 import shutil
8 import sys
9 import subprocess
10 import textwrap
11
12 if sys.version_info[:2] <= (2,6):
13 import unittest2 as unittest
14 else:
15 import unittest
16
17 from modulegraph import modulegraph
18
19 gRootDir = os.path.dirname(os.path.abspath(__file__))
20 gSrcDir = os.path.join(gRootDir, 'testpkg-pep420-namespace')
21
22 if sys.version_info[:2] >= (3,3):
23
24 class TestPythonBehaviour (unittest.TestCase):
25 def importModule(self, name):
26 test_dir1 = os.path.join(gSrcDir, 'path1')
27 test_dir2 = os.path.join(gSrcDir, 'path2')
28 if '.' in name:
29 script = textwrap.dedent("""\
30 import site
31 site.addsitedir(%r)
32 site.addsitedir(%r)
33 try:
34 import %s
35 except ImportError:
36 import %s
37 print (%s.__name__)
38 """) %(test_dir1, test_dir2, name, name.rsplit('.', 1)[0], name)
39 else:
40 script = textwrap.dedent("""\
41 import site
42 site.addsitedir(%r)
43 site.addsitedir(%r)
44 import %s
45 print (%s.__name__)
46 """) %(test_dir1, test_dir2, name, name)
47
48 p = subprocess.Popen([sys.executable, '-c', script],
49 stdout=subprocess.PIPE,
50 stderr=subprocess.STDOUT,
51 cwd=os.path.join(
52 os.path.dirname(os.path.abspath(__file__)),
53 'testpkg-relimport'),
54 )
55 data = p.communicate()[0]
56 if sys.version_info[0] != 2:
57 data = data.decode('UTF-8')
58 data = data.strip()
59 if data.endswith(' refs]'):
60 data = data.rsplit('\n', 1)[0].strip()
61
62 sts = p.wait()
63
64 if sts != 0:
65 print (data)
66 self.fail("import of %r failed"%(name,))
67
68 return data
69
70 def testToplevel(self):
71 m = self.importModule('package.sub1')
72 self.assertEqual(m, 'package.sub1')
73
74 m = self.importModule('package.sub2')
75 self.assertEqual(m, 'package.sub2')
76
77 def testSub(self):
78 m = self.importModule('package.subpackage.sub')
79 self.assertEqual(m, 'package.subpackage.sub')
80
81 m = self.importModule('package.nspkg.mod')
82 self.assertEqual(m, 'package.nspkg.mod')
83
84 class TestModuleGraphImport (unittest.TestCase):
85 if not hasattr(unittest.TestCase, 'assertIsInstance'):
86 def assertIsInstance(self, value, types):
87 if not isinstance(value, types):
88 self.fail("%r is not an instance of %r", value, types)
89
90 def setUp(self):
91 self.mf = modulegraph.ModuleGraph(path=[
92 os.path.join(gSrcDir, 'path1'),
93 os.path.join(gSrcDir, 'path2'),
94 ] + sys.path)
95
96
97 def testRootPkg(self):
98 self.mf.import_hook('package')
99
100 node = self.mf.findNode('package')
101 self.assertIsInstance(node, modulegraph.NamespacePackage)
102 self.assertEqual(node.identifier, 'package')
103 self.assertEqual(node.filename, '-')
104
105 def testRootPkgModule(self):
106 self.mf.import_hook('package.sub1')
107
108 node = self.mf.findNode('package.sub1')
109 self.assertIsInstance(node, modulegraph.SourceModule)
110 self.assertEqual(node.identifier, 'package.sub1')
111
112 self.mf.import_hook('package.sub2')
113 node = self.mf.findNode('package.sub2')
114 self.assertIsInstance(node, modulegraph.SourceModule)
115 self.assertEqual(node.identifier, 'package.sub2')
116
117 def testSubRootPkgModule(self):
118 self.mf.import_hook('package.subpackage.sub')
119
120 node = self.mf.findNode('package.subpackage.sub')
121 self.assertIsInstance(node, modulegraph.SourceModule)
122 self.assertEqual(node.identifier, 'package.subpackage.sub')
123
124 node = self.mf.findNode('package')
125 self.assertIsInstance(node, modulegraph.NamespacePackage)
126
127 self.mf.import_hook('package.nspkg.mod')
128 node = self.mf.findNode('package.nspkg.mod')
129 self.assertIsInstance(node, modulegraph.SourceModule)
130 self.assertEqual(node.identifier, 'package.nspkg.mod')
131
132 else:
133 # Check that PEP 420 is not implemented in python 3.2 and earlier
134 # (and that modulegraph also doesn't do this)
135
136 class TestPythonBehaviour (unittest.TestCase):
137 def importModule(self, name):
138 test_dir1 = os.path.join(gSrcDir, 'path1')
139 test_dir2 = os.path.join(gSrcDir, 'path2')
140 if '.' in name:
141 script = textwrap.dedent("""\
142 import site
143 site.addsitedir(%r)
144 site.addsitedir(%r)
145 try:
146 import %s
147 except ImportError:
148 import %s
149 print (%s.__name__)
150 """) %(test_dir1, test_dir2, name, name.rsplit('.', 1)[0], name)
151 else:
152 script = textwrap.dedent("""\
153 import site
154 site.addsitedir(%r)
155 site.addsitedir(%r)
156 import %s
157 print (%s.__name__)
158 """) %(test_dir1, test_dir2, name, name)
159
160 p = subprocess.Popen([sys.executable, '-c', script],
161 stdout=subprocess.PIPE,
162 stderr=subprocess.STDOUT,
163 cwd=os.path.join(
164 os.path.dirname(os.path.abspath(__file__)),
165 'testpkg-relimport'),
166 )
167 data = p.communicate()[0]
168 if sys.version_info[0] != 2:
169 data = data.decode('UTF-8')
170 data = data.strip()
171 if data.endswith(' refs]'):
172 data = data.rsplit('\n', 1)[0].strip()
173
174 sts = p.wait()
175
176 if sts != 0:
177 raise ImportError(name)
178
179 return data
180
181 def testToplevel(self):
182 m = self.importModule('sys')
183 self.assertEqual(m, 'sys')
184
185 self.assertRaises(ImportError, self.importModule, 'package.sub1')
186 self.assertRaises(ImportError, self.importModule, 'package.sub2')
187
188 def testSub(self):
189 self.assertRaises(ImportError, self.importModule, 'package.subpackag e.sub')
190
191 class TestModuleGraphImport (unittest.TestCase):
192 if not hasattr(unittest.TestCase, 'assertIsInstance'):
193 def assertIsInstance(self, value, types):
194 if not isinstance(value, types):
195 self.fail("%r is not an instance of %r", value, types)
196
197 def setUp(self):
198 self.mf = modulegraph.ModuleGraph(path=[
199 os.path.join(gSrcDir, 'path1'),
200 os.path.join(gSrcDir, 'path2'),
201 ] + sys.path)
202
203
204 def testRootPkg(self):
205 self.assertRaises(ImportError, self.mf.import_hook, 'package')
206
207 node = self.mf.findNode('package')
208 self.assertIs(node, None)
209
210 def testRootPkgModule(self):
211 self.assertRaises(ImportError, self.mf.import_hook, 'package.sub1')
212
213 node = self.mf.findNode('package.sub1')
214 self.assertIs(node, None)
215
216 node = self.mf.findNode('package.sub2')
217 self.assertIs(node, None)
218
219 if __name__ == "__main__":
220 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698