summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_gdb.py
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2010-04-20 22:32:07 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2010-04-20 22:32:07 (GMT)
commit50eb60e6bfedbdad2dda30fa5ce7fe3ce83f7748 (patch)
treeca7b3b8413f070180c6c4d40a4e65c00ff3f0df9 /Lib/test/test_gdb.py
parent5e2be8737dad3c7bdaf198d2637d9ef947b5f2f1 (diff)
downloadcpython-50eb60e6bfedbdad2dda30fa5ce7fe3ce83f7748.zip
cpython-50eb60e6bfedbdad2dda30fa5ce7fe3ce83f7748.tar.gz
cpython-50eb60e6bfedbdad2dda30fa5ce7fe3ce83f7748.tar.bz2
Merged revisions 80288 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r80288 | victor.stinner | 2010-04-21 00:28:31 +0200 (mer., 21 avril 2010) | 2 lines Issue #8437: Fix test_gdb failures, patch written by Dave Malcolm ........
Diffstat (limited to 'Lib/test/test_gdb.py')
-rw-r--r--Lib/test/test_gdb.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py
index 2f50b88..5b3c3df 100644
--- a/Lib/test/test_gdb.py
+++ b/Lib/test/test_gdb.py
@@ -31,6 +31,19 @@ gdbpy_version, _ = p.communicate()
if gdbpy_version == b'':
raise unittest.SkipTest("gdb not built with embedded python support")
+def gdb_has_frame_select():
+ # Does this build of gdb have gdb.Frame.select ?
+ cmd = "--eval-command=python print(dir(gdb.Frame))"
+ p = subprocess.Popen(["gdb", "--batch", cmd],
+ stdout=subprocess.PIPE)
+ stdout, _ = p.communicate()
+ m = re.match(br'.*\[(.*)\].*', stdout)
+ if not m:
+ raise unittest.SkipTest("Unable to parse output from gdb.Frame.select test")
+ gdb_frame_dir = m.group(1).split(b', ')
+ return b"'select'" in gdb_frame_dir
+
+HAS_PYUP_PYDOWN = gdb_has_frame_select()
class DebuggerTests(unittest.TestCase):
@@ -554,6 +567,7 @@ class PyListTests(DebuggerTests):
bt)
class StackNavigationTests(DebuggerTests):
+ @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
def test_pyup_command(self):
'Verify that the "py-up" command works'
bt = self.get_stack_trace(script='Lib/test/test_gdb_sample.py',
@@ -564,6 +578,7 @@ class StackNavigationTests(DebuggerTests):
baz\(a, b, c\)
$''')
+ @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
def test_down_at_bottom(self):
'Verify handling of "py-down" at the bottom of the stack'
bt = self.get_stack_trace(script='Lib/test/test_gdb_sample.py',
@@ -571,6 +586,7 @@ $''')
self.assertEndsWith(bt,
'Unable to find a newer python frame\n')
+ @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
def test_up_at_top(self):
'Verify handling of "py-up" at the top of the stack'
bt = self.get_stack_trace(script='Lib/test/test_gdb_sample.py',
@@ -578,6 +594,7 @@ $''')
self.assertEndsWith(bt,
'Unable to find an older python frame\n')
+ @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
def test_up_then_down(self):
'Verify "py-up" followed by "py-down"'
bt = self.get_stack_trace(script='Lib/test/test_gdb_sample.py',
@@ -613,6 +630,7 @@ class PyPrintTests(DebuggerTests):
self.assertMultilineMatches(bt,
r".*\nlocal 'args' = \(1, 2, 3\)\n.*")
+ @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
def test_print_after_up(self):
bt = self.get_stack_trace(script='Lib/test/test_gdb_sample.py',
cmds_after_breakpoint=['py-up', 'py-print c', 'py-print b', 'py-print a'])
@@ -638,6 +656,7 @@ class PyLocalsTests(DebuggerTests):
self.assertMultilineMatches(bt,
r".*\nargs = \(1, 2, 3\)\n.*")
+ @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
def test_locals_after_up(self):
bt = self.get_stack_trace(script='Lib/test/test_gdb_sample.py',
cmds_after_breakpoint=['py-up', 'py-locals'])