@@ -184,11 +184,9 @@ def _find_tests(start_dir, pattern):
184184 self .assertEqual (_find_tests_args , [(start_dir , 'pattern' )])
185185 self .assertIn (top_level_dir , sys .path )
186186
187- def test_discover_with_modules_that_fail_to_import (self ):
188- loader = unittest .TestLoader ()
189-
187+ def setup_import_issue_tests (self , fakefile ):
190188 listdir = os .listdir
191- os .listdir = lambda _ : ['test_this_does_not_exist.py' ]
189+ os .listdir = lambda _ : [fakefile ]
192190 isfile = os .path .isfile
193191 os .path .isfile = lambda _ : True
194192 orig_sys_path = sys .path [:]
@@ -198,6 +196,11 @@ def restore():
198196 sys .path [:] = orig_sys_path
199197 self .addCleanup (restore )
200198
199+ def test_discover_with_modules_that_fail_to_import (self ):
200+ loader = unittest .TestLoader ()
201+
202+ self .setup_import_issue_tests ('test_this_does_not_exist.py' )
203+
201204 suite = loader .discover ('.' )
202205 self .assertIn (os .getcwd (), sys .path )
203206 self .assertEqual (suite .countTestCases (), 1 )
@@ -206,6 +209,22 @@ def restore():
206209 with self .assertRaises (ImportError ):
207210 test .test_this_does_not_exist ()
208211
212+ def test_discover_with_module_that_raises_SkipTest_on_import (self ):
213+ loader = unittest .TestLoader ()
214+
215+ def _get_module_from_name (name ):
216+ raise unittest .SkipTest ('skipperoo' )
217+ loader ._get_module_from_name = _get_module_from_name
218+
219+ self .setup_import_issue_tests ('test_skip_dummy.py' )
220+
221+ suite = loader .discover ('.' )
222+ self .assertEqual (suite .countTestCases (), 1 )
223+
224+ result = unittest .TestResult ()
225+ suite .run (result )
226+ self .assertEqual (len (result .skipped ), 1 )
227+
209228 def test_command_line_handling_parseArgs (self ):
210229 program = TestableTestProgram ()
211230
0 commit comments