mirror of https://github.com/python/cpython
bpo-44461: Check early that a pdb target is valid for execution. (#27227)
* bpo-44461: Fix bug with pdb's handling of import error due to a package which does not have a __main__ module * 📜🤖 Added by blurb_it. * remove "else" Co-authored-by: Jason R. Coombs <jaraco@jaraco.com> * If running as a module, first check that it can run as a module. Alternate fix for bpo-44461. Co-authored-by: Irit Katriel <iritkatriel@yahoo.com> Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com> Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
This commit is contained in:
parent
38ddc8beb3
commit
ee03bad25e
|
@ -169,7 +169,11 @@ class ScriptTarget(str):
|
|||
|
||||
class ModuleTarget(str):
|
||||
def check(self):
|
||||
pass
|
||||
try:
|
||||
self._details
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
sys.exit(1)
|
||||
|
||||
@functools.cached_property
|
||||
def _details(self):
|
||||
|
|
|
@ -1729,6 +1729,20 @@ def bœr():
|
|||
self.assertIn("ImportError: No module named t_main.__main__",
|
||||
stdout.splitlines())
|
||||
|
||||
def test_package_without_a_main(self):
|
||||
pkg_name = 't_pkg'
|
||||
module_name = 't_main'
|
||||
os_helper.rmtree(pkg_name)
|
||||
modpath = pkg_name + '/' + module_name
|
||||
os.makedirs(modpath)
|
||||
with open(modpath + '/__init__.py', 'w') as f:
|
||||
pass
|
||||
self.addCleanup(os_helper.rmtree, pkg_name)
|
||||
stdout, stderr = self._run_pdb(['-m', modpath.replace('/', '.')], "")
|
||||
self.assertIn(
|
||||
"'t_pkg.t_main' is a package and cannot be directly executed",
|
||||
stdout)
|
||||
|
||||
def test_blocks_at_first_code_line(self):
|
||||
script = """
|
||||
#This is a comment, on line 2
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix bug with :mod:`pdb`'s handling of import error due to a package which does not have a ``__main__`` module
|
Loading…
Reference in New Issue