summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope
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/lang/cpp/scope
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/lang/cpp/scope')
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/Makefile3
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/TestCppScope.py91
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/main.cpp25
3 files changed, 119 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/Makefile
new file mode 100644
index 00000000000..99998b20bcb
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/Makefile
@@ -0,0 +1,3 @@
+CXX_SOURCES := main.cpp
+
+include Makefile.rules
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/TestCppScope.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/TestCppScope.py
new file mode 100644
index 00000000000..213e7fbe902
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/TestCppScope.py
@@ -0,0 +1,91 @@
+"""
+Test scopes in C++.
+"""
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class TestCppScopes(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24764")
+ def test_all_but_c(self):
+ self.do_test(False)
+
+ @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24764")
+ def test_c(self):
+ self.do_test(True)
+
+ def do_test(self, test_c):
+ self.build()
+
+ # Get main source file
+ src_file = os.path.join(self.getSourceDir(), "main.cpp")
+ src_file_spec = lldb.SBFileSpec(src_file)
+ self.assertTrue(src_file_spec.IsValid(), "Main source file")
+
+ # Get the path of the executable
+ exe_path = self.getBuildArtifact("a.out")
+
+ # Load the executable
+ target = self.dbg.CreateTarget(exe_path)
+ self.assertTrue(target.IsValid(), VALID_TARGET)
+
+ # Break on main function
+ main_breakpoint = target.BreakpointCreateBySourceRegex(
+ "// break here", src_file_spec)
+ self.assertTrue(
+ main_breakpoint.IsValid() and main_breakpoint.GetNumLocations() >= 1,
+ VALID_BREAKPOINT)
+
+ # Launch the process
+ args = None
+ env = None
+ process = target.LaunchSimple(
+ args, env, self.get_process_working_directory())
+ self.assertTrue(process.IsValid(), PROCESS_IS_VALID)
+
+ # Get the thread of the process
+ self.assertTrue(
+ process.GetState() == lldb.eStateStopped,
+ PROCESS_STOPPED)
+ thread = lldbutil.get_stopped_thread(
+ process, lldb.eStopReasonBreakpoint)
+
+ # Get current fream of the thread at the breakpoint
+ frame = thread.GetSelectedFrame()
+
+ # Test result for scopes of variables
+
+ global_variables = frame.GetVariables(True, True, True, False)
+ global_variables_assert = {
+ 'A::a': 1111,
+ 'B::a': 2222,
+ 'C::a': 3333,
+ '::a': 4444,
+ 'a': 4444
+ }
+
+ self.assertTrue(
+ global_variables.GetSize() == 4,
+ "target variable returns all variables")
+ for variable in global_variables:
+ name = variable.GetName()
+ self.assertTrue(
+ name in global_variables_assert,
+ "target variable returns wrong variable " + name)
+
+ for name in global_variables_assert:
+ if name is "C::a" and not test_c:
+ continue
+ if name is not "C::a" and test_c:
+ continue
+
+ value = frame.EvaluateExpression(name)
+ assert_value = global_variables_assert[name]
+ self.assertTrue(
+ value.IsValid() and value.GetValueAsSigned() == assert_value,
+ name + " = " + str(assert_value))
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/main.cpp b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/main.cpp
new file mode 100644
index 00000000000..da5d7ed529d
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/main.cpp
@@ -0,0 +1,25 @@
+class A {
+public:
+ static int a;
+ int b;
+};
+
+class B {
+public:
+ static int a;
+ int b;
+};
+
+struct C {
+ static int a;
+};
+
+int A::a = 1111;
+int B::a = 2222;
+int C::a = 3333;
+int a = 4444;
+
+int main() // break here
+{
+ return 0;
+}