summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test
diff options
context:
space:
mode:
authorRaphael Isemann <teemperor@gmail.com>2019-09-30 12:49:32 +0000
committerRaphael Isemann <teemperor@gmail.com>2019-09-30 12:49:32 +0000
commitdab6f0746d17dc087a846c2d42f380c98e5513fe (patch)
tree19312643d4db64f74a7f8f913655649689d51d82 /lldb/packages/Python/lldbsuite/test
parent8180f3b1cc3fcca5e7cb858a95627eaf41911694 (diff)
downloadbcm5719-llvm-dab6f0746d17dc087a846c2d42f380c98e5513fe.tar.gz
bcm5719-llvm-dab6f0746d17dc087a846c2d42f380c98e5513fe.zip
[lldb] Reland 370734: Test 'frame select -r' and fix that INT32_MIN breaks the option parser
The problem with r370734 was that it removed the code for resetting the options in OptionParsingStarting. This caused that once a 'frame select -r ...' command was executed, we kept the relative index argument for all following 'frame select ...' invocations (even the ones with an absolute index as they are the same command object). See rdar://55791276. This relands the patch but keeps the code that resets the command options before execution. llvm-svn: 373201
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
-rw-r--r--lldb/packages/Python/lldbsuite/test/commands/frame/select/TestFrameSelect.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/select/TestFrameSelect.py b/lldb/packages/Python/lldbsuite/test/commands/frame/select/TestFrameSelect.py
index 6746aafe07f..2f2dd5aa493 100644
--- a/lldb/packages/Python/lldbsuite/test/commands/frame/select/TestFrameSelect.py
+++ b/lldb/packages/Python/lldbsuite/test/commands/frame/select/TestFrameSelect.py
@@ -23,12 +23,55 @@ class TestFrameSelect(TestBase):
self.expect("frame select -r -1", error=True, substrs=["Already at the bottom of the stack."])
self.expect("frame select -r -2147483647", error=True, substrs=["Already at the bottom of the stack."])
+ self.expect("frame select -r -2147483648", error=True, substrs=["error: invalid frame offset argument '-2147483648'"])
+ self.expect("frame select -r -2147483649", error=True, substrs=["error: invalid frame offset argument '-2147483649'"])
self.expect("frame select -r 1", substrs=["nested2() at"])
self.expect("frame select -r -2", substrs=["nested3() at"])
self.expect("frame select -r 1", substrs=["nested2() at"])
self.expect("frame select -r -2147483647", substrs=["nested3() at"])
self.expect("frame select -r 1", substrs=["nested2() at"])
+ self.expect("frame select -r -2147483648", error=True, substrs=["error: invalid frame offset argument '-2147483648'"])
+ self.expect("frame select -r -2147483649", error=True, substrs=["error: invalid frame offset argument '-2147483649'"])
self.expect("frame select -r 100")
self.expect("frame select -r 1", error=True, substrs=["Already at the top of the stack."])
+
+ @no_debug_info_test
+ @skipIfWindows
+ def test_mixing_relative_and_abs(self):
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self,
+ "// Set break point at this line.", lldb.SBFileSpec("main.cpp"))
+
+ # The function associated with each frame index can change depending
+ # on the function calling main (e.g. `start`), so this only tests that
+ # the frame index number is correct. We test the actual functions
+ # in the relative test.
+
+ # Jump to the top of the stack.
+ self.expect("frame select 0", substrs=["frame #0"])
+
+ # Run some relative commands.
+ self.expect("up", substrs=["frame #1"])
+ self.expect("frame select -r 1", substrs=["frame #2"])
+ self.expect("frame select -r -1", substrs=["frame #1"])
+
+ # Test that absolute indices still work.
+ self.expect("frame select 2", substrs=["frame #2"])
+ self.expect("frame select 1", substrs=["frame #1"])
+ self.expect("frame select 3", substrs=["frame #3"])
+ self.expect("frame select 0", substrs=["frame #0"])
+ self.expect("frame select 1", substrs=["frame #1"])
+
+ # Run some other relative frame select commands.
+ self.expect("down", substrs=["frame #0"])
+ self.expect("frame select -r 1", substrs=["frame #1"])
+ self.expect("frame select -r -1", substrs=["frame #0"])
+
+ # Test that absolute indices still work.
+ self.expect("frame select 2", substrs=["frame #2"])
+ self.expect("frame select 1", substrs=["frame #1"])
+ self.expect("frame select 3", substrs=["frame #3"])
+ self.expect("frame select 0", substrs=["frame #0"])
OpenPOWER on IntegriCloud