@@ -188,7 +188,6 @@ def test_linear_methods(self):
188188 }
189189 self .assertEqual (tracer .results ().counts , expected )
190190
191-
192191class TestRunExecCounts (unittest .TestCase ):
193192 """A simple sanity test of line-counting, via runctx (exec)"""
194193 def setUp (self ):
@@ -285,8 +284,9 @@ def tearDown(self):
285284 rmtree (TESTFN )
286285 unlink (TESTFN )
287286
288- def _coverage (self , tracer ):
289- tracer .run ('from test import test_pprint; test_pprint.test_main()' )
287+ def _coverage (self , tracer ,
288+ cmd = 'from test import test_pprint; test_pprint.test_main()' ):
289+ tracer .run (cmd )
290290 r = tracer .results ()
291291 r .write_results (show_missing = True , summary = True , coverdir = TESTFN )
292292
@@ -313,6 +313,25 @@ def test_coverage_ignore(self):
313313 files = os .listdir (TESTFN )
314314 self .assertEquals (files , [])
315315
316+ def test_issue9936 (self ):
317+ tracer = trace .Trace (trace = 0 , count = 1 )
318+ modname = 'test.tracedmodules.testmod'
319+ # Ensure that the module is executed in import
320+ if modname in sys .modules :
321+ del sys .modules [modname ]
322+ cmd = ("import test.tracedmodules.testmod as t;"
323+ "t.func(0); t.func2();" )
324+ with captured_stdout () as stdout :
325+ self ._coverage (tracer , cmd )
326+ stdout .seek (0 )
327+ stdout .readline ()
328+ coverage = {}
329+ for line in stdout :
330+ lines , cov , module = line .split ()[:3 ]
331+ coverage [module ] = (int (lines ), int (cov [:- 1 ]))
332+ self .assertIn (modname , coverage )
333+ self .assertEqual (coverage [modname ], (5 , 100 ))
334+
316335
317336def test_main ():
318337 run_unittest (__name__ )
0 commit comments