mirror of
https://github.com/python/cpython.git
synced 2025-08-30 21:48:47 +00:00
Close #15386: There was a loophole that meant importlib.machinery and imp would sometimes reference an uninitialised copy of importlib._bootstrap
This commit is contained in:
parent
818b1186f9
commit
be7e49fd82
5 changed files with 27 additions and 5 deletions
|
@ -1,8 +1,9 @@
|
|||
# We import importlib *ASAP* in order to test #15386
|
||||
import importlib
|
||||
import builtins
|
||||
import imp
|
||||
from importlib.test.import_ import test_suite as importlib_import_test_suite
|
||||
from importlib.test.import_ import util as importlib_util
|
||||
import importlib
|
||||
import marshal
|
||||
import os
|
||||
import platform
|
||||
|
@ -777,6 +778,15 @@ class ImportlibBootstrapTests(unittest.TestCase):
|
|||
self.assertEqual(mod.__package__, 'importlib')
|
||||
self.assertTrue(mod.__file__.endswith('_bootstrap.py'), mod.__file__)
|
||||
|
||||
def test_there_can_be_only_one(self):
|
||||
# Issue #15386 revealed a tricky loophole in the bootstrapping
|
||||
# This test is technically redundant, since the bug caused importing
|
||||
# this test module to crash completely, but it helps prove the point
|
||||
from importlib import machinery
|
||||
mod = sys.modules['_frozen_importlib']
|
||||
self.assertIs(machinery.FileFinder, mod.FileFinder)
|
||||
self.assertIs(imp.new_module, mod.new_module)
|
||||
|
||||
|
||||
class ImportTracebackTests(unittest.TestCase):
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue