From d9e904919197a22b95946f11ba5f24b796088c06 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Wed, 29 Apr 2020 08:30:01 -0700 Subject: bpo-40436: Fix code parsing gdb version (GH-19792) test_gdb and test.pythoninfo now check gdb command exit code. (cherry picked from commit ec9bea4a3766bd815148a27f61eb24e7dd459ac7) Co-authored-by: Victor Stinner --- Lib/test/pythoninfo.py | 3 +++ Lib/test/test_gdb.py | 10 ++++++++-- .../NEWS.d/next/Tests/2020-04-29-16-08-24.bpo-40436.gDMnYl.rst | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2020-04-29-16-08-24.bpo-40436.gDMnYl.rst diff --git a/Lib/test/pythoninfo.py b/Lib/test/pythoninfo.py index 797b3af..9f3e79f 100644 --- a/Lib/test/pythoninfo.py +++ b/Lib/test/pythoninfo.py @@ -371,6 +371,9 @@ def collect_gdb(info_add): stderr=subprocess.PIPE, universal_newlines=True) version = proc.communicate()[0] + if proc.returncode: + # ignore gdb failure: test_gdb will log the error + return except OSError: return diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py index bd9a5cb..f043c92 100644 --- a/Lib/test/test_gdb.py +++ b/Lib/test/test_gdb.py @@ -17,12 +17,18 @@ from test.support import run_unittest, findfile, python_is_optimized def get_gdb_version(): try: - proc = subprocess.Popen(["gdb", "-nx", "--version"], + cmd = ["gdb", "-nx", "--version"] + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) with proc: - version = proc.communicate()[0] + version, stderr = proc.communicate() + + if proc.returncode: + raise Exception(f"Command {' '.join(cmd)!r} failed " + f"with exit code {proc.returncode}: " + f"stdout={version!r} stderr={stderr!r}") except OSError: # This is what "no gdb" looks like. There may, however, be other # errors that manifest this way too. diff --git a/Misc/NEWS.d/next/Tests/2020-04-29-16-08-24.bpo-40436.gDMnYl.rst b/Misc/NEWS.d/next/Tests/2020-04-29-16-08-24.bpo-40436.gDMnYl.rst new file mode 100644 index 0000000..0aee2c3 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-04-29-16-08-24.bpo-40436.gDMnYl.rst @@ -0,0 +1 @@ +test_gdb and test.pythoninfo now check gdb command exit code. -- cgit v0.12