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
}
}

View file

@ -19,8 +19,8 @@ interface TestError {
testName: string
path: string
line: number
stackTrace: string
message: string
details: string
}
export function getAnnotations(results: TestRunResult[], maxCount: number): Annotation[] {
@ -43,7 +43,7 @@ export function getAnnotations(results: TestRunResult[], maxCount: number): Anno
const path = err.path ?? tr.path
const line = err.line ?? 0
if (mergeDup) {
const dup = errors.find(e => path === e.path && line === e.line && err.stackTrace === e.stackTrace)
const dup = errors.find(e => path === e.path && line === e.line && err.details === e.details)
if (dup !== undefined) {
dup.testRunPaths.push(tr.path)
continue
@ -54,8 +54,8 @@ export function getAnnotations(results: TestRunResult[], maxCount: number): Anno
testRunPaths: [tr.path],
suiteName: ts.name,
testName: tc.name,
stackTrace: err.stackTrace,
message: err.message ?? getFirstNonEmptyLine(err.stackTrace) ?? 'Test failed',
details: err.details,
message: err.message ?? getFirstNonEmptyLine(err.details) ?? 'Test failed',
path,
line
})
@ -81,7 +81,7 @@ export function getAnnotations(results: TestRunResult[], maxCount: number): Anno
end_line: e.line,
annotation_level: 'failure',
title: `${e.suiteName}${e.testName}`,
raw_details: fixEol(e.stackTrace),
raw_details: fixEol(e.details),
message
})
})

View file

@ -97,5 +97,5 @@ export interface TestCaseError {
path?: string
line?: number
message?: string
stackTrace: string
details: string
}