@@ -12,7 +12,13 @@ def get_file():
1212 return __file__
1313"""
1414
15+ reload_src = test_src + """\
16+ reloaded = True
17+ """
18+
1519test_co = compile (test_src , "<???>" , "exec" )
20+ reload_co = compile (reload_src , "<???>" , "exec" )
21+
1622test_path = "!!!_test_!!!"
1723
1824
@@ -32,6 +38,7 @@ class TestImporter:
3238 "hooktestpackage" : (True , test_co ),
3339 "hooktestpackage.sub" : (True , test_co ),
3440 "hooktestpackage.sub.subber" : (False , test_co ),
41+ "reloadmodule" : (False , test_co ),
3542 }
3643
3744 def __init__ (self , path = test_path ):
@@ -52,8 +59,7 @@ def find_module(self, fullname, path=None):
5259
5360 def load_module (self , fullname ):
5461 ispkg , code = self .modules [fullname ]
55- mod = imp .new_module (fullname )
56- sys .modules [fullname ] = mod
62+ mod = sys .modules .setdefault (fullname ,imp .new_module (fullname ))
5763 mod .__file__ = "<%s>" % self .__class__ .__name__
5864 mod .__loader__ = self
5965 if ispkg :
@@ -163,6 +169,14 @@ def doTestImports(self, importer=None):
163169 self .assertEqual (hooktestpackage .sub .__loader__ , importer )
164170 self .assertEqual (hooktestpackage .sub .subber .__loader__ , importer )
165171
172+ TestImporter .modules ['reloadmodule' ] = (False , test_co )
173+ import reloadmodule
174+ self .failIf (hasattr (reloadmodule ,'reloaded' ))
175+
176+ TestImporter .modules ['reloadmodule' ] = (False , reload_co )
177+ reload (reloadmodule )
178+ self .failUnless (hasattr (reloadmodule ,'reloaded' ))
179+
166180 def testMetaPath (self ):
167181 i = MetaImporter ()
168182 sys .meta_path .append (i )
0 commit comments