summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py
diff options
context:
space:
mode:
authorShafik Yaghmour <syaghmour@apple.com>2018-10-12 17:20:39 +0000
committerShafik Yaghmour <syaghmour@apple.com>2018-10-12 17:20:39 +0000
commitaa30268539a9e958b149b0583de02eeb7e10e5e8 (patch)
tree1a0d44cfa1fb973a4e35c34e8124b2d75ab90372 /lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py
parente2441bd26815fa7a9d57d4212103740270858bb6 (diff)
downloadbcm5719-llvm-aa30268539a9e958b149b0583de02eeb7e10e5e8.tar.gz
bcm5719-llvm-aa30268539a9e958b149b0583de02eeb7e10e5e8.zip
Adding support to step into the callable wrapped by libc++ std::function
rdar://problem/14365983 Differential Revision: https://reviews.llvm.org/D52851 llvm-svn: 344371
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py')
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py
new file mode 100644
index 00000000000..3a9c9bb05b1
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py
@@ -0,0 +1,71 @@
+"""
+Test stepping into std::function
+"""
+
+from __future__ import print_function
+
+
+import lldb
+import sys
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class LibCxxFunctionTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ NO_DEBUG_INFO_TESTCASE = True
+
+ @add_test_categories(["libc++"])
+ def test(self):
+ """Test that std::function as defined by libc++ is correctly printed by LLDB"""
+ self.build()
+
+ self.main_source = "main.cpp"
+ self.main_source_spec = lldb.SBFileSpec(self.main_source)
+ self.source_foo_line = line_number(
+ self.main_source, '// Source foo start line')
+ self.source_lambda_f2_line = line_number(
+ self.main_source, '// Source lambda used by f2 start line')
+ self.source_lambda_f3_line = line_number(
+ self.main_source, '// Source lambda used by f3 start line')
+ self.source_bar_operator_line = line_number(
+ self.main_source, '// Source Bar::operator()() start line')
+ self.source_bar_add_num_line = line_number(
+ self.main_source, '// Source Bar::add_num start line')
+ self.source_main_invoking_f1 = line_number(
+ self.main_source, '// Source main invoking f1')
+
+ (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(
+ self, "// Set break point at this line.", self.main_source_spec)
+
+ thread.StepInto()
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetLine(), self.source_main_invoking_f1 ) ;
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetFileSpec().GetFilename(), self.main_source) ;
+
+ thread.StepInto()
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetLine(), self.source_foo_line ) ;
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetFileSpec().GetFilename(), self.main_source) ;
+ process.Continue()
+
+ thread.StepInto()
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetLine(), self.source_lambda_f2_line ) ;
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetFileSpec().GetFilename(), self.main_source) ;
+ process.Continue()
+
+ thread.StepInto()
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetLine(), self.source_lambda_f3_line ) ;
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetFileSpec().GetFilename(), self.main_source) ;
+ process.Continue()
+
+ thread.StepInto()
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetLine(), self.source_bar_operator_line ) ;
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetFileSpec().GetFilename(), self.main_source) ;
+ process.Continue()
+
+ thread.StepInto()
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetLine(), self.source_bar_add_num_line ) ;
+ self.assertEqual( thread.GetFrameAtIndex(0).GetLineEntry().GetFileSpec().GetFilename(), self.main_source) ;
+ process.Continue()
OpenPOWER on IntegriCloud