[Lldb-commits] [lldb] r134944 - in /lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries: ./ Makefile TestDataFormatterNamedSummaries.py main.cpp

Enrico Granata granata.enrico at gmail.com
Mon Jul 11 17:19:00 PDT 2011


Author: enrico
Date: Mon Jul 11 19:19:00 2011
New Revision: 134944

URL: http://llvm.org/viewvc/llvm-project?rev=134944&view=rev
Log:
test case for the named summaries feature

Added:
    lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/
    lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/Makefile
    lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py
    lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/main.cpp

Added: lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/Makefile
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/Makefile?rev=134944&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/Makefile (added)
+++ lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/Makefile Mon Jul 11 19:19:00 2011
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+
+CXX_SOURCES := main.cpp
+
+include $(LEVEL)/Makefile.rules

Added: lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py?rev=134944&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py (added)
+++ lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py Mon Jul 11 19:19:00 2011
@@ -0,0 +1,137 @@
+"""
+Test lldb data formatter subsystem.
+"""
+
+import os, time
+import unittest2
+import lldb
+from lldbtest import *
+
+class DataFormatterTestCase(TestBase):
+
+    mydir = os.path.join("functionalities", "data-formatter", "data-formatter-named-summaries")
+
+    @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
+    def test_with_dsym_and_run_command(self):
+        """Test data formatter commands."""
+        self.buildDsym()
+        self.data_formatter_commands()
+
+    def test_with_dwarf_and_run_command(self):
+        """Test data formatter commands."""
+        self.buildDwarf()
+        self.data_formatter_commands()
+
+    def setUp(self):
+        # Call super's setUp().
+        TestBase.setUp(self)
+        # Find the line number to break at.
+        self.line = line_number('main.cpp', '// Set break point at this line.')
+
+    def data_formatter_commands(self):
+        """Test that that file and class static variables display correctly."""
+        self.runCmd("file a.out", CURRENT_EXECUTABLE_SET)
+
+        self.expect("breakpoint set -f main.cpp -l %d" % self.line,
+                    BREAKPOINT_CREATED,
+            startstr = "Breakpoint created: 1: file ='main.cpp', line = %d, locations = 1" %
+                        self.line)
+
+        self.runCmd("run", RUN_SUCCEEDED)
+
+        # The stop reason of the thread should be breakpoint.
+        self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
+            substrs = ['stopped',
+                       'stop reason = breakpoint'])
+        
+        # This is the function to remove the custom formats in order to have a
+        # clean slate for the next test case.
+        def cleanup():
+            self.runCmd('type format clear', check=False)
+            self.runCmd('type summary clear', check=False)
+
+        # Execute the cleanup function during test case tear down.
+        self.addTearDownHook(cleanup)
+
+        self.runCmd("type summary add -f \"AllUseIt: x=${var.x} {y=${var.y}} {z=${var.z}}\" --name AllUseIt")
+        self.runCmd("type summary add -f \"First: x=${var.x} y=${var.y} dummy=${var.dummy}\" First")
+        self.runCmd("type summary add -f \"Second: x=${var.x} y=${var.y%hex}\" Second")
+        self.runCmd("type summary add -f \"Third: x=${var.x} z=${var.z}\" Third")
+                    
+        self.expect("frame variable first",
+            substrs = ['First: x=12'])
+
+        self.expect("frame variable first --summary AllUseIt",
+            substrs = ['AllUseIt: x=12'])
+                    
+        # We remember the summary choice...
+        self.expect("frame variable first",
+            substrs = ['AllUseIt: x=12'])
+                    
+        self.runCmd("thread step-over") # 2
+                  
+        # ...but not after a stoppoint
+        self.expect("frame variable first",
+            substrs = ['First: x=12'])
+                    
+        self.expect("frame variable first --summary AllUseIt",
+            substrs = ['AllUseIt: x=12',
+                       'y=34'])
+
+        self.expect("frame variable second --summary AllUseIt",
+            substrs = ['AllUseIt: x=65',
+                       'y=43.21'])
+
+        self.expect("frame variable third --summary AllUseIt",
+            substrs = ['AllUseIt: x=96',
+                       'z=',
+                        'E'])
+
+        self.runCmd("thread step-over") # 3
+                    
+        self.expect("frame variable second",
+            substrs = ['Second: x=65',
+                        'y=0x'])
+                    
+        self.expect("frame variable second --summary NoSuchSummary",
+            substrs = ['Second: x=65',
+                        'y=0x'])
+                    
+        self.runCmd("thread step-over")
+                    
+        self.runCmd("type summary add -f \"FirstAndFriends: x=${var.x} {y=${var.y}} {z=${var.z}}\" First --name FirstAndFriends")
+                    
+        self.expect("frame variable first",
+            substrs = ['FirstAndFriends: x=12',
+                        'y=34'])
+
+        self.runCmd("type summary delete First")
+                    
+        self.expect("frame variable first --summary FirstAndFriends",
+            substrs = ['FirstAndFriends: x=12',
+                        'y=34'])
+                    
+        self.expect("frame variable first",
+            substrs = ['FirstAndFriends: x=12',
+                        'y=34'])
+                    
+        self.runCmd("type summary delete FirstAndFriends")
+        self.expect("type summary delete NoSuchSummary", error=True)
+        self.runCmd("type summary delete AllUseIt")
+                    
+        self.expect("frame variable first",
+            substrs = ['FirstAndFriends: x=12',
+                       'y=34'])
+
+        self.runCmd("thread step-over") # 4
+
+        self.expect("frame variable first",matching=False,
+            substrs = ['FirstAndFriends: x=12',
+                       'y=34'])
+
+                    
+if __name__ == '__main__':
+    import atexit
+    lldb.SBDebugger.Initialize()
+    atexit.register(lambda: lldb.SBDebugger.Terminate())
+    unittest2.main()

Added: lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/main.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/main.cpp?rev=134944&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/main.cpp (added)
+++ lldb/trunk/test/functionalities/data-formatter/data-formatter-named-summaries/main.cpp Mon Jul 11 19:19:00 2011
@@ -0,0 +1,59 @@
+//===-- main.cpp ------------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+
+struct First
+{
+    int x;
+    int y;
+    float dummy;
+    First(int X, int Y) :
+    x(X),
+    y(Y),
+    dummy(3.14)
+    {}
+};
+
+struct Second
+{
+    int x;
+    float y;
+    Second(int X, float Y) :
+    x(X),
+    y(Y)
+    {}
+};
+
+struct Third
+{
+    int x;
+    char z;
+    Third(int X, char Z) :
+    x(X),
+    z(Z)
+    {}
+};
+
+int main (int argc, const char * argv[])
+{
+    First first(12,34);
+    Second second(65,43.21);
+    Third *third = new Third(96,'E');
+    
+    first.dummy = 1; // Set break point at this line.
+    first.dummy = 2;
+    first.dummy = 3;
+    first.dummy = 4;
+    first.dummy = 5;
+    
+}
+





More information about the lldb-commits mailing list