aboutsummaryrefslogtreecommitdiff
path: root/packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-01-02 19:26:05 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-01-02 19:26:05 +0000
commit14f1b3e8826ce43b978db93a62d1166055db5394 (patch)
tree0a00ad8d3498783fe0193f3b656bca17c4c8697d /packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py
parent4ee8c119c71a06dcad1e0fecc8c675e480e59337 (diff)
downloadsrc-14f1b3e8826ce43b978db93a62d1166055db5394.tar.gz
src-14f1b3e8826ce43b978db93a62d1166055db5394.zip
Vendor import of lldb trunk r290819:vendor/lldb/lldb-trunk-r290819
Notes
Notes: svn path=/vendor/lldb/dist/; revision=311128 svn path=/vendor/lldb/lldb-trunk-r290819/; revision=311129; tag=vendor/lldb/lldb-trunk-r290819
Diffstat (limited to 'packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py')
-rw-r--r--packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py78
1 files changed, 60 insertions, 18 deletions
diff --git a/packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py b/packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py
index eac78cd29951..21d86f973a35 100644
--- a/packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py
+++ b/packages/Python/lldbsuite/test/lang/cpp/global_operators/TestCppGlobalOperators.py
@@ -6,50 +6,92 @@ from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
+
class TestCppGlobalOperators(TestBase):
-
+
mydir = TestBase.compute_mydir(__file__)
-
- @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr21765")
- def test_with_run_command(self):
+
+ def prepare_executable_and_get_frame(self):
self.build()
# Get main source file
src_file = "main.cpp"
src_file_spec = lldb.SBFileSpec(src_file)
self.assertTrue(src_file_spec.IsValid(), "Main source file")
-
+
# Get the path of the executable
cwd = os.getcwd()
exe_file = "a.out"
- exe_path = os.path.join(cwd, exe_file)
-
+ exe_path = os.path.join(cwd, exe_file)
+
# 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)
+ 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())
+ 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)
+ self.assertTrue(
+ process.GetState() == lldb.eStateStopped,
+ PROCESS_STOPPED)
+ thread = lldbutil.get_stopped_thread(
+ process, lldb.eStopReasonBreakpoint)
- # Check if global operators are evaluated
- frame = thread.GetSelectedFrame()
+ return thread.GetSelectedFrame()
+
+ @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr21765")
+ def test_equals_operator(self):
+ frame = self.prepare_executable_and_get_frame()
test_result = frame.EvaluateExpression("operator==(s1, s2)")
- self.assertTrue(test_result.IsValid() and test_result.GetValue() == "false", "operator==(s1, s2) = false")
-
+ self.assertTrue(
+ test_result.IsValid() and test_result.GetValue() == "false",
+ "operator==(s1, s2) = false")
+
test_result = frame.EvaluateExpression("operator==(s1, s3)")
- self.assertTrue(test_result.IsValid() and test_result.GetValue() == "true", "operator==(s1, s3) = true")
+ self.assertTrue(
+ test_result.IsValid() and test_result.GetValue() == "true",
+ "operator==(s1, s3) = true")
test_result = frame.EvaluateExpression("operator==(s2, s3)")
- self.assertTrue(test_result.IsValid() and test_result.GetValue() == "false", "operator==(s2, s3) = false")
+ self.assertTrue(
+ test_result.IsValid() and test_result.GetValue() == "false",
+ "operator==(s2, s3) = false")
+
+ def do_new_test(self, frame, expr, expected_value_name):
+ """Evaluate a new expression, and check its result"""
+
+ expected_value = frame.FindValue(
+ expected_value_name, lldb.eValueTypeVariableGlobal)
+ self.assertTrue(expected_value.IsValid())
+
+ expected_value_addr = expected_value.AddressOf()
+ self.assertTrue(expected_value_addr.IsValid())
+
+ got = frame.EvaluateExpression(expr)
+ self.assertTrue(got.IsValid())
+ self.assertEqual(
+ got.GetValueAsUnsigned(),
+ expected_value_addr.GetValueAsUnsigned())
+ got_type = got.GetType()
+ self.assertTrue(got_type.IsPointerType())
+ self.assertEqual(got_type.GetPointeeType().GetName(), "Struct")
+
+ @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr21765")
+ def test_operator_new(self):
+ frame = self.prepare_executable_and_get_frame()
+
+ self.do_new_test(frame, "new Struct()", "global_new_buf")
+ self.do_new_test(frame, "new(new_tag) Struct()", "tagged_new_buf")