diff options
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_gdb.py | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py index 6d4fda1ba3..0a2d883fa4 100644 --- a/Lib/test/test_gdb.py +++ b/Lib/test/test_gdb.py @@ -32,6 +32,14 @@ gdbpy_version, _ = p.communicate() if gdbpy_version == '': raise unittest.SkipTest("gdb not built with embedded python support") +def python_is_optimized(): + cflags = sysconfig.get_config_vars()['PY_CFLAGS'] + final_opt = "" + for opt in cflags.split(): + if opt.startswith('-O'): + final_opt = opt + return (final_opt and final_opt != '-O0') + def gdb_has_frame_select(): # Does this build of gdb have gdb.Frame.select ? cmd = "--eval-command=python print(dir(gdb.Frame))" @@ -543,6 +551,8 @@ print foo.__code__''', re.DOTALL), 'Unexpected gdb representation: %r\n%s' % (gdb_output, gdb_output)) +@unittest.skipIf(python_is_optimized(), + "Python was compiled with optimizations") class PyListTests(DebuggerTests): def assertListing(self, expected, actual): self.assertEndsWith(actual, expected) @@ -585,6 +595,8 @@ class PyListTests(DebuggerTests): class StackNavigationTests(DebuggerTests): @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands") + @unittest.skipIf(python_is_optimized(), + "Python was compiled with optimizations") def test_pyup_command(self): 'Verify that the "py-up" command works' bt = self.get_stack_trace(script=self.get_sample_script(), @@ -612,6 +624,8 @@ $''') 'Unable to find an older python frame\n') @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands") + @unittest.skipIf(python_is_optimized(), + "Python was compiled with optimizations") def test_up_then_down(self): 'Verify "py-up" followed by "py-down"' bt = self.get_stack_trace(script=self.get_sample_script(), @@ -625,6 +639,8 @@ $''') $''') class PyBtTests(DebuggerTests): + @unittest.skipIf(python_is_optimized(), + "Python was compiled with optimizations") def test_basic_command(self): 'Verify that the "py-bt" command works' bt = self.get_stack_trace(script=self.get_sample_script(), @@ -636,10 +652,12 @@ class PyBtTests(DebuggerTests): #[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 4, in foo \(a=1, b=2, c=3\) bar\(a, b, c\) #[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 12, in <module> \(\) -foo\(1, 2, 3\) + foo\(1, 2, 3\) ''') class PyPrintTests(DebuggerTests): + @unittest.skipIf(python_is_optimized(), + "Python was compiled with optimizations") def test_basic_command(self): 'Verify that the "py-print" command works' bt = self.get_stack_trace(script=self.get_sample_script(), @@ -648,18 +666,24 @@ class PyPrintTests(DebuggerTests): r".*\nlocal 'args' = \(1, 2, 3\)\n.*") @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands") + @unittest.skipIf(python_is_optimized(), + "Python was compiled with optimizations") def test_print_after_up(self): bt = self.get_stack_trace(script=self.get_sample_script(), cmds_after_breakpoint=['py-up', 'py-print c', 'py-print b', 'py-print a']) self.assertMultilineMatches(bt, r".*\nlocal 'c' = 3\nlocal 'b' = 2\nlocal 'a' = 1\n.*") + @unittest.skipIf(python_is_optimized(), + "Python was compiled with optimizations") def test_printing_global(self): bt = self.get_stack_trace(script=self.get_sample_script(), cmds_after_breakpoint=['py-print __name__']) self.assertMultilineMatches(bt, r".*\nglobal '__name__' = '__main__'\n.*") + @unittest.skipIf(python_is_optimized(), + "Python was compiled with optimizations") def test_printing_builtin(self): bt = self.get_stack_trace(script=self.get_sample_script(), cmds_after_breakpoint=['py-print len']) @@ -667,6 +691,8 @@ class PyPrintTests(DebuggerTests): r".*\nbuiltin 'len' = <built-in function len>\n.*") class PyLocalsTests(DebuggerTests): + @unittest.skipIf(python_is_optimized(), + "Python was compiled with optimizations") def test_basic_command(self): bt = self.get_stack_trace(script=self.get_sample_script(), cmds_after_breakpoint=['py-locals']) @@ -674,6 +700,8 @@ class PyLocalsTests(DebuggerTests): r".*\nargs = \(1, 2, 3\)\n.*") @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands") + @unittest.skipIf(python_is_optimized(), + "Python was compiled with optimizations") def test_locals_after_up(self): bt = self.get_stack_trace(script=self.get_sample_script(), cmds_after_breakpoint=['py-up', 'py-locals']) @@ -681,15 +709,6 @@ class PyLocalsTests(DebuggerTests): r".*\na = 1\nb = 2\nc = 3\n.*") def test_main(): - cflags = sysconfig.get_config_vars()['PY_CFLAGS'] - final_opt = "" - for opt in cflags.split(): - if opt.startswith('-O'): - final_opt = opt - if final_opt and final_opt != '-O0': - raise unittest.SkipTest("Python was built with compiler optimizations, " - "tests can't reliably succeed") - run_unittest(PrettyPrintTests, PyListTests, StackNavigationTests, |