--- a/reports/Builder__CoverageReportFormat.st Mon Jul 29 20:40:02 2013 +0200
+++ b/reports/Builder__CoverageReportFormat.st Mon Jul 29 20:55:42 2013 +0200
@@ -28,11 +28,11 @@
!CoverageReportFormat class methodsFor:'testing'!
isAbstract
-
^self == CoverageReportFormat
"Created: / 04-08-2011 / 11:44:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 25-06-2013 / 01:26:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 29-07-2013 / 19:55:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!CoverageReportFormat::Cobertura class methodsFor:'accessing'!
@@ -80,6 +80,33 @@
"Modified: / 25-06-2013 / 02:02:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!CoverageReportFormat::Cobertura methodsFor:'private'!
+
+sourceInfoForClass: class inPackage: package
+ | infosPerPackage cls |
+
+ cls := class.
+ cls isMetaclass ifTrue:[
+ cls := cls theNonMetaclass
+ ].
+ cls isPrivate ifTrue:[
+ cls := cls topOwningClass.
+ ].
+ infosPerPackage := infos at: package ifAbsentPut:[Dictionary new].
+ ^ infosPerPackage at: class ifAbsentPut: [ReportSourceInfo forClass: cls inPackage: package].
+
+ "Created: / 29-07-2013 / 18:43:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sourceInfoForExtensionsinPackage: package
+ | infosPerPackage |
+
+ infosPerPackage := infos at: package ifAbsentPut:[Dictionary new].
+ ^ infosPerPackage at: 'extensions.st' ifAbsentPut: [ReportSourceInfo forExtensionsInPackage: package].
+
+ "Created: / 29-07-2013 / 18:43:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!CoverageReportFormat::Cobertura methodsFor:'writing'!
write: instrumentedMethods
@@ -103,8 +130,8 @@
self writeClass: class with:[
| methodSetOrdered info |
- info := infos at: class ifAbsentPut:[ReportSourceInfo for: class].
- methodSetOrdered := (classMap at: class) asSortedCollection:[:a :b | (info offsetOfMethod: a) < (info offsetOfMethod: b)].
+"/ methodSetOrdered := (classMap at: class) asSortedCollection:[:a :b | (info offsetOfMethod: a) < (info offsetOfMethod: b)].
+ methodSetOrdered := (classMap at: class) asSortedCollection:[:a :b | a selector < b selector].
methodSetOrdered do:[:method|
self writeMethod: method.
]
@@ -114,7 +141,7 @@
]
"Created: / 25-06-2013 / 13:17:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 28-06-2013 / 01:57:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 29-07-2013 / 18:49:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
writeClass: class with: content
@@ -194,7 +221,10 @@
stream nextPutLine:' <lines>'.
currentMethod := method.
- info := infos at: method mclass theNonMetaclass ifAbsentPut:[ReportSourceInfo for: method mclass theNonMetaclass].
+ info := method package == method mclass package
+ ifTrue:[self sourceInfoForClass: method mclass inPackage: method package]
+ ifFalse:[self sourceInfoForExtensionsinPackage: method package].
+
firstCharOffset := info offsetOfMethod: method.
firstLineNr := (info lineAndColumnOfOffset: firstCharOffset) x.
lastLineNr := (info lineAndColumnOfOffset: firstCharOffset + method source size) x.
@@ -204,11 +234,10 @@
analyzer parseMethod: method source in: method mclass.
analyzer intervals do:[:interval|
| start stop |
-
- start := info lineAndColumnOfOffset: interval first.
- stop := info lineAndColumnOfOffset: interval last.
+ start := info lineAndColumnOfOffset: firstCharOffset + interval first - 1.
+ stop := info lineAndColumnOfOffset: firstCharOffset + interval last - 1.
start x to: stop x do:[:lineNr|
- lines at: lineNr put: -1.
+ lines at: lineNr - firstLineNr + 1 put: -1.
].
].
@@ -218,10 +247,11 @@
startLine := (info lineAndColumnOfOffset: firstCharOffset + eachBlockInfo startPosition - 1) x.
endLine := (info lineAndColumnOfOffset: firstCharOffset + eachBlockInfo endPosition - 1) x.
startLine to: endLine do:[:lineNr|
+
(lines at: (lineNr - firstLineNr + 1)) == -1 ifTrue:[
lines at: (lineNr - firstLineNr + 1) put: (eachBlockInfo count)
] ifFalse:[
- lines at: (lineNr - firstLineNr + 1) put: ((lines at: (lineNr - firstLineNr + 1)) min: eachBlockInfo count)
+ lines at: (lineNr - firstLineNr + 1) put: (((lines at: (lineNr - firstLineNr + 1)) ? (SmallInteger maxVal)) min: eachBlockInfo count)
]
]
].
@@ -240,7 +270,7 @@
stream nextPutLine:' </method>'
"Created: / 25-06-2013 / 13:17:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 29-07-2013 / 10:56:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 29-07-2013 / 18:57:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
writePackage: packageName with: aBlock