|
8 | 8 | import sys |
9 | 9 | ModuleType = type(sys) |
10 | 10 |
|
| 11 | + |
11 | 12 | class FullLoader: |
12 | | - @classmethod |
13 | | - def module_repr(cls, m): |
14 | | - return "<module '{}' (crafted)>".format(m.__name__) |
| 13 | + pass |
| 14 | + |
15 | 15 |
|
16 | 16 | class BareLoader: |
17 | 17 | pass |
18 | 18 |
|
19 | 19 |
|
20 | 20 | class ModuleTests(unittest.TestCase): |
21 | | - |
22 | 21 | def test_uninitialized(self): |
23 | 22 | # An uninitialized module has no __dict__ or __name__, |
24 | 23 | # and __doc__ is None |
@@ -128,66 +127,60 @@ def test_weakref(self): |
128 | 127 | gc_collect() |
129 | 128 | self.assertIs(wr(), None) |
130 | 129 |
|
131 | | - # TODO: RUSTPYTHON |
132 | | - @unittest.expectedFailure |
133 | 130 | def test_module_getattr(self): |
134 | | - import test.good_getattr as gga |
135 | | - from test.good_getattr import test |
| 131 | + import test.test_module.good_getattr as gga |
| 132 | + from test.test_module.good_getattr import test |
136 | 133 | self.assertEqual(test, "There is test") |
137 | 134 | self.assertEqual(gga.x, 1) |
138 | 135 | self.assertEqual(gga.y, 2) |
139 | 136 | with self.assertRaisesRegex(AttributeError, |
140 | 137 | "Deprecated, use whatever instead"): |
141 | 138 | gga.yolo |
142 | 139 | self.assertEqual(gga.whatever, "There is whatever") |
143 | | - del sys.modules['test.good_getattr'] |
| 140 | + del sys.modules['test.test_module.good_getattr'] |
144 | 141 |
|
145 | | - # TODO: RUSTPYTHON |
146 | | - @unittest.expectedFailure |
147 | 142 | def test_module_getattr_errors(self): |
148 | | - import test.bad_getattr as bga |
149 | | - from test import bad_getattr2 |
| 143 | + import test.test_module.bad_getattr as bga |
| 144 | + from test.test_module import bad_getattr2 |
150 | 145 | self.assertEqual(bga.x, 1) |
151 | 146 | self.assertEqual(bad_getattr2.x, 1) |
152 | 147 | with self.assertRaises(TypeError): |
153 | 148 | bga.nope |
154 | 149 | with self.assertRaises(TypeError): |
155 | 150 | bad_getattr2.nope |
156 | | - del sys.modules['test.bad_getattr'] |
157 | | - if 'test.bad_getattr2' in sys.modules: |
158 | | - del sys.modules['test.bad_getattr2'] |
| 151 | + del sys.modules['test.test_module.bad_getattr'] |
| 152 | + if 'test.test_module.bad_getattr2' in sys.modules: |
| 153 | + del sys.modules['test.test_module.bad_getattr2'] |
159 | 154 |
|
160 | 155 | # TODO: RUSTPYTHON |
161 | 156 | @unittest.expectedFailure |
162 | 157 | def test_module_dir(self): |
163 | | - import test.good_getattr as gga |
| 158 | + import test.test_module.good_getattr as gga |
164 | 159 | self.assertEqual(dir(gga), ['a', 'b', 'c']) |
165 | | - del sys.modules['test.good_getattr'] |
| 160 | + del sys.modules['test.test_module.good_getattr'] |
166 | 161 |
|
167 | 162 | # TODO: RUSTPYTHON |
168 | 163 | @unittest.expectedFailure |
169 | 164 | def test_module_dir_errors(self): |
170 | | - import test.bad_getattr as bga |
171 | | - from test import bad_getattr2 |
| 165 | + import test.test_module.bad_getattr as bga |
| 166 | + from test.test_module import bad_getattr2 |
172 | 167 | with self.assertRaises(TypeError): |
173 | 168 | dir(bga) |
174 | 169 | with self.assertRaises(TypeError): |
175 | 170 | dir(bad_getattr2) |
176 | | - del sys.modules['test.bad_getattr'] |
177 | | - if 'test.bad_getattr2' in sys.modules: |
178 | | - del sys.modules['test.bad_getattr2'] |
| 171 | + del sys.modules['test.test_module.bad_getattr'] |
| 172 | + if 'test.test_module.bad_getattr2' in sys.modules: |
| 173 | + del sys.modules['test.test_module.bad_getattr2'] |
179 | 174 |
|
180 | | - # TODO: RUSTPYTHON |
181 | | - @unittest.expectedFailure |
182 | 175 | def test_module_getattr_tricky(self): |
183 | | - from test import bad_getattr3 |
| 176 | + from test.test_module import bad_getattr3 |
184 | 177 | # these lookups should not crash |
185 | 178 | with self.assertRaises(AttributeError): |
186 | 179 | bad_getattr3.one |
187 | 180 | with self.assertRaises(AttributeError): |
188 | 181 | bad_getattr3.delgetattr |
189 | | - if 'test.bad_getattr3' in sys.modules: |
190 | | - del sys.modules['test.bad_getattr3'] |
| 182 | + if 'test.test_module.bad_getattr3' in sys.modules: |
| 183 | + del sys.modules['test.test_module.bad_getattr3'] |
191 | 184 |
|
192 | 185 | def test_module_repr_minimal(self): |
193 | 186 | # reprs when modules have no __file__, __name__, or __loader__ |
@@ -249,23 +242,21 @@ def test_module_repr_with_full_loader(self): |
249 | 242 | # Yes, a class not an instance. |
250 | 243 | m.__loader__ = FullLoader |
251 | 244 | self.assertEqual( |
252 | | - repr(m), "<module 'foo' (crafted)>") |
| 245 | + repr(m), f"<module 'foo' (<class '{__name__}.FullLoader'>)>") |
253 | 246 |
|
254 | 247 | def test_module_repr_with_bare_loader_and_filename(self): |
255 | | - # Because the loader has no module_repr(), use the file name. |
256 | 248 | m = ModuleType('foo') |
257 | 249 | # Yes, a class not an instance. |
258 | 250 | m.__loader__ = BareLoader |
259 | 251 | m.__file__ = '/tmp/foo.py' |
260 | 252 | self.assertEqual(repr(m), "<module 'foo' from '/tmp/foo.py'>") |
261 | 253 |
|
262 | 254 | def test_module_repr_with_full_loader_and_filename(self): |
263 | | - # Even though the module has an __file__, use __loader__.module_repr() |
264 | 255 | m = ModuleType('foo') |
265 | 256 | # Yes, a class not an instance. |
266 | 257 | m.__loader__ = FullLoader |
267 | 258 | m.__file__ = '/tmp/foo.py' |
268 | | - self.assertEqual(repr(m), "<module 'foo' (crafted)>") |
| 259 | + self.assertEqual(repr(m), "<module 'foo' from '/tmp/foo.py'>") |
269 | 260 |
|
270 | 261 | def test_module_repr_builtin(self): |
271 | 262 | self.assertEqual(repr(sys), "<module 'sys' (built-in)>") |
|
0 commit comments