# HG changeset patch # User Jan Vrany # Date 1426184565 -3600 # Node ID d5c88fece400b89547fec5a493fad71c09d3a3e7 # Parent b13db8438e4a755a385ee532efe95fe2160e51c9 initial checkin diff -r b13db8438e4a -r d5c88fece400 reports/Builder__JUnitReportReader.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/reports/Builder__JUnitReportReader.st Thu Mar 12 19:22:45 2015 +0100 @@ -0,0 +1,102 @@ +"{ Encoding: utf8 }" + +"{ Package: 'stx:goodies/builder/reports' }" + +"{ NameSpace: Builder }" + +XML::SAXDriver subclass:#JUnitReportReader + instanceVariableNames:'currentTestResult currentOutcome' + classVariableNames:'' + poolDictionaries:'' + category:'Builder-Reports-Readers' +! + + +!JUnitReportReader class methodsFor:'reading'! + +readFromFile: aStringOrFilename + ^ self readFromStream: aStringOrFilename asFilename readStream + + "Created: / 12-03-2015 / 17:27:05 / Jan Vrany " +! + +readFromStream: aStream + ^ (self on: aStream beforeScanDo:[:parse| parse validate:false]) testResult + + "Created: / 12-03-2015 / 17:27:28 / Jan Vrany " +! ! + +!JUnitReportReader methodsFor:'accessing'! + +testResult + ^ currentTestResult + + "Created: / 12-03-2015 / 17:41:32 / Jan Vrany " +! ! + +!JUnitReportReader methodsFor:'content handler'! + +endElement: localName namespace: nameSpace prefix: nameSpacePrefix + localName = 'testcase' ifTrue:[ + currentOutcome result == TestResult statePass ifTrue:[ + currentTestResult passedOutcomes add: currentOutcome + ] ifFalse:[ + currentOutcome result == TestResult stateFail ifTrue:[ + currentTestResult failureOutcomes add: currentOutcome + ] ifFalse:[ + currentOutcome result == TestResult stateError ifTrue:[ + currentTestResult errorOutcomes add: currentOutcome + ] ifFalse:[ + self error: 'No result for current outcome!!' + ]]]. + ]. + + "Created: / 12-03-2015 / 17:24:30 / Jan Vrany " + "Modified: / 12-03-2015 / 18:25:26 / Jan Vrany " +! + +startDocument + currentTestResult :=TestResult new. + + "Created: / 12-03-2015 / 17:24:02 / Jan Vrany " +! + +startElement: localName namespace: namespace prefix: nameSpacePrefix attributes: attributes + localName = 'testcase' ifTrue:[ + | classname name | + + classname := (attributes detect:[:e | e tag type = 'classname' ]) value. + name := (attributes detect:[:e | e tag type = 'name' ]) value. + + currentOutcome := TestCaseOutcome forCase: (self testCaseForClassName: classname selector: name). + currentOutcome result: TestResult statePass. + ]. + localName = 'error' ifTrue:[ + currentOutcome result: TestResult stateError + ]. + localName = 'failure' ifTrue:[ + currentOutcome result: TestResult stateFail + ] + + "Created: / 12-03-2015 / 17:23:26 / Jan Vrany " +! ! + +!JUnitReportReader methodsFor:'private'! + +testCaseForClassName:className selector:selector + "/ Fake for now... + ^ MessageSend receiver: className selector: selector + + "Created: / 12-03-2015 / 17:43:34 / Jan Vrany " +! ! + +!JUnitReportReader class methodsFor:'documentation'! + +version + ^ '$Header$' +! + +version_CVS + ^ '$Header$' +! ! +