summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
commit061da546b983eb767bad15e67af1174fb0bcf31c (patch)
tree83c78b820819d70aa40c36d90447978b300078c5 /gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step
parentImport LLVM 10.0.0 release including clang, lld and lldb. (diff)
downloadwireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.tar.xz
wireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.zip
Import LLVM 10.0.0 release including clang, lld and lldb.
ok hackroom tested by plenty
Diffstat (limited to 'gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step')
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/Makefile5
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/TestVSCode_step.py75
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/main.cpp10
3 files changed, 90 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/Makefile
new file mode 100644
index 00000000000..b7f3072e28c
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/Makefile
@@ -0,0 +1,5 @@
+ENABLE_THREADS := YES
+
+CXX_SOURCES := main.cpp
+
+include Makefile.rules
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/TestVSCode_step.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/TestVSCode_step.py
new file mode 100644
index 00000000000..2431464f8c8
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/TestVSCode_step.py
@@ -0,0 +1,75 @@
+"""
+Test lldb-vscode setBreakpoints request
+"""
+
+
+import unittest2
+import vscode
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+import lldbvscode_testcase
+
+
+class TestVSCode_step(lldbvscode_testcase.VSCodeTestCaseBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @skipIfWindows
+ def test_step(self):
+ '''
+ Tests the stepping in/out/over in threads.
+ '''
+ program = self.getBuildArtifact("a.out")
+ self.build_and_launch(program)
+ source = 'main.cpp'
+ # source_path = os.path.join(os.getcwd(), source)
+ breakpoint1_line = line_number(source, '// breakpoint 1')
+ lines = [breakpoint1_line]
+ # Set breakoint in the thread function so we can step the threads
+ breakpoint_ids = self.set_source_breakpoints(source, lines)
+ self.assertEqual(len(breakpoint_ids), len(lines),
+ "expect correct number of breakpoints")
+ self.continue_to_breakpoints(breakpoint_ids)
+ threads = self.vscode.get_threads()
+ for thread in threads:
+ if 'reason' in thread:
+ reason = thread['reason']
+ if reason == 'breakpoint':
+ # We have a thread that is stopped at our breakpoint.
+ # Get the value of "x" and get the source file and line.
+ # These will help us determine if we are stepping
+ # correctly. If we step a thread correctly we will verify
+ # the correct falue for x as it progresses through the
+ # program.
+ tid = thread['id']
+ x1 = self.get_local_as_int('x', threadId=tid)
+ (src1, line1) = self.get_source_and_line(threadId=tid)
+
+ # Now step into the "recurse()" function call again and
+ # verify, using the new value of "x" and the source file
+ # and line if we stepped correctly
+ self.stepIn(threadId=tid, waitForStop=True)
+ x2 = self.get_local_as_int('x', threadId=tid)
+ (src2, line2) = self.get_source_and_line(threadId=tid)
+ self.assertEqual(x1, x2 + 1, 'verify step in variable')
+ self.assertLess(line2, line1, 'verify step in line')
+ self.assertEqual(src1, src2, 'verify step in source')
+
+ # Now step out and verify
+ self.stepOut(threadId=tid, waitForStop=True)
+ x3 = self.get_local_as_int('x', threadId=tid)
+ (src3, line3) = self.get_source_and_line(threadId=tid)
+ self.assertEqual(x1, x3, 'verify step out variable')
+ self.assertGreaterEqual(line3, line1, 'verify step out line')
+ self.assertEqual(src1, src3, 'verify step in source')
+
+ # Step over and verify
+ self.stepOver(threadId=tid, waitForStop=True)
+ x4 = self.get_local_as_int('x', threadId=tid)
+ (src4, line4) = self.get_source_and_line(threadId=tid)
+ self.assertEqual(x4, x3, 'verify step over variable')
+ self.assertGreater(line4, line3, 'verify step over line')
+ self.assertEqual(src1, src4, 'verify step over source')
+ # only step one thread that is at the breakpoint and stop
+ break
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/main.cpp b/gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/main.cpp
new file mode 100644
index 00000000000..3027551972f
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/main.cpp
@@ -0,0 +1,10 @@
+int function(int x) {
+ if ((x % 2) == 0)
+ return function(x-1) + x; // breakpoint 1
+ else
+ return x;
+}
+
+int main(int argc, char const *argv[]) {
+ return function(2);
+}