tests/GDBDebuggerTestsR.st
changeset 152 fab425b52c21
parent 144 342b6dfe3a6f
child 163 f882d9048b54
--- a/tests/GDBDebuggerTestsR.st	Thu Oct 11 09:55:43 2018 +0200
+++ b/tests/GDBDebuggerTestsR.st	Sat Oct 20 07:48:11 2018 +0100
@@ -52,7 +52,31 @@
 
 documentation
 "
-    Tests for GDBDebugger (using real test programs)         
+    Tests for GDBDebugger API. 
+
+    # Custom Debugger Setup
+
+    By default, this tests spawns a default, locally run
+    debugger for each test (see GDBDebugger >> new). To customize
+    the debugger setup, set GDBDebuggerTestsR >> debuggerSetupBlock
+    returning a GDBDebugger instance with all the necessary setup 
+    done. For example, to use externally run GDB over TCP socket:
+
+     * First, run 'GDB/MI server' (don't confuse with `gdbservver`!!)
+       run (in terminal):
+
+           socat TCP4-LISTEN:1234,FORK EXEC:'gdb -i mi2'
+
+     *
+
+
+
+
+
+    
+
+
+
 
     [author:]
         Jan Vrany <jan.vrany@fit.cvut.cz>
@@ -79,9 +103,6 @@
 test_02
     | inferior1 thread1 frame1 frame2  seqNo1 seqNo2 |
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     debugger send: 'b factorial'.
 
@@ -127,8 +148,8 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 28-02-2015 / 00:55:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 12-02-2018 / 22:50:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 19-01-2018 / 09:23:24 / jv"
+    "Modified: / 18-10-2018 / 10:54:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_03
@@ -136,9 +157,6 @@
 
     self skipIf: OperatingSystem isMSWINDOWSlike  description: 'Skipped since we cannot interact with inferor on Windows (no TTY support)'.
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     debugger executable: GDBDebuggeesResource current binaryPressAnyKey.
 
     debugger send: (GDBMI_exec_run new).
@@ -160,14 +178,13 @@
     debugger send: 'quit' andWait: false
 
     "Created: / 08-03-2015 / 07:42:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 01-06-2017 / 22:30:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 12-01-2018 / 14:53:19 / jv"
+    "Modified: / 18-10-2018 / 10:55:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_basic_01
     | timeToExit eventPumpProcess eventDispatchProcess|
 
-    debugger := GDBDebugger new.
     timeToExit := 0.
     eventPumpProcess := (debugger instVarNamed: #connection) instVarNamed: #eventPumpProcess.
     eventDispatchProcess := (debugger instVarNamed: #connection) instVarNamed: #eventDispatchProcess.
@@ -186,16 +203,11 @@
     self assert: eventDispatchProcess isDead.
 
     "Created: / 24-06-2014 / 09:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 31-05-2017 / 22:42:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 12-01-2018 / 15:29:08 / jv"
+    "Modified: / 18-10-2018 / 10:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_breakpoints_01a
-    |  |
-
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     self assert: debugger breakpoints isEmpty.
 
@@ -216,14 +228,10 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 07-07-2017 / 12:25:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:55:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_breakpoints_01b
-    |  |
-
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     self assert: debugger breakpoints isEmpty.
 
@@ -244,14 +252,10 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 07-07-2017 / 12:27:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 18-10-2018 / 10:55:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_breakpoints_01c
-    |  |
-
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     self assert: debugger breakpoints isEmpty.
 
@@ -272,15 +276,36 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 07-07-2017 / 12:34:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:55:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_breakpoints_02
+    debugger executable: GDBDebuggeesResource current binaryFactorial1.
+    self assert: debugger breakpoints isEmpty.
+
+    debugger send: 'b main'.
+    self assert: debugger breakpoints size == 1.
+
+    debugger send: 'r' andWaitFor: GDBStoppedEvent.
+    self assert: debugger breakpoints size == 1.
+
+    debugger send: 'del'.
+    self assert: debugger breakpoints isEmpty.
+
+    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
+    self assert: debugger breakpoints isEmpty.
+
+    debugger send: 'quit' andWait: false.
+
+    "Created: / 07-07-2017 / 11:53:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 12-01-2018 / 22:04:46 / jv"
+    "Modified: / 18-10-2018 / 10:55:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_breakpoints_03a
 
     self skipIf: OperatingSystem isMSWINDOWSlike  description: 'Skipped since we don;t have separate console TTY (no TTY support)'.
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     self assert: debugger breakpoints isEmpty.
 
@@ -303,14 +328,11 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 10-07-2017 / 22:05:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 11-07-2017 / 11:06:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 12-01-2018 / 14:57:37 / jv"
+    "Modified: / 18-10-2018 / 10:55:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_breakpoints_04a
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     self assert: debugger breakpoints isEmpty.
 
@@ -332,7 +354,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 11-07-2017 / 20:35:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 11-07-2017 / 23:31:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:55:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_breakpoints_05a
@@ -349,9 +371,6 @@
     "    
 
     self skipIf: true description: 'Known to fail due to a bug in GDB'.
-        debugger := GDBDebugger new.
-
-    self assert: debugger isConnected.
 
     debugger executable: GDBDebuggeesResource current binaryBreakpoints1.
     self assert: debugger breakpoints isEmpty.
@@ -388,15 +407,12 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 18-05-2018 / 10:52:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 23-05-2018 / 10:49:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:56:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_directories
     | directories current |
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     directories := debugger directories.
     self assert: directories isArray.
     self assert: directories notEmpty.
@@ -416,12 +432,12 @@
 
     "Created: / 09-03-2018 / 12:28:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 03-04-2018 / 21:08:26 / jv"
+    "Modified: / 18-10-2018 / 10:56:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_disassembly_01
     | asm |
 
-    debugger := GDBDebugger new.
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     debugger send: 'r' andWaitFor: GDBThreadGroupExitedEvent.
 
@@ -433,12 +449,11 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 22-06-2018 / 11:52:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:56:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_features
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
     self assert: debugger features isArray.
     self assert: debugger features notEmpty.
     self assert: (debugger hasFeature: debugger features anyOne).
@@ -448,13 +463,12 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 07-02-2018 / 10:56:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:56:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_registers_01a
     | stack rax rip rsp raxValue1 ripValue1 rspValue1 raxValue2 ripValue2 rspValue2 |
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     debugger send: 'b factorial'.
     debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -500,7 +514,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 27-09-2018 / 10:45:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 27-09-2018 / 16:02:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:56:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_stack_01a
@@ -509,8 +523,6 @@
 
     | stack1 stack2 |
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     debugger send: 'b factorial'.
     debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -543,6 +555,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 06-08-2018 / 15:06:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:56:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_stack_01b
@@ -551,8 +564,6 @@
 
     | stack1 pc1 stack2 pc2 |
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     debugger send: 'b factorial'.
     debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -573,13 +584,12 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 06-08-2018 / 15:07:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:57:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_stack_02
     | stack1 stack2 |
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
     debugger executable: GDBDebuggeesResource current binaryVariables1.
     debugger send: 'b set_data_i'.
     debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -596,7 +606,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 12-02-2018 / 21:46:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 15-02-2018 / 09:16:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:57:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_stack_03
@@ -605,8 +615,6 @@
 
     | stack2 selection |
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     debugger send: 'b factorial'.
     debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -631,12 +639,12 @@
     self assert: selection frame == stack2 third.
 
     "Created: / 30-07-2018 / 07:07:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:57:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_variables_01
     | thread frame variables d |
 
-    debugger := GDBDebugger new.
     debugger executable: GDBDebuggeesResource current binaryVariables1.
 
     debugger send: 'b main'.
@@ -688,7 +696,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 30-01-2018 / 10:27:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 13-02-2018 / 22:02:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:57:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_variables_02
@@ -698,7 +706,6 @@
     "    
     | variables1 variables2 |
 
-    debugger := GDBDebugger new.
     debugger executable: GDBDebuggeesResource current binaryVariables1.
 
     debugger send: 'b main'.
@@ -719,6 +726,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 01-02-2018 / 21:45:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:58:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_variables_03
@@ -727,7 +735,6 @@
     " 
     | variables d d_i |
 
-    debugger := GDBDebugger new.
     debugger executable: GDBDebuggeesResource current binaryVariables1.
 
     debugger send: 'b set_data_i'.
@@ -764,7 +771,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 01-02-2018 / 21:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 12-02-2018 / 22:36:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:58:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_variables_04
@@ -774,7 +781,6 @@
     " 
     | variables d d_as_i_a events seqNo1 seqNo2 |
 
-    debugger := GDBDebugger new.
     events := OrderedCollection new.
     debugger announcer when: GDBEvent send: #add: to: events.
 
@@ -809,7 +815,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 04-02-2018 / 22:04:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 13-02-2018 / 10:15:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:58:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_variables_05
@@ -819,7 +825,6 @@
     " 
     | variables d |
 
-    debugger := GDBDebugger new.
     debugger executable: GDBDebuggeesResource current binaryVariables1.
 
     debugger send: 'b set_data_i'.
@@ -850,6 +855,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 12-02-2018 / 21:34:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:58:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_variables_06
@@ -858,7 +864,6 @@
     " 
     | variables d1 d_i1 d_i2 |
 
-    debugger := GDBDebugger new.
     debugger executable: GDBDebuggeesResource current binaryVariables1.
 
     debugger send: 'b set_data_i'.
@@ -903,14 +908,12 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 13-02-2018 / 22:27:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:58:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_variables_07
     | stack v1 v2 v3 |
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     self assert: debugger breakpoints isEmpty.
 
@@ -941,6 +944,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 20-03-2018 / 22:32:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:58:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_variables_08
@@ -949,11 +953,6 @@
     "
     | c1 c1_cdr c1_cdr_cdr |
 
-
-
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     debugger executable: GDBDebuggeesResource current binaryPyVarobj.
     self assert: debugger breakpoints isEmpty.
 
@@ -982,7 +981,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 01-06-2018 / 16:27:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (comment): / 04-06-2018 / 11:02:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:58:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_variables_09
@@ -991,9 +990,6 @@
     "
     | c1 c1_cdr c1_cdr_d  c1_cdr_d_cdr c1_cdr_d_cdr_d |
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     debugger executable: GDBDebuggeesResource current binaryPyVarobj.
     self assert: debugger breakpoints isEmpty.
 
@@ -1028,6 +1024,7 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 04-06-2018 / 15:08:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:58:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 test_variables_10a
@@ -1036,9 +1033,6 @@
     "
     | stack |
 
-    debugger := GDBDebugger new.
-    self assert: debugger isConnected.
-
     debugger executable: GDBDebuggeesResource current binaryFactorial1.
     self assert: debugger breakpoints isEmpty.
 
@@ -1063,12 +1057,6 @@
     debugger send: 'quit' andWait: false.
 
     "Created: / 05-07-2018 / 11:48:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-10-2018 / 10:59:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!GDBDebuggerTestsR class methodsFor:'documentation'!
-
-version_HG
-
-    ^ '$Changeset: <not expanded> $'
-! !
-