diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-06-21 23:17:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-21 23:17:30 +0200 |
commit | e56a123fd0acaa295a28b98d2e46d956b97d1263 (patch) | |
tree | e1b591f21eff1bd7ba64951ff28da4f16668ff13 | |
parent | 8b2aa1fddeb647bfbdb3b5827ddc3fdef19b8e44 (diff) | |
download | cpython-git-e56a123fd0acaa295a28b98d2e46d956b97d1263.tar.gz |
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.
-rw-r--r-- | Lib/test/test_gdb.py | 47 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Tests/2019-06-21-15-47-33.bpo-37362.D3xppx.rst | 3 |
2 files changed, 16 insertions, 34 deletions
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. |