python (3.12.0)
1 from test.test_importlib import util as test_util
2
3 init = test_util.import_importlib('importlib')
4 machinery = test_util.import_importlib('importlib.machinery')
5 util = test_util.import_importlib('importlib.util')
6
7 import os.path
8 import pathlib
9 from test.support.import_helper import CleanImport
10 import unittest
11 import sys
12 import warnings
13
14
15
16 class ESC[4;38;5;81mTestLoader:
17
18 def __init__(self, path=None, is_package=None):
19 self.path = path
20 self.package = is_package
21
22 def __repr__(self):
23 return '<TestLoader object>'
24
25 def __getattr__(self, name):
26 if name == 'get_filename' and self.path is not None:
27 return self._get_filename
28 if name == 'is_package':
29 return self._is_package
30 raise AttributeError(name)
31
32 def _get_filename(self, name):
33 return self.path
34
35 def _is_package(self, name):
36 return self.package
37
38 def create_module(self, spec):
39 return None
40
41
42 class ESC[4;38;5;81mNewLoader(ESC[4;38;5;149mTestLoader):
43
44 EGGS = 1
45
46 def exec_module(self, module):
47 module.eggs = self.EGGS
48
49
50 class ESC[4;38;5;81mModuleSpecTests:
51
52 def setUp(self):
53 self.name = 'spam'
54 self.path = 'spam.py'
55 self.cached = self.util.cache_from_source(self.path)
56 self.loader = TestLoader()
57 self.spec = self.machinery.ModuleSpec(self.name, self.loader)
58 self.loc_spec = self.machinery.ModuleSpec(self.name, self.loader,
59 origin=self.path)
60 self.loc_spec._set_fileattr = True
61
62 def test_default(self):
63 spec = self.machinery.ModuleSpec(self.name, self.loader)
64
65 self.assertEqual(spec.name, self.name)
66 self.assertEqual(spec.loader, self.loader)
67 self.assertIs(spec.origin, None)
68 self.assertIs(spec.loader_state, None)
69 self.assertIs(spec.submodule_search_locations, None)
70 self.assertIs(spec.cached, None)
71 self.assertFalse(spec.has_location)
72
73 def test_default_no_loader(self):
74 spec = self.machinery.ModuleSpec(self.name, None)
75
76 self.assertEqual(spec.name, self.name)
77 self.assertIs(spec.loader, None)
78 self.assertIs(spec.origin, None)
79 self.assertIs(spec.loader_state, None)
80 self.assertIs(spec.submodule_search_locations, None)
81 self.assertIs(spec.cached, None)
82 self.assertFalse(spec.has_location)
83
84 def test_default_is_package_false(self):
85 spec = self.machinery.ModuleSpec(self.name, self.loader,
86 is_package=False)
87
88 self.assertEqual(spec.name, self.name)
89 self.assertEqual(spec.loader, self.loader)
90 self.assertIs(spec.origin, None)
91 self.assertIs(spec.loader_state, None)
92 self.assertIs(spec.submodule_search_locations, None)
93 self.assertIs(spec.cached, None)
94 self.assertFalse(spec.has_location)
95
96 def test_default_is_package_true(self):
97 spec = self.machinery.ModuleSpec(self.name, self.loader,
98 is_package=True)
99
100 self.assertEqual(spec.name, self.name)
101 self.assertEqual(spec.loader, self.loader)
102 self.assertIs(spec.origin, None)
103 self.assertIs(spec.loader_state, None)
104 self.assertEqual(spec.submodule_search_locations, [])
105 self.assertIs(spec.cached, None)
106 self.assertFalse(spec.has_location)
107
108 def test_has_location_setter(self):
109 spec = self.machinery.ModuleSpec(self.name, self.loader,
110 origin='somewhere')
111 self.assertFalse(spec.has_location)
112 spec.has_location = True
113 self.assertTrue(spec.has_location)
114
115 def test_equality(self):
116 other = type(sys.implementation)(name=self.name,
117 loader=self.loader,
118 origin=None,
119 submodule_search_locations=None,
120 has_location=False,
121 cached=None,
122 )
123
124 self.assertTrue(self.spec == other)
125
126 def test_equality_location(self):
127 other = type(sys.implementation)(name=self.name,
128 loader=self.loader,
129 origin=self.path,
130 submodule_search_locations=None,
131 has_location=True,
132 cached=self.cached,
133 )
134
135 self.assertEqual(self.loc_spec, other)
136
137 def test_inequality(self):
138 other = type(sys.implementation)(name='ham',
139 loader=self.loader,
140 origin=None,
141 submodule_search_locations=None,
142 has_location=False,
143 cached=None,
144 )
145
146 self.assertNotEqual(self.spec, other)
147
148 def test_inequality_incomplete(self):
149 other = type(sys.implementation)(name=self.name,
150 loader=self.loader,
151 )
152
153 self.assertNotEqual(self.spec, other)
154
155 def test_package(self):
156 spec = self.machinery.ModuleSpec('spam.eggs', self.loader)
157
158 self.assertEqual(spec.parent, 'spam')
159
160 def test_package_is_package(self):
161 spec = self.machinery.ModuleSpec('spam.eggs', self.loader,
162 is_package=True)
163
164 self.assertEqual(spec.parent, 'spam.eggs')
165
166 # cached
167
168 def test_cached_set(self):
169 before = self.spec.cached
170 self.spec.cached = 'there'
171 after = self.spec.cached
172
173 self.assertIs(before, None)
174 self.assertEqual(after, 'there')
175
176 def test_cached_no_origin(self):
177 spec = self.machinery.ModuleSpec(self.name, self.loader)
178
179 self.assertIs(spec.cached, None)
180
181 def test_cached_with_origin_not_location(self):
182 spec = self.machinery.ModuleSpec(self.name, self.loader,
183 origin=self.path)
184
185 self.assertIs(spec.cached, None)
186
187 def test_cached_source(self):
188 expected = self.util.cache_from_source(self.path)
189
190 self.assertEqual(self.loc_spec.cached, expected)
191
192 def test_cached_source_unknown_suffix(self):
193 self.loc_spec.origin = 'spam.spamspamspam'
194
195 self.assertIs(self.loc_spec.cached, None)
196
197 def test_cached_source_missing_cache_tag(self):
198 original = sys.implementation.cache_tag
199 sys.implementation.cache_tag = None
200 try:
201 cached = self.loc_spec.cached
202 finally:
203 sys.implementation.cache_tag = original
204
205 self.assertIs(cached, None)
206
207 def test_cached_sourceless(self):
208 self.loc_spec.origin = 'spam.pyc'
209
210 self.assertEqual(self.loc_spec.cached, 'spam.pyc')
211
212
213 (Frozen_ModuleSpecTests,
214 Source_ModuleSpecTests
215 ) = test_util.test_both(ModuleSpecTests, util=util, machinery=machinery)
216
217
218 class ESC[4;38;5;81mModuleSpecMethodsTests:
219
220 @property
221 def bootstrap(self):
222 return self.init._bootstrap
223
224 def setUp(self):
225 self.name = 'spam'
226 self.path = 'spam.py'
227 self.cached = self.util.cache_from_source(self.path)
228 self.loader = TestLoader()
229 self.spec = self.machinery.ModuleSpec(self.name, self.loader)
230 self.loc_spec = self.machinery.ModuleSpec(self.name, self.loader,
231 origin=self.path)
232 self.loc_spec._set_fileattr = True
233
234 # exec()
235
236 def test_exec(self):
237 self.spec.loader = NewLoader()
238 module = self.util.module_from_spec(self.spec)
239 sys.modules[self.name] = module
240 self.assertFalse(hasattr(module, 'eggs'))
241 self.bootstrap._exec(self.spec, module)
242
243 self.assertEqual(module.eggs, 1)
244
245 # load()
246
247 def test_load(self):
248 self.spec.loader = NewLoader()
249 with CleanImport(self.spec.name):
250 loaded = self.bootstrap._load(self.spec)
251 installed = sys.modules[self.spec.name]
252
253 self.assertEqual(loaded.eggs, 1)
254 self.assertIs(loaded, installed)
255
256 def test_load_replaced(self):
257 replacement = object()
258 class ESC[4;38;5;81mReplacingLoader(ESC[4;38;5;149mTestLoader):
259 def exec_module(self, module):
260 sys.modules[module.__name__] = replacement
261 self.spec.loader = ReplacingLoader()
262 with CleanImport(self.spec.name):
263 loaded = self.bootstrap._load(self.spec)
264 installed = sys.modules[self.spec.name]
265
266 self.assertIs(loaded, replacement)
267 self.assertIs(installed, replacement)
268
269 def test_load_failed(self):
270 class ESC[4;38;5;81mFailedLoader(ESC[4;38;5;149mTestLoader):
271 def exec_module(self, module):
272 raise RuntimeError
273 self.spec.loader = FailedLoader()
274 with CleanImport(self.spec.name):
275 with self.assertRaises(RuntimeError):
276 loaded = self.bootstrap._load(self.spec)
277 self.assertNotIn(self.spec.name, sys.modules)
278
279 def test_load_failed_removed(self):
280 class ESC[4;38;5;81mFailedLoader(ESC[4;38;5;149mTestLoader):
281 def exec_module(self, module):
282 del sys.modules[module.__name__]
283 raise RuntimeError
284 self.spec.loader = FailedLoader()
285 with CleanImport(self.spec.name):
286 with self.assertRaises(RuntimeError):
287 loaded = self.bootstrap._load(self.spec)
288 self.assertNotIn(self.spec.name, sys.modules)
289
290 def test_load_legacy_attributes_immutable(self):
291 module = object()
292 with warnings.catch_warnings():
293 warnings.simplefilter("ignore", ImportWarning)
294 class ESC[4;38;5;81mImmutableLoader(ESC[4;38;5;149mTestLoader):
295 def load_module(self, name):
296 sys.modules[name] = module
297 return module
298 self.spec.loader = ImmutableLoader()
299 with CleanImport(self.spec.name):
300 loaded = self.bootstrap._load(self.spec)
301
302 self.assertIs(sys.modules[self.spec.name], module)
303
304 # reload()
305
306 def test_reload(self):
307 self.spec.loader = NewLoader()
308 with CleanImport(self.spec.name):
309 loaded = self.bootstrap._load(self.spec)
310 reloaded = self.bootstrap._exec(self.spec, loaded)
311 installed = sys.modules[self.spec.name]
312
313 self.assertEqual(loaded.eggs, 1)
314 self.assertIs(reloaded, loaded)
315 self.assertIs(installed, loaded)
316
317 def test_reload_modified(self):
318 self.spec.loader = NewLoader()
319 with CleanImport(self.spec.name):
320 loaded = self.bootstrap._load(self.spec)
321 loaded.eggs = 2
322 reloaded = self.bootstrap._exec(self.spec, loaded)
323
324 self.assertEqual(loaded.eggs, 1)
325 self.assertIs(reloaded, loaded)
326
327 def test_reload_extra_attributes(self):
328 self.spec.loader = NewLoader()
329 with CleanImport(self.spec.name):
330 loaded = self.bootstrap._load(self.spec)
331 loaded.available = False
332 reloaded = self.bootstrap._exec(self.spec, loaded)
333
334 self.assertFalse(loaded.available)
335 self.assertIs(reloaded, loaded)
336
337 def test_reload_init_module_attrs(self):
338 self.spec.loader = NewLoader()
339 with CleanImport(self.spec.name):
340 loaded = self.bootstrap._load(self.spec)
341 loaded.__name__ = 'ham'
342 del loaded.__loader__
343 del loaded.__package__
344 del loaded.__spec__
345 self.bootstrap._exec(self.spec, loaded)
346
347 self.assertEqual(loaded.__name__, self.spec.name)
348 self.assertIs(loaded.__loader__, self.spec.loader)
349 self.assertEqual(loaded.__package__, self.spec.parent)
350 self.assertIs(loaded.__spec__, self.spec)
351 self.assertFalse(hasattr(loaded, '__path__'))
352 self.assertFalse(hasattr(loaded, '__file__'))
353 self.assertFalse(hasattr(loaded, '__cached__'))
354
355
356 (Frozen_ModuleSpecMethodsTests,
357 Source_ModuleSpecMethodsTests
358 ) = test_util.test_both(ModuleSpecMethodsTests, init=init, util=util,
359 machinery=machinery)
360
361
362 class ESC[4;38;5;81mFactoryTests:
363
364 def setUp(self):
365 self.name = 'spam'
366 self.path = os.path.abspath('spam.py')
367 self.cached = self.util.cache_from_source(self.path)
368 self.loader = TestLoader()
369 self.fileloader = TestLoader(self.path)
370 self.pkgloader = TestLoader(self.path, True)
371
372 # spec_from_loader()
373
374 def test_spec_from_loader_default(self):
375 spec = self.util.spec_from_loader(self.name, self.loader)
376
377 self.assertEqual(spec.name, self.name)
378 self.assertEqual(spec.loader, self.loader)
379 self.assertIs(spec.origin, None)
380 self.assertIs(spec.loader_state, None)
381 self.assertIs(spec.submodule_search_locations, None)
382 self.assertIs(spec.cached, None)
383 self.assertFalse(spec.has_location)
384
385 def test_spec_from_loader_default_with_bad_is_package(self):
386 class ESC[4;38;5;81mLoader:
387 def is_package(self, name):
388 raise ImportError
389 loader = Loader()
390 spec = self.util.spec_from_loader(self.name, loader)
391
392 self.assertEqual(spec.name, self.name)
393 self.assertEqual(spec.loader, loader)
394 self.assertIs(spec.origin, None)
395 self.assertIs(spec.loader_state, None)
396 self.assertIs(spec.submodule_search_locations, None)
397 self.assertIs(spec.cached, None)
398 self.assertFalse(spec.has_location)
399
400 def test_spec_from_loader_origin(self):
401 origin = 'somewhere over the rainbow'
402 spec = self.util.spec_from_loader(self.name, self.loader,
403 origin=origin)
404
405 self.assertEqual(spec.name, self.name)
406 self.assertEqual(spec.loader, self.loader)
407 self.assertIs(spec.origin, origin)
408 self.assertIs(spec.loader_state, None)
409 self.assertIs(spec.submodule_search_locations, None)
410 self.assertIs(spec.cached, None)
411 self.assertFalse(spec.has_location)
412
413 def test_spec_from_loader_is_package_false(self):
414 spec = self.util.spec_from_loader(self.name, self.loader,
415 is_package=False)
416
417 self.assertEqual(spec.name, self.name)
418 self.assertEqual(spec.loader, self.loader)
419 self.assertIs(spec.origin, None)
420 self.assertIs(spec.loader_state, None)
421 self.assertIs(spec.submodule_search_locations, None)
422 self.assertIs(spec.cached, None)
423 self.assertFalse(spec.has_location)
424
425 def test_spec_from_loader_is_package_true(self):
426 spec = self.util.spec_from_loader(self.name, self.loader,
427 is_package=True)
428
429 self.assertEqual(spec.name, self.name)
430 self.assertEqual(spec.loader, self.loader)
431 self.assertIs(spec.origin, None)
432 self.assertIs(spec.loader_state, None)
433 self.assertEqual(spec.submodule_search_locations, [])
434 self.assertIs(spec.cached, None)
435 self.assertFalse(spec.has_location)
436
437 def test_spec_from_loader_origin_and_is_package(self):
438 origin = 'where the streets have no name'
439 spec = self.util.spec_from_loader(self.name, self.loader,
440 origin=origin, is_package=True)
441
442 self.assertEqual(spec.name, self.name)
443 self.assertEqual(spec.loader, self.loader)
444 self.assertIs(spec.origin, origin)
445 self.assertIs(spec.loader_state, None)
446 self.assertEqual(spec.submodule_search_locations, [])
447 self.assertIs(spec.cached, None)
448 self.assertFalse(spec.has_location)
449
450 def test_spec_from_loader_is_package_with_loader_false(self):
451 loader = TestLoader(is_package=False)
452 spec = self.util.spec_from_loader(self.name, loader)
453
454 self.assertEqual(spec.name, self.name)
455 self.assertEqual(spec.loader, loader)
456 self.assertIs(spec.origin, None)
457 self.assertIs(spec.loader_state, None)
458 self.assertIs(spec.submodule_search_locations, None)
459 self.assertIs(spec.cached, None)
460 self.assertFalse(spec.has_location)
461
462 def test_spec_from_loader_is_package_with_loader_true(self):
463 loader = TestLoader(is_package=True)
464 spec = self.util.spec_from_loader(self.name, loader)
465
466 self.assertEqual(spec.name, self.name)
467 self.assertEqual(spec.loader, loader)
468 self.assertIs(spec.origin, None)
469 self.assertIs(spec.loader_state, None)
470 self.assertEqual(spec.submodule_search_locations, [])
471 self.assertIs(spec.cached, None)
472 self.assertFalse(spec.has_location)
473
474 def test_spec_from_loader_default_with_file_loader(self):
475 spec = self.util.spec_from_loader(self.name, self.fileloader)
476
477 self.assertEqual(spec.name, self.name)
478 self.assertEqual(spec.loader, self.fileloader)
479 self.assertEqual(spec.origin, self.path)
480 self.assertIs(spec.loader_state, None)
481 self.assertIs(spec.submodule_search_locations, None)
482 self.assertEqual(spec.cached, self.cached)
483 self.assertTrue(spec.has_location)
484
485 def test_spec_from_loader_is_package_false_with_fileloader(self):
486 spec = self.util.spec_from_loader(self.name, self.fileloader,
487 is_package=False)
488
489 self.assertEqual(spec.name, self.name)
490 self.assertEqual(spec.loader, self.fileloader)
491 self.assertEqual(spec.origin, self.path)
492 self.assertIs(spec.loader_state, None)
493 self.assertIs(spec.submodule_search_locations, None)
494 self.assertEqual(spec.cached, self.cached)
495 self.assertTrue(spec.has_location)
496
497 def test_spec_from_loader_is_package_true_with_fileloader(self):
498 spec = self.util.spec_from_loader(self.name, self.fileloader,
499 is_package=True)
500
501 self.assertEqual(spec.name, self.name)
502 self.assertEqual(spec.loader, self.fileloader)
503 self.assertEqual(spec.origin, self.path)
504 self.assertIs(spec.loader_state, None)
505 self.assertEqual(spec.submodule_search_locations, [os.getcwd()])
506 self.assertEqual(spec.cached, self.cached)
507 self.assertTrue(spec.has_location)
508
509 # spec_from_file_location()
510
511 def test_spec_from_file_location_default(self):
512 spec = self.util.spec_from_file_location(self.name, self.path)
513
514 self.assertEqual(spec.name, self.name)
515 # Need to use a circuitous route to get at importlib.machinery to make
516 # sure the same class object is used in the isinstance() check as
517 # would have been used to create the loader.
518 SourceFileLoader = self.util.spec_from_file_location.__globals__['SourceFileLoader']
519 self.assertIsInstance(spec.loader, SourceFileLoader)
520 self.assertEqual(spec.loader.name, self.name)
521 self.assertEqual(spec.loader.path, self.path)
522 self.assertEqual(spec.origin, self.path)
523 self.assertIs(spec.loader_state, None)
524 self.assertIs(spec.submodule_search_locations, None)
525 self.assertEqual(spec.cached, self.cached)
526 self.assertTrue(spec.has_location)
527
528 def test_spec_from_file_location_path_like_arg(self):
529 spec = self.util.spec_from_file_location(self.name,
530 pathlib.PurePath(self.path))
531 self.assertEqual(spec.origin, self.path)
532
533 def test_spec_from_file_location_default_without_location(self):
534 spec = self.util.spec_from_file_location(self.name)
535
536 self.assertIs(spec, None)
537
538 def test_spec_from_file_location_default_bad_suffix(self):
539 spec = self.util.spec_from_file_location(self.name, 'spam.eggs')
540
541 self.assertIs(spec, None)
542
543 def test_spec_from_file_location_loader_no_location(self):
544 spec = self.util.spec_from_file_location(self.name,
545 loader=self.fileloader)
546
547 self.assertEqual(spec.name, self.name)
548 self.assertEqual(spec.loader, self.fileloader)
549 self.assertEqual(spec.origin, self.path)
550 self.assertIs(spec.loader_state, None)
551 self.assertIs(spec.submodule_search_locations, None)
552 self.assertEqual(spec.cached, self.cached)
553 self.assertTrue(spec.has_location)
554
555 def test_spec_from_file_location_loader_no_location_no_get_filename(self):
556 spec = self.util.spec_from_file_location(self.name,
557 loader=self.loader)
558
559 self.assertEqual(spec.name, self.name)
560 self.assertEqual(spec.loader, self.loader)
561 self.assertEqual(spec.origin, '<unknown>')
562 self.assertIs(spec.loader_state, None)
563 self.assertIs(spec.submodule_search_locations, None)
564 self.assertIs(spec.cached, None)
565 self.assertTrue(spec.has_location)
566
567 def test_spec_from_file_location_loader_no_location_bad_get_filename(self):
568 class ESC[4;38;5;81mLoader:
569 def get_filename(self, name):
570 raise ImportError
571 loader = Loader()
572 spec = self.util.spec_from_file_location(self.name, loader=loader)
573
574 self.assertEqual(spec.name, self.name)
575 self.assertEqual(spec.loader, loader)
576 self.assertEqual(spec.origin, '<unknown>')
577 self.assertIs(spec.loader_state, None)
578 self.assertIs(spec.submodule_search_locations, None)
579 self.assertIs(spec.cached, None)
580 self.assertTrue(spec.has_location)
581
582 def test_spec_from_file_location_smsl_none(self):
583 spec = self.util.spec_from_file_location(self.name, self.path,
584 loader=self.fileloader,
585 submodule_search_locations=None)
586
587 self.assertEqual(spec.name, self.name)
588 self.assertEqual(spec.loader, self.fileloader)
589 self.assertEqual(spec.origin, self.path)
590 self.assertIs(spec.loader_state, None)
591 self.assertIs(spec.submodule_search_locations, None)
592 self.assertEqual(spec.cached, self.cached)
593 self.assertTrue(spec.has_location)
594
595 def test_spec_from_file_location_smsl_empty(self):
596 spec = self.util.spec_from_file_location(self.name, self.path,
597 loader=self.fileloader,
598 submodule_search_locations=[])
599
600 self.assertEqual(spec.name, self.name)
601 self.assertEqual(spec.loader, self.fileloader)
602 self.assertEqual(spec.origin, self.path)
603 self.assertIs(spec.loader_state, None)
604 self.assertEqual(spec.submodule_search_locations, [os.getcwd()])
605 self.assertEqual(spec.cached, self.cached)
606 self.assertTrue(spec.has_location)
607
608 def test_spec_from_file_location_smsl_not_empty(self):
609 spec = self.util.spec_from_file_location(self.name, self.path,
610 loader=self.fileloader,
611 submodule_search_locations=['eggs'])
612
613 self.assertEqual(spec.name, self.name)
614 self.assertEqual(spec.loader, self.fileloader)
615 self.assertEqual(spec.origin, self.path)
616 self.assertIs(spec.loader_state, None)
617 self.assertEqual(spec.submodule_search_locations, ['eggs'])
618 self.assertEqual(spec.cached, self.cached)
619 self.assertTrue(spec.has_location)
620
621 def test_spec_from_file_location_smsl_default(self):
622 spec = self.util.spec_from_file_location(self.name, self.path,
623 loader=self.pkgloader)
624
625 self.assertEqual(spec.name, self.name)
626 self.assertEqual(spec.loader, self.pkgloader)
627 self.assertEqual(spec.origin, self.path)
628 self.assertIs(spec.loader_state, None)
629 self.assertEqual(spec.submodule_search_locations, [os.getcwd()])
630 self.assertEqual(spec.cached, self.cached)
631 self.assertTrue(spec.has_location)
632
633 def test_spec_from_file_location_smsl_default_not_package(self):
634 class ESC[4;38;5;81mLoader:
635 def is_package(self, name):
636 return False
637 loader = Loader()
638 spec = self.util.spec_from_file_location(self.name, self.path,
639 loader=loader)
640
641 self.assertEqual(spec.name, self.name)
642 self.assertEqual(spec.loader, loader)
643 self.assertEqual(spec.origin, self.path)
644 self.assertIs(spec.loader_state, None)
645 self.assertIs(spec.submodule_search_locations, None)
646 self.assertEqual(spec.cached, self.cached)
647 self.assertTrue(spec.has_location)
648
649 def test_spec_from_file_location_smsl_default_no_is_package(self):
650 spec = self.util.spec_from_file_location(self.name, self.path,
651 loader=self.fileloader)
652
653 self.assertEqual(spec.name, self.name)
654 self.assertEqual(spec.loader, self.fileloader)
655 self.assertEqual(spec.origin, self.path)
656 self.assertIs(spec.loader_state, None)
657 self.assertIs(spec.submodule_search_locations, None)
658 self.assertEqual(spec.cached, self.cached)
659 self.assertTrue(spec.has_location)
660
661 def test_spec_from_file_location_smsl_default_bad_is_package(self):
662 class ESC[4;38;5;81mLoader:
663 def is_package(self, name):
664 raise ImportError
665 loader = Loader()
666 spec = self.util.spec_from_file_location(self.name, self.path,
667 loader=loader)
668
669 self.assertEqual(spec.name, self.name)
670 self.assertEqual(spec.loader, loader)
671 self.assertEqual(spec.origin, self.path)
672 self.assertIs(spec.loader_state, None)
673 self.assertIs(spec.submodule_search_locations, None)
674 self.assertEqual(spec.cached, self.cached)
675 self.assertTrue(spec.has_location)
676
677 def test_spec_from_file_location_relative_path(self):
678 spec = self.util.spec_from_file_location(self.name,
679 os.path.basename(self.path), loader=self.fileloader)
680
681 self.assertEqual(spec.name, self.name)
682 self.assertEqual(spec.loader, self.fileloader)
683 self.assertEqual(spec.origin, self.path)
684 self.assertIs(spec.loader_state, None)
685 self.assertIs(spec.submodule_search_locations, None)
686 self.assertEqual(spec.cached, self.cached)
687 self.assertTrue(spec.has_location)
688
689 (Frozen_FactoryTests,
690 Source_FactoryTests
691 ) = test_util.test_both(FactoryTests, util=util, machinery=machinery)
692
693
694 if __name__ == '__main__':
695 unittest.main()