301 ! |
301 ! |
302 |
302 |
303 writeTestCase:testcase outcome:outcome time:time exception: exception stacktrace:stacktrace |
303 writeTestCase:testcase outcome:outcome time:time exception: exception stacktrace:stacktrace |
304 | result | |
304 | result | |
305 |
305 |
306 outcome result == TestResult statePass ifTrue:[ |
306 outcome result == TestResult statePass ifTrue:[ |
307 result := #pass. |
307 result := #pass. |
308 ] ifFalse:[ |
308 ] ifFalse:[ |
309 outcome result == TestResult stateFail ifTrue:[ |
309 outcome result == TestResult stateFail ifTrue:[ |
310 result := #failure. |
310 result := #failure. |
311 failures := failures + 1 |
311 failures := failures + 1 |
312 ] ifFalse:[ |
312 ] ifFalse:[ |
313 outcome result == TestResult stateError ifTrue:[ |
313 outcome result == TestResult stateError ifTrue:[ |
314 result := #error. |
314 result := #error. |
315 errors := errors + 1. |
315 errors := errors + 1. |
316 ] ifFalse:[ |
316 ] ifFalse:[ |
317 outcome result == TestResult stateSkip ifTrue:[ |
317 outcome result == TestResult stateSkip ifTrue:[ |
318 result := #skip. |
318 result := #skip. |
319 skipped := skipped + 1 |
319 skipped := skipped + 1 |
320 ] ifFalse:[ |
320 ] ifFalse:[ |
321 self error: 'Invalid test result'. |
321 self error: 'Invalid test result'. |
322 ] |
322 ] |
323 ]. |
323 ]. |
324 ]. |
324 ]. |
325 ]. |
325 ]. |
326 |
326 |
327 stream tab; |
327 stream tab; |
328 nextPutAll: '<testcase classname="'; |
328 nextPutAll: '<testcase classname="'; |
329 nextPutAll: (self encode: testcase nameForHDTestReport); |
329 nextPutAll: (self encode: testcase nameForHDTestReport); |
330 nextPutAll: '" name="'; |
330 nextPutAll: '" name="'; |
331 nextPutAll: (self encode: testcase selectorForHDTestReport); |
331 nextPutAll: (self encode: testcase selectorForHDTestReport); |
332 nextPutAll: '" time="'; print: (time ? 0) / 1000.0; nextPutAll: '">'; cr. |
332 nextPutAll: '" time="'; print: (time ? 0) / 1000.0; nextPutAll: '">'; cr. |
333 |
333 |
334 result == #skip ifTrue:[ |
334 result == #skip ifTrue:[ |
335 stream tab; tab; nextPutAll: '<skipped/>'. |
335 stream tab; tab; nextPutAll: '<skipped/>'. |
336 ] ifFalse:[ |
336 ] ifFalse:[ |
337 result ~~ #pass ifTrue:[ |
337 result ~~ #pass ifTrue:[ |
338 | type message | |
338 | type message | |
339 |
339 |
340 exception isNil ifTrue:[ |
340 exception isNil ifTrue:[ |
341 type := 'unknown exception'. |
341 type := 'unknown exception'. |
342 message := 'unknown exception occured (no exception details available)' |
342 message := 'unknown exception occurred (no exception details available)' |
343 ] ifFalse:[ |
343 ] ifFalse:[ |
344 type := exception class name. |
344 type := exception class name. |
345 message := exception messageText ifNil:[ exception description ]. |
345 message := exception messageText ifNil:[ exception description ]. |
346 ]. |
346 ]. |
347 |
347 |
348 |
348 |
349 stream tab; tab; |
349 stream tab; tab; |
350 nextPut:$<; nextPutAll: result; |
350 nextPut:$<; nextPutAll: result; |
351 nextPutAll:' type="'; |
351 nextPutAll:' type="'; |
352 nextPutAll:(self encode:type); |
352 nextPutAll:(self encode:type); |
362 report keepStdout ifTrue:[ |
362 report keepStdout ifTrue:[ |
363 outcome collectedOutput notEmptyOrNil ifTrue:[ |
363 outcome collectedOutput notEmptyOrNil ifTrue:[ |
364 stream nextPutAll:' <system-out><!![CDATA['; cr. |
364 stream nextPutAll:' <system-out><!![CDATA['; cr. |
365 self writeCDATA: outcome collectedOutput. |
365 self writeCDATA: outcome collectedOutput. |
366 stream nextPutAll:']]> </system-out>'; cr. |
366 stream nextPutAll:']]> </system-out>'; cr. |
367 ]. |
367 ]. |
368 ]. |
368 ]. |
369 |
369 |
370 stream tab; |
370 stream tab; |
371 nextPutAll: '</testcase>'; cr. |
371 nextPutAll: '</testcase>'; cr. |
372 |
372 |
373 |
373 |
374 stream flush |
374 stream flush |
375 |
375 |