jan@275: "{ Encoding: utf8 }" jan@275: jan@275: "{ Package: 'stx:goodies/builder/reports' }" jan@275: jan@275: "{ NameSpace: Builder }" jan@275: jan@275: XML::SAXDriver subclass:#JUnitReportReader jan@275: instanceVariableNames:'currentTestResult currentOutcome' jan@275: classVariableNames:'' jan@275: poolDictionaries:'' jan@275: category:'Builder-Reports-Readers' jan@275: ! jan@275: jan@275: jan@275: !JUnitReportReader class methodsFor:'reading'! jan@275: jan@275: readFromFile: aStringOrFilename jan@275: ^ self readFromStream: aStringOrFilename asFilename readStream jan@275: jan@275: "Created: / 12-03-2015 / 17:27:05 / Jan Vrany " jan@275: ! jan@275: jan@275: readFromStream: aStream jan@275: ^ (self on: aStream beforeScanDo:[:parse| parse validate:false]) testResult jan@275: jan@275: "Created: / 12-03-2015 / 17:27:28 / Jan Vrany " jan@275: ! ! jan@275: jan@275: !JUnitReportReader methodsFor:'accessing'! jan@275: jan@275: testResult jan@275: ^ currentTestResult jan@275: jan@275: "Created: / 12-03-2015 / 17:41:32 / Jan Vrany " jan@275: ! ! jan@275: jan@275: !JUnitReportReader methodsFor:'content handler'! jan@275: jan@275: endElement: localName namespace: nameSpace prefix: nameSpacePrefix jan@275: localName = 'testcase' ifTrue:[ jan@275: currentOutcome result == TestResult statePass ifTrue:[ jan@275: currentTestResult passedOutcomes add: currentOutcome jan@275: ] ifFalse:[ jan@275: currentOutcome result == TestResult stateFail ifTrue:[ jan@275: currentTestResult failureOutcomes add: currentOutcome jan@275: ] ifFalse:[ jan@275: currentOutcome result == TestResult stateError ifTrue:[ jan@275: currentTestResult errorOutcomes add: currentOutcome jan@275: ] ifFalse:[ jan@275: self error: 'No result for current outcome!!' jan@275: ]]]. jan@275: ]. jan@275: jan@275: "Created: / 12-03-2015 / 17:24:30 / Jan Vrany " jan@275: "Modified: / 12-03-2015 / 18:25:26 / Jan Vrany " jan@275: ! jan@275: jan@275: startDocument jan@275: currentTestResult :=TestResult new. jan@275: jan@275: "Created: / 12-03-2015 / 17:24:02 / Jan Vrany " jan@275: ! jan@275: jan@275: startElement: localName namespace: namespace prefix: nameSpacePrefix attributes: attributes jan@275: localName = 'testcase' ifTrue:[ jan@275: | classname name | jan@275: jan@275: classname := (attributes detect:[:e | e tag type = 'classname' ]) value. jan@275: name := (attributes detect:[:e | e tag type = 'name' ]) value. jan@275: jan@275: currentOutcome := TestCaseOutcome forCase: (self testCaseForClassName: classname selector: name). jan@275: currentOutcome result: TestResult statePass. jan@275: ]. jan@275: localName = 'error' ifTrue:[ jan@275: currentOutcome result: TestResult stateError jan@275: ]. jan@275: localName = 'failure' ifTrue:[ jan@275: currentOutcome result: TestResult stateFail jan@275: ] jan@275: jan@275: "Created: / 12-03-2015 / 17:23:26 / Jan Vrany " jan@275: ! ! jan@275: jan@275: !JUnitReportReader methodsFor:'private'! jan@275: jan@275: testCaseForClassName:className selector:selector jan@275: "/ Fake for now... jan@275: ^ MessageSend receiver: className selector: selector jan@275: jan@275: "Created: / 12-03-2015 / 17:43:34 / Jan Vrany " jan@275: ! ! jan@275: jan@275: !JUnitReportReader class methodsFor:'documentation'! jan@275: jan@275: version jan@275: ^ '$Header$' jan@275: ! jan@275: jan@275: version_CVS jan@275: ^ '$Header$' jan@275: ! ! jan@275: