Commit bacc272a authored by Miss Islington (bot)'s avatar Miss Islington (bot) Committed by GitHub

bpo-34185: Fix test module collision in test_bdb when ran as script. (GH-8537)


When running test_bdb.py as a script, `import test_module` would be
importing the existing Lib/test/test_modules.py instead of the
tempcwd/test_module.py module which was dynamically created by
test_bdb.py itself.
(cherry picked from commit 54fd4550)
Co-authored-by: default avatarAlex H <1884912+lajarre@users.noreply.github.com>
parent c7976da5
...@@ -569,11 +569,11 @@ def create_modules(modules): ...@@ -569,11 +569,11 @@ def create_modules(modules):
def break_in_func(funcname, fname=__file__, temporary=False, cond=None): def break_in_func(funcname, fname=__file__, temporary=False, cond=None):
return 'break', (fname, None, temporary, cond, funcname) return 'break', (fname, None, temporary, cond, funcname)
TEST_MODULE = 'test_module' TEST_MODULE = 'test_module_for_bdb'
TEST_MODULE_FNAME = TEST_MODULE + '.py' TEST_MODULE_FNAME = TEST_MODULE + '.py'
def tfunc_import(): def tfunc_import():
import test_module import test_module_for_bdb
test_module.main() test_module_for_bdb.main()
def tfunc_main(): def tfunc_main():
lno = 2 lno = 2
...@@ -985,9 +985,9 @@ class RunTestCase(BaseTestCase): ...@@ -985,9 +985,9 @@ class RunTestCase(BaseTestCase):
('return', 3, 'main'), ('step', ), ('return', 3, 'main'), ('step', ),
('return', 1, '<module>'), ('quit', ), ('return', 1, '<module>'), ('quit', ),
] ]
import test_module import test_module_for_bdb
with TracerRun(self) as tracer: with TracerRun(self) as tracer:
tracer.runeval('test_module.main()', globals(), locals()) tracer.runeval('test_module_for_bdb.main()', globals(), locals())
class IssuesTestCase(BaseTestCase): class IssuesTestCase(BaseTestCase):
"""Test fixed bdb issues.""" """Test fixed bdb issues."""
...@@ -997,7 +997,7 @@ class IssuesTestCase(BaseTestCase): ...@@ -997,7 +997,7 @@ class IssuesTestCase(BaseTestCase):
# Check that the tracer does step into the caller frame when the # Check that the tracer does step into the caller frame when the
# trace function is not set in that frame. # trace function is not set in that frame.
code_1 = """ code_1 = """
from test_module_2 import func from test_module_for_bdb_2 import func
def main(): def main():
func() func()
lno = 5 lno = 5
...@@ -1008,12 +1008,12 @@ class IssuesTestCase(BaseTestCase): ...@@ -1008,12 +1008,12 @@ class IssuesTestCase(BaseTestCase):
""" """
modules = { modules = {
TEST_MODULE: code_1, TEST_MODULE: code_1,
'test_module_2': code_2, 'test_module_for_bdb_2': code_2,
} }
with create_modules(modules): with create_modules(modules):
self.expect_set = [ self.expect_set = [
('line', 2, 'tfunc_import'), ('line', 2, 'tfunc_import'),
break_in_func('func', 'test_module_2.py'), break_in_func('func', 'test_module_for_bdb_2.py'),
('None', 2, 'tfunc_import'), ('continue', ), ('None', 2, 'tfunc_import'), ('continue', ),
('line', 3, 'func', ({1:1}, [])), ('step', ), ('line', 3, 'func', ({1:1}, [])), ('step', ),
('return', 3, 'func'), ('step', ), ('return', 3, 'func'), ('step', ),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment