Fix flutter-json doesn't provide error details

This commit is contained in:
Michal Dorner 2021-02-01 15:08:21 +01:00
parent 2365963b2e
commit 855ff9bfaf
No known key found for this signature in database
GPG key ID: 9EEE04B48DA36786
13 changed files with 3196 additions and 51 deletions

View file

@ -14,7 +14,9 @@ import {
isTestStartEvent,
isTestDoneEvent,
isErrorEvent,
isDoneEvent
isDoneEvent,
isMessageEvent,
MessageEvent
} from './dart-json-types'
import {
@ -45,8 +47,10 @@ class TestCase {
this.groupId = testStart.test.groupIDs[testStart.test.groupIDs.length - 1]
}
readonly groupId: number
readonly print: MessageEvent[] = []
testDone?: TestDoneEvent
error?: ErrorEvent
get result(): TestExecutionResult {
if (this.testDone?.skipped) {
return 'skipped'
@ -112,7 +116,10 @@ export class DartJsonParser implements TestParser {
tests[evt.testID].testDone = evt
} else if (isErrorEvent(evt)) {
tests[evt.testID].error = evt
} else if (isDoneEvent(evt)) {
} else if (isMessageEvent(evt)) {
tests[evt.testID].print.push(evt)
}
else if (isDoneEvent(evt)) {
success = evt.success
totalTime = evt.time
}
@ -151,6 +158,8 @@ export class DartJsonParser implements TestParser {
const {trackedFiles} = this.options
const message = test.error?.error ?? ''
const stackTrace = test.error?.stackTrace ?? ''
const print = test.print.filter(p => p.messageType === 'print').map(p => p.message).join('\n')
const details = [print, stackTrace].filter(str => str !== '').join('\n')
const src = this.exceptionThrowSource(stackTrace, trackedFiles)
let path
let line
@ -170,7 +179,7 @@ export class DartJsonParser implements TestParser {
path,
line,
message,
stackTrace
details
}
}

View file

@ -75,7 +75,7 @@ export interface DebugEvent extends Event {
export interface MessageEvent extends Event {
type: 'print'
testID: number
messageType: string
messageType: 'print' | 'skip'
message: string
}
@ -127,3 +127,6 @@ export function isErrorEvent(event: Event): event is ErrorEvent {
export function isDoneEvent(event: Event): event is DoneEvent {
return event.type === 'done'
}
export function isMessageEvent(event: Event): event is MessageEvent {
return event.type === 'print'
}

View file

@ -130,7 +130,7 @@ export class DotnetTrxParser implements TestParser {
path,
line,
message,
stackTrace: `${message}\n${stackTrace}`
details: `${message}\n${stackTrace}`
}
}

View file

@ -75,11 +75,11 @@ export class JestJunitParser implements TestParser {
return undefined
}
const stackTrace = tc.failure[0]
const details = tc.failure[0]
let path
let line
const src = this.exceptionThrowSource(stackTrace)
const src = this.exceptionThrowSource(details)
if (src) {
path = src.path
line = src.line
@ -88,7 +88,7 @@ export class JestJunitParser implements TestParser {
return {
path,
line,
stackTrace
details
}
}