[Lldb-commits] [lldb] r233236 - Add a test to make sure if you do:

Greg Clayton gclayton at apple.com
Wed Mar 25 17:27:46 PDT 2015


Author: gclayton
Date: Wed Mar 25 19:27:46 2015
New Revision: 233236

URL: http://llvm.org/viewvc/llvm-project?rev=233236&view=rev
Log:
Add a test to make sure if you do:

% lldb /bin/echo
(lldb) r 1 2 3
(lldb) r 

You get "1", "2", and "3" as arguments in the next re-run when no args are specified. This is behavior we do to match what GDB did and we need to test that we don't regress on it.

<rdar://problem/20300941>


Added:
    lldb/trunk/test/functionalities/rerun/
    lldb/trunk/test/functionalities/rerun/Makefile
    lldb/trunk/test/functionalities/rerun/TestRerun.py
    lldb/trunk/test/functionalities/rerun/main.cpp

Added: lldb/trunk/test/functionalities/rerun/Makefile
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/rerun/Makefile?rev=233236&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/rerun/Makefile (added)
+++ lldb/trunk/test/functionalities/rerun/Makefile Wed Mar 25 19:27:46 2015
@@ -0,0 +1,5 @@
+LEVEL = ../../make
+
+CXX_SOURCES := main.cpp
+
+include $(LEVEL)/Makefile.rules

Added: lldb/trunk/test/functionalities/rerun/TestRerun.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/rerun/TestRerun.py?rev=233236&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/rerun/TestRerun.py (added)
+++ lldb/trunk/test/functionalities/rerun/TestRerun.py Wed Mar 25 19:27:46 2015
@@ -0,0 +1,94 @@
+"""
+Test that argdumper is a viable launching strategy.
+"""
+import commands
+import lldb
+import os
+import time
+import unittest2
+from lldbtest import *
+import lldbutil
+
+class TestRerun(TestBase):
+
+    mydir = TestBase.compute_mydir(__file__)
+
+        
+    @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
+    @dsym_test
+    def test_with_dsym (self):
+        self.buildDsym()
+        self.do_test ()
+
+
+    @dwarf_test
+    def test_with_dwarf (self):
+        self.buildDwarf()
+        self.do_test ()
+
+    def do_test (self):
+        exe = os.path.join (os.getcwd(), "a.out")
+        
+        self.runCmd("target create %s" % exe)
+        
+        # Create the target
+        target = self.dbg.CreateTarget(exe)
+        
+        # Create any breakpoints we need
+        breakpoint = target.BreakpointCreateBySourceRegex ('break here', lldb.SBFileSpec ("main.cpp", False))
+        self.assertTrue(breakpoint, VALID_BREAKPOINT)
+
+        self.runCmd("process launch 1 2 3")
+
+        process = self.process()
+
+        self.assertTrue(process.GetState() == lldb.eStateStopped,
+                        STOPPED_DUE_TO_BREAKPOINT)
+
+        thread = process.GetThreadAtIndex (0)
+
+        self.assertTrue (thread.IsValid(),
+                         "Process stopped at 'main' should have a valid thread");
+
+        stop_reason = thread.GetStopReason()
+        
+        self.assertTrue (stop_reason == lldb.eStopReasonBreakpoint,
+                         "Thread in process stopped in 'main' should have a stop reason of eStopReasonBreakpoint");
+
+        self.expect("frame variable argv[1]", substrs=['1'])
+        self.expect("frame variable argv[2]", substrs=['2'])
+        self.expect("frame variable argv[3]", substrs=['3'])
+        
+        # Let program exit
+        self.runCmd("continue")
+        
+        # Re-run with no args and make sure we still run with 1 2 3 as arguments as
+        # they should have been stored in "target.run-args"
+        self.runCmd("process launch")
+
+        process = self.process()
+        
+        self.assertTrue(process.GetState() == lldb.eStateStopped,
+                        STOPPED_DUE_TO_BREAKPOINT)
+
+        thread = process.GetThreadAtIndex (0)
+
+        self.assertTrue (thread.IsValid(),
+                         "Process stopped at 'main' should have a valid thread");
+
+        stop_reason = thread.GetStopReason()
+        
+        self.assertTrue (stop_reason == lldb.eStopReasonBreakpoint,
+                         "Thread in process stopped in 'main' should have a stop reason of eStopReasonBreakpoint");
+
+        self.expect("frame variable argv[1]", substrs=['1'])
+        self.expect("frame variable argv[2]", substrs=['2'])
+        self.expect("frame variable argv[3]", substrs=['3'])
+        
+
+if __name__ == '__main__':
+    import atexit
+    lldb.SBDebugger.Initialize()
+    atexit.register(lambda: lldb.SBDebugger.Terminate())
+    unittest2.main()
+

Added: lldb/trunk/test/functionalities/rerun/main.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/rerun/main.cpp?rev=233236&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/rerun/main.cpp (added)
+++ lldb/trunk/test/functionalities/rerun/main.cpp Wed Mar 25 19:27:46 2015
@@ -0,0 +1,5 @@
+int 
+main (int argc, char const **argv)
+{
+    return 0; // break here
+}





More information about the lldb-commits mailing list