@@ -406,10 +406,34 @@ def _find_tests(start_dir, pattern):
406406 top_level_dir = os .path .abspath ('/foo/bar' )
407407 start_dir = os .path .abspath ('/foo/bar/baz' )
408408 self .assertEqual (suite , "['tests']" )
409- self .assertEqual (loader ._top_level_dir , top_level_dir )
409+ self .assertEqual (loader ._top_level_dir , os . path . abspath ( '/foo' ) )
410410 self .assertEqual (_find_tests_args , [(start_dir , 'pattern' )])
411411 self .assertIn (top_level_dir , sys .path )
412412
413+ def test_discover_should_not_persist_top_level_dir_between_calls (self ):
414+ original_isfile = os .path .isfile
415+ original_isdir = os .path .isdir
416+ original_sys_path = sys .path [:]
417+ def restore ():
418+ os .path .isfile = original_isfile
419+ os .path .isdir = original_isdir
420+ sys .path [:] = original_sys_path
421+ self .addCleanup (restore )
422+
423+ os .path .isfile = lambda path : True
424+ os .path .isdir = lambda path : True
425+ loader = unittest .TestLoader ()
426+ loader .suiteClass = str
427+ dir = '/foo/bar'
428+ top_level_dir = '/foo'
429+
430+ loader .discover (dir , top_level_dir = top_level_dir )
431+ self .assertEqual (loader ._top_level_dir , None )
432+
433+ loader ._top_level_dir = dir2 = '/previous/dir'
434+ loader .discover (dir , top_level_dir = top_level_dir )
435+ self .assertEqual (loader ._top_level_dir , dir2 )
436+
413437 def test_discover_start_dir_is_package_calls_package_load_tests (self ):
414438 # This test verifies that the package load_tests in a package is indeed
415439 # invoked when the start_dir is a package (and not the top level).
0 commit comments