teak-llvm/lldb/packages/Python/lldbsuite/test/lang/cpp/chained-calls/TestCppChainedCalls.py
Stella Stamenova 0ab990345a [lldbsuite] Un-xfail tests on Windows that are now passing (pt.2)
This is a set of tests that were all marked as failing becuse of pr21765. The bug is not fixed (as in more of the tests that were marked this way are failing), but this set is passing. It is possible that some of them are false positives, but there's a large number of unexpectedly passing tests on Windows, so I am doing a bulk un-xfail to get the buildbot to green.

llvm-svn: 349668
2018-12-19 19:10:25 +00:00

100 lines
3.4 KiB
Python

import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class TestCppChainedCalls(TestBase):
mydir = TestBase.compute_mydir(__file__)
def test_with_run_command(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
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 frame for current thread
frame = thread.GetSelectedFrame()
# Test chained calls
test_result = frame.EvaluateExpression("get(set(true))")
self.assertTrue(
test_result.IsValid() and test_result.GetValue() == "true",
"get(set(true)) = true")
test_result = frame.EvaluateExpression("get(set(false))")
self.assertTrue(
test_result.IsValid() and test_result.GetValue() == "false",
"get(set(false)) = false")
test_result = frame.EvaluateExpression("get(t & f)")
self.assertTrue(
test_result.IsValid() and test_result.GetValue() == "false",
"get(t & f) = false")
test_result = frame.EvaluateExpression("get(f & t)")
self.assertTrue(
test_result.IsValid() and test_result.GetValue() == "false",
"get(f & t) = false")
test_result = frame.EvaluateExpression("get(t & t)")
self.assertTrue(
test_result.IsValid() and test_result.GetValue() == "true",
"get(t & t) = true")
test_result = frame.EvaluateExpression("get(f & f)")
self.assertTrue(
test_result.IsValid() and test_result.GetValue() == "false",
"get(f & f) = false")
test_result = frame.EvaluateExpression("get(t & f)")
self.assertTrue(
test_result.IsValid() and test_result.GetValue() == "false",
"get(t & f) = false")
test_result = frame.EvaluateExpression("get(f) && get(t)")
self.assertTrue(
test_result.IsValid() and test_result.GetValue() == "false",
"get(f) && get(t) = false")
test_result = frame.EvaluateExpression("get(f) && get(f)")
self.assertTrue(
test_result.IsValid() and test_result.GetValue() == "false",
"get(f) && get(t) = false")
test_result = frame.EvaluateExpression("get(t) && get(t)")
self.assertTrue(
test_result.IsValid() and test_result.GetValue() == "true",
"get(t) && get(t) = true")