reports/Builder__TestReport.st
changeset 164 707c2a3ef492
parent 111 d0fa0756222b
child 189 bd2bed33aba7
--- a/reports/Builder__TestReport.st	Tue Jun 25 20:25:40 2013 +0200
+++ b/reports/Builder__TestReport.st	Tue Jun 25 20:25:50 2013 +0200
@@ -3,7 +3,7 @@
 "{ NameSpace: Builder }"
 
 Report subclass:#TestReport
-	instanceVariableNames:'suite'
+	instanceVariableNames:'suite coverage'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Builder-Reports'
@@ -55,13 +55,29 @@
     "Created: / 07-11-2011 / 09:47:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!TestReport methodsFor:'command line options'!
+
+cmdlineOptionCoverage
+
+    ^CmdLineOption new
+        short: $c;
+        long: 'coverage';
+        description: 'Collect code coverage when running tests';
+        action:[
+            coverage := CoverageReport new.
+        ]
+
+    "Created: / 25-06-2013 / 15:36:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !TestReport methodsFor:'initialization'!
 
 initialize
 
     suite := TestSuite new.
+    coverage := nil.
 
-    "Modified: / 07-11-2011 / 09:40:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-06-2013 / 15:37:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setupForClasses:classes
@@ -84,9 +100,9 @@
     "Created: / 04-08-2011 / 14:34:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-setupForPackages:packages 
+setupForPackages:pkgs 
 
-    packages do: [:pkg | 
+    pkgs do: [:pkg | 
         |def |
 
         self loadPackageIfNotAlready: pkg.
@@ -114,8 +130,11 @@
             suite addTest: psuite.
         ]
     ].
+    coverage notNil ifTrue:[
+        coverage setupForPackages: packages.
+    ]
 
-    "Modified: / 13-01-2012 / 13:00:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-06-2013 / 16:12:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setupForSuite: suiteToAdd
@@ -143,16 +162,26 @@
 
 runReport
 
-    |result|
+    | result |
     result := Result new format:format.
-    suite run:result.
+    coverage notNil ifTrue:[
+        InstrumentationContext  run:[
+            suite run:result.
+        ].
+        Transcript cr; cr.
+        Transcript show: 'COLLECTING COVERAGE...'.
+        coverage name: self name.
+        coverage run.
+    ] ifFalse:[
+        suite run:result.
+    ].
     Transcript cr; cr.
     Transcript show: 'SUMMARY: '.
     result printOn: Transcript.
     Transcript cr.
 
     "Created: / 04-08-2011 / 12:39:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 31-01-2013 / 13:48:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-06-2013 / 16:21:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !TestReport::Result methodsFor:'accessing'!
@@ -468,6 +497,6 @@
 !
 
 version_SVN
-    ^ '§Id: Builder__TestReport.st 300 2012-01-12 17:53:04Z vranyj1 §'
+    ^ '$Id$'
 ! !