From e56a123fd0acaa295a28b98d2e46d956b97d1263 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 21 Jun 2019 23:17:30 +0200 Subject: [PATCH] bpo-37362: test_gdb now ignores stderr (GH-14287) test_gdb no longer fails if it gets an "unexpected" message on stderr: it now ignores stderr. The purpose of test_gdb is to test that python-gdb.py commands work as expected, not to test gdb. --- Lib/test/test_gdb.py | 47 +++++-------------- .../2019-06-21-15-47-33.bpo-37362.D3xppx.rst | 3 ++ 2 files changed, 16 insertions(+), 34 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2019-06-21-15-47-33.bpo-37362.D3xppx.rst diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py index f57e348b6c..1c5e18b678 100644 --- a/Lib/test/test_gdb.py +++ b/Lib/test/test_gdb.py @@ -214,43 +214,22 @@ class DebuggerTests(unittest.TestCase): elif script: args += [script] - # print args - # print (' '.join(args)) - # Use "args" to invoke gdb, capturing stdout, stderr: out, err = run_gdb(*args, PYTHONHASHSEED=PYTHONHASHSEED) - errlines = err.splitlines() - unexpected_errlines = [] - - # Ignore some benign messages on stderr. - ignore_patterns = ( - 'Function "%s" not defined.' % breakpoint, - 'Do you need "set solib-search-path" or ' - '"set sysroot"?', - # BFD: /usr/lib/debug/(...): unable to initialize decompress - # status for section .debug_aranges - 'BFD: ', - # ignore all warnings - 'warning: ', - ) - for line in errlines: - if not line: - continue - # bpo34007: Sometimes some versions of the shared libraries that - # are part of the traceback are compiled in optimised mode and the - # Program Counter (PC) is not present, not allowing gdb to walk the - # frames back. When this happens, the Python bindings of gdb raise - # an exception, making the test impossible to succeed. - if "PC not saved" in line: - raise unittest.SkipTest("gdb cannot walk the frame object" - " because the Program Counter is" - " not present") - if not line.startswith(ignore_patterns): - unexpected_errlines.append(line) - - # Ensure no unexpected error messages: - self.assertEqual(unexpected_errlines, []) + for line in err.splitlines(): + print(line, file=sys.stderr) + + # bpo-34007: Sometimes some versions of the shared libraries that + # are part of the traceback are compiled in optimised mode and the + # Program Counter (PC) is not present, not allowing gdb to walk the + # frames back. When this happens, the Python bindings of gdb raise + # an exception, making the test impossible to succeed. + if "PC not saved" in err: + raise unittest.SkipTest("gdb cannot walk the frame object" + " because the Program Counter is" + " not present") + return out def get_gdb_repr(self, source, diff --git a/Misc/NEWS.d/next/Tests/2019-06-21-15-47-33.bpo-37362.D3xppx.rst b/Misc/NEWS.d/next/Tests/2019-06-21-15-47-33.bpo-37362.D3xppx.rst new file mode 100644 index 0000000000..43fdc1030c --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2019-06-21-15-47-33.bpo-37362.D3xppx.rst @@ -0,0 +1,3 @@ +test_gdb no longer fails if it gets an "unexpected" message on stderr: it now +ignores stderr. The purpose of test_gdb is to test that python-gdb.py commands +work as expected, not to test gdb. -- 2.40.0