@@ -35,13 +35,15 @@ class FinderTests(abc.FinderTests):
3535
3636 """
3737
38- def import_ (self , root , module ):
38+ def get_finder (self , root ):
3939 loader_details = [(machinery .SourceFileLoader ,
4040 machinery .SOURCE_SUFFIXES ),
4141 (machinery .SourcelessFileLoader ,
4242 machinery .BYTECODE_SUFFIXES )]
43- finder = machinery .FileFinder (root , * loader_details )
44- return finder .find_module (module )
43+ return machinery .FileFinder (root , * loader_details )
44+
45+ def import_ (self , root , module ):
46+ return self .get_finder (root ).find_module (module )
4547
4648 def run_test (self , test , create = None , * , compile_ = None , unlink = None ):
4749 """Test the finding of 'test' with the creation of modules listed in
@@ -137,6 +139,13 @@ def test_invalidate_caches(self):
137139 finder .invalidate_caches ()
138140 self .assertEqual (finder ._path_mtime , - 1 )
139141
142+ # Regression test for http://bugs.python.org/issue14846
143+ def test_dir_removal_handling (self ):
144+ mod = 'mod'
145+ with source_util .create_modules (mod ) as mapping :
146+ finder = self .get_finder (mapping ['.root' ])
147+ self .assertIsNotNone (finder .find_module (mod ))
148+ self .assertIsNone (finder .find_module (mod ))
140149
141150def test_main ():
142151 from test .support import run_unittest
0 commit comments