[Lldb-commits] [lldb] r118856 - in /lldb/trunk/test/namespace: TestNamespace.py main.cpp

Johnny Chen johnny.chen at apple.com
Thu Nov 11 15:29:55 PST 2010


Author: johnny
Date: Thu Nov 11 17:29:54 2010
New Revision: 118856

URL: http://llvm.org/viewvc/llvm-project?rev=118856&view=rev
Log:
Add TestNamespace.py to exercise printing of anonymous and named namespace variables.

Added:
    lldb/trunk/test/namespace/TestNamespace.py
Modified:
    lldb/trunk/test/namespace/main.cpp

Added: lldb/trunk/test/namespace/TestNamespace.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/namespace/TestNamespace.py?rev=118856&view=auto
==============================================================================
--- lldb/trunk/test/namespace/TestNamespace.py (added)
+++ lldb/trunk/test/namespace/TestNamespace.py Thu Nov 11 17:29:54 2010
@@ -0,0 +1,66 @@
+"""
+Test the printing of anonymous and named namespace variables.
+"""
+
+import os, time
+import unittest2
+import lldb
+from lldbtest import *
+
+class NamespaceTestCase(TestBase):
+
+    mydir = "namespace"
+
+    @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
+    def test_with_dsym_and_run_command(self):
+        """Test that anonymous and named namespace variables display correctly."""
+        self.buildDsym()
+        self.namespace_variable_commands()
+
+    def test_with_dwarf_and_run_command(self):
+        """Test that anonymous and named namespace variables display correctly."""
+        self.buildDwarf()
+        self.namespace_variable_commands()
+
+    def setUp(self):
+        # Call super's setUp().
+        TestBase.setUp(self)
+        # Find the line numbers for declarations of namespace variables i and j.
+        self.line_var_i = line_number('main.cpp',
+                '// Find the line number for anonymous namespace variable i.')
+        self.line_var_j = line_number('main.cpp',
+                '// Find the line number for named namespace variable j.')
+        # And the line number to break at.
+        self.line_break = line_number('main.cpp',
+                '// Set break point at this line.')
+
+    def namespace_variable_commands(self):
+        """Test that anonymous and named namespace variables display correctly."""
+        self.runCmd("file a.out", CURRENT_EXECUTABLE_SET)
+
+        self.expect("breakpoint set -f main.cpp -l %d" % self.line_break,
+                    BREAKPOINT_CREATED,
+            startstr = "Breakpoint created: 1: file ='main.cpp', line = %d, locations = 1" %
+                        self.line_break)
+
+        self.runCmd("run", RUN_SUCCEEDED)
+
+        # The stop reason of the thread should be breakpoint.
+        self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
+            substrs = ['state is stopped',
+                       'stop reason = breakpoint'])
+
+        self.expect("frame variable -c -G i",
+            startstr = "main.cpp:%d: (int) (anonymous namespace)::i = 3" % self.line_var_i)
+        # main.cpp:12: (int) (anonymous namespace)::i = 3
+
+        self.expect("frame variable -c -G j",
+            startstr = "main.cpp:%d: (int) A::B::j = 4" % self.line_var_j)
+        # main.cpp:19: (int) A::B::j = 4
+
+
+if __name__ == '__main__':
+    import atexit
+    lldb.SBDebugger.Initialize()
+    atexit.register(lambda: lldb.SBDebugger.Terminate())
+    unittest2.main()

Modified: lldb/trunk/test/namespace/main.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/namespace/main.cpp?rev=118856&r1=118855&r2=118856&view=diff
==============================================================================
--- lldb/trunk/test/namespace/main.cpp (original)
+++ lldb/trunk/test/namespace/main.cpp Thu Nov 11 17:29:54 2010
@@ -9,14 +9,14 @@
 
 namespace {
     typedef unsigned int uint_t;
-    int i;
+    int i; // Find the line number for anonymous namespace variable i.
 }
 
 namespace A {
     typedef unsigned int uint_t;
     namespace B {
         typedef unsigned int uint_t;
-        int j;
+        int j; // Find the line number for named namespace variable j.
         int myfunc (int a);
         int myfunc2(int a)
         {
@@ -59,7 +59,7 @@
     Y::uint_t y_uint = 3;
     i = 3;
     j = 4;
-    return myfunc2(3) + j + i + a + 2 + anon_uint + a_uint + b_uint + y_uint;
+    return myfunc2(3) + j + i + a + 2 + anon_uint + a_uint + b_uint + y_uint; // Set break point at this line.
 }
 
 int





More information about the lldb-commits mailing list