Author: gclayton
Date: Wed Jul 13 17:38:54 2016
New Revision: 275336

URL: http://llvm.org/viewvc/llvm-project?rev=275336&view=rev
Log:
Added test for setting breakpoints by basename and fullname.

<rdar://problem/24599697> 


Modified:
    
lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py

Modified: 
lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py?rev=275336&r1=275335&r2=275336&view=diff
==============================================================================
--- 
lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py 
(original)
+++ 
lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py 
Wed Jul 13 17:38:54 2016
@@ -12,6 +12,73 @@ from lldbsuite.test.decorators import *
 from lldbsuite.test.lldbtest import *
 from lldbsuite.test import lldbutil
 
+class NamespaceBreakpointTestCase(TestBase):
+
+    mydir = TestBase.compute_mydir(__file__)
+
+    def test_breakpoints_func_auto(self):
+        """Test that we can set breakpoints correctly by basename to find all 
functions whose basename is "func"."""
+        self.build()
+
+        names = [ "func()", "func(int)", "A::B::func()", "A::func()", 
"A::func(int)"]
+
+        # Create a target by the debugger.
+        exe = os.path.join(os.getcwd(), "a.out")
+        target = self.dbg.CreateTarget(exe)
+        self.assertTrue(target, VALID_TARGET)
+        module_list = lldb.SBFileSpecList()
+        module_list.Append(lldb.SBFileSpec(exe, False))
+        cu_list = lldb.SBFileSpecList()
+        # Set a breakpoint by name "func" which should pick up all functions 
whose basename is "func"
+        bp = target.BreakpointCreateByName ("func", 
lldb.eFunctionNameTypeAuto, module_list, cu_list);
+        for bp_loc in bp:
+            name = bp_loc.GetAddress().GetFunction().GetName()
+            self.assertTrue(name in names, "make sure breakpoint locations are 
correct for 'func' with eFunctionNameTypeAuto")        
+
+    def test_breakpoints_func_full(self):
+        """Test that we can set breakpoints correctly by fullname to find all 
functions whose fully qualified name is "func"
+           (no namespaces)."""
+        self.build()
+
+        names = [ "func()", "func(int)"]
+
+        # Create a target by the debugger.
+        exe = os.path.join(os.getcwd(), "a.out")
+        target = self.dbg.CreateTarget(exe)
+        self.assertTrue(target, VALID_TARGET)
+        module_list = lldb.SBFileSpecList()
+        module_list.Append(lldb.SBFileSpec(exe, False))
+        cu_list = lldb.SBFileSpecList()
+
+        # Set a breakpoint by name "func" whose fullly qualified named matches 
"func" which 
+        # should pick up only functions whose basename is "func" and has no 
containing context
+        bp = target.BreakpointCreateByName ("func", 
lldb.eFunctionNameTypeFull, module_list, cu_list);
+        for bp_loc in bp:
+            name = bp_loc.GetAddress().GetFunction().GetName()
+            self.assertTrue(name in names, "make sure breakpoint locations are 
correct for 'func' with eFunctionNameTypeFull")        
+
+    def test_breakpoints_a_func_full(self):
+        """Test that we can set breakpoints correctly by fullname to find all 
functions whose fully qualified name is "A::func"."""
+        self.build()
+
+        names = [ "A::func()", "A::func(int)"]
+
+        # Create a target by the debugger.
+        exe = os.path.join(os.getcwd(), "a.out")
+        target = self.dbg.CreateTarget(exe)
+        self.assertTrue(target, VALID_TARGET)
+        module_list = lldb.SBFileSpecList()
+        module_list.Append(lldb.SBFileSpec(exe, False))
+        cu_list = lldb.SBFileSpecList()
+
+        # Set a breakpoint by name "A::func" whose fullly qualified named 
matches "A::func" which 
+        # should pick up only functions whose basename is "func" and is 
contained in the "A" namespace
+        bp = target.BreakpointCreateByName ("A::func", 
lldb.eFunctionNameTypeFull, module_list, cu_list);
+        for bp_loc in bp:
+            name = bp_loc.GetAddress().GetFunction().GetName()
+            self.assertTrue(name in names, "make sure breakpoint locations are 
correct for 'A::func' with eFunctionNameTypeFull")        
+
+
 class NamespaceTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)


_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to