mirror of
https://github.com/dorny/test-reporter.git
synced 2026-03-21 23:52:12 +01:00
Refactor test-reporter to module based package
This commit is contained in:
parent
02510bde1f
commit
ef1f9a4e60
23 changed files with 90 additions and 89 deletions
|
|
@ -3,6 +3,7 @@
|
|||
"version": "2.5.0",
|
||||
"private": true,
|
||||
"description": "Presents test results from popular testing frameworks as Github check run",
|
||||
"type": "module",
|
||||
"main": "lib/main.js",
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
import * as core from '@actions/core'
|
||||
import * as github from '@actions/github'
|
||||
import {GitHub} from '@actions/github/lib/utils'
|
||||
import {GitHub} from '@actions/github/lib/utils.js'
|
||||
|
||||
import Zip from 'adm-zip'
|
||||
import picomatch from 'picomatch'
|
||||
|
||||
import {FileContent, InputProvider, ReportInput} from './input-provider'
|
||||
import {downloadArtifact, listFiles} from '../utils/github-utils'
|
||||
import {FileContent, InputProvider, ReportInput} from './input-provider.js'
|
||||
import {downloadArtifact, listFiles} from '../utils/github-utils.js'
|
||||
|
||||
export class ArtifactProvider implements InputProvider {
|
||||
private readonly artifactNameMatch: (name: string) => boolean
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import * as fs from 'fs'
|
||||
import glob from 'fast-glob'
|
||||
import {FileContent, InputProvider, ReportInput} from './input-provider'
|
||||
import {listFiles} from '../utils/git'
|
||||
import {FileContent, InputProvider, ReportInput} from './input-provider.js'
|
||||
import {listFiles} from '../utils/git.js'
|
||||
|
||||
export class LocalFileProvider implements InputProvider {
|
||||
constructor(
|
||||
|
|
|
|||
44
src/main.ts
44
src/main.ts
|
|
@ -1,29 +1,29 @@
|
|||
import * as core from '@actions/core'
|
||||
import * as github from '@actions/github'
|
||||
import {GitHub} from '@actions/github/lib/utils'
|
||||
import {GitHub} from '@actions/github/lib/utils.js'
|
||||
|
||||
import {ArtifactProvider} from './input-providers/artifact-provider'
|
||||
import {LocalFileProvider} from './input-providers/local-file-provider'
|
||||
import {FileContent} from './input-providers/input-provider'
|
||||
import {ParseOptions, TestParser} from './test-parser'
|
||||
import {TestRunResult} from './test-results'
|
||||
import {getAnnotations} from './report/get-annotations'
|
||||
import {getReport} from './report/get-report'
|
||||
import {ArtifactProvider} from './input-providers/artifact-provider.js'
|
||||
import {LocalFileProvider} from './input-providers/local-file-provider.js'
|
||||
import {FileContent} from './input-providers/input-provider.js'
|
||||
import {ParseOptions, TestParser} from './test-parser.js'
|
||||
import {TestRunResult} from './test-results.js'
|
||||
import {getAnnotations} from './report/get-annotations.js'
|
||||
import {getReport} from './report/get-report.js'
|
||||
|
||||
import {DartJsonParser} from './parsers/dart-json/dart-json-parser'
|
||||
import {DotnetNunitParser} from './parsers/dotnet-nunit/dotnet-nunit-parser'
|
||||
import {DotnetTrxParser} from './parsers/dotnet-trx/dotnet-trx-parser'
|
||||
import {GolangJsonParser} from './parsers/golang-json/golang-json-parser'
|
||||
import {JavaJunitParser} from './parsers/java-junit/java-junit-parser'
|
||||
import {JestJunitParser} from './parsers/jest-junit/jest-junit-parser'
|
||||
import {MochaJsonParser} from './parsers/mocha-json/mocha-json-parser'
|
||||
import {PhpunitJunitParser} from './parsers/phpunit-junit/phpunit-junit-parser'
|
||||
import {PythonXunitParser} from './parsers/python-xunit/python-xunit-parser'
|
||||
import {RspecJsonParser} from './parsers/rspec-json/rspec-json-parser'
|
||||
import {SwiftXunitParser} from './parsers/swift-xunit/swift-xunit-parser'
|
||||
import {NetteTesterJunitParser} from './parsers/tester-junit/tester-junit-parser'
|
||||
import {normalizeDirPath, normalizeFilePath} from './utils/path-utils'
|
||||
import {getCheckRunContext} from './utils/github-utils'
|
||||
import {DartJsonParser} from './parsers/dart-json/dart-json-parser.js'
|
||||
import {DotnetNunitParser} from './parsers/dotnet-nunit/dotnet-nunit-parser.js'
|
||||
import {DotnetTrxParser} from './parsers/dotnet-trx/dotnet-trx-parser.js'
|
||||
import {GolangJsonParser} from './parsers/golang-json/golang-json-parser.js'
|
||||
import {JavaJunitParser} from './parsers/java-junit/java-junit-parser.js'
|
||||
import {JestJunitParser} from './parsers/jest-junit/jest-junit-parser.js'
|
||||
import {MochaJsonParser} from './parsers/mocha-json/mocha-json-parser.js'
|
||||
import {PhpunitJunitParser} from './parsers/phpunit-junit/phpunit-junit-parser.js'
|
||||
import {PythonXunitParser} from './parsers/python-xunit/python-xunit-parser.js'
|
||||
import {RspecJsonParser} from './parsers/rspec-json/rspec-json-parser.js'
|
||||
import {SwiftXunitParser} from './parsers/swift-xunit/swift-xunit-parser.js'
|
||||
import {NetteTesterJunitParser} from './parsers/tester-junit/tester-junit-parser.js'
|
||||
import {normalizeDirPath, normalizeFilePath} from './utils/path-utils.js'
|
||||
import {getCheckRunContext} from './utils/github-utils.js'
|
||||
|
||||
async function main(): Promise<void> {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import {ParseOptions, TestParser} from '../../test-parser'
|
||||
import {ParseOptions, TestParser} from '../../test-parser.js'
|
||||
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils'
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils.js'
|
||||
|
||||
import {
|
||||
ReportEvent,
|
||||
|
|
@ -17,7 +17,7 @@ import {
|
|||
isDoneEvent,
|
||||
isMessageEvent,
|
||||
MessageEvent
|
||||
} from './dart-json-types'
|
||||
} from './dart-json-types.js'
|
||||
|
||||
import {
|
||||
TestExecutionResult,
|
||||
|
|
@ -26,7 +26,7 @@ import {
|
|||
TestGroupResult,
|
||||
TestCaseResult,
|
||||
TestCaseError
|
||||
} from '../../test-results'
|
||||
} from '../../test-results.js'
|
||||
|
||||
class TestRun {
|
||||
constructor(
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import {ParseOptions, TestParser} from '../../test-parser'
|
||||
import {ParseOptions, TestParser} from '../../test-parser.js'
|
||||
import {parseStringPromise} from 'xml2js'
|
||||
|
||||
import {NunitReport, TestCase, TestSuite} from './dotnet-nunit-types'
|
||||
import {getExceptionSource} from '../../utils/node-utils'
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils'
|
||||
import {NunitReport, TestCase, TestSuite} from './dotnet-nunit-types.js'
|
||||
import {getExceptionSource} from '../../utils/node-utils.js'
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils.js'
|
||||
|
||||
import {
|
||||
TestExecutionResult,
|
||||
|
|
@ -12,7 +12,7 @@ import {
|
|||
TestGroupResult,
|
||||
TestCaseResult,
|
||||
TestCaseError
|
||||
} from '../../test-results'
|
||||
} from '../../test-results.js'
|
||||
|
||||
export class DotnetNunitParser implements TestParser {
|
||||
assumedWorkDir: string | undefined
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
import {parseStringPromise} from 'xml2js'
|
||||
|
||||
import {ErrorInfo, Outcome, TrxReport, UnitTest, UnitTestResult} from './dotnet-trx-types'
|
||||
import {ParseOptions, TestParser} from '../../test-parser'
|
||||
import {ErrorInfo, Outcome, TrxReport, UnitTest, UnitTestResult} from './dotnet-trx-types.js'
|
||||
import {ParseOptions, TestParser} from '../../test-parser.js'
|
||||
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils'
|
||||
import {parseIsoDate, parseNetDuration} from '../../utils/parse-utils'
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils.js'
|
||||
import {parseIsoDate, parseNetDuration} from '../../utils/parse-utils.js'
|
||||
|
||||
import {
|
||||
TestExecutionResult,
|
||||
|
|
@ -13,7 +13,7 @@ import {
|
|||
TestGroupResult,
|
||||
TestCaseResult,
|
||||
TestCaseError
|
||||
} from '../../test-results'
|
||||
} from '../../test-results.js'
|
||||
|
||||
class TestClass {
|
||||
constructor(readonly name: string) {}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import { ParseOptions, TestParser } from '../../test-parser'
|
||||
import { ParseOptions, TestParser } from '../../test-parser.js'
|
||||
|
||||
import { GoTestEvent } from './golang-json-types'
|
||||
import { getExceptionSource } from '../../utils/node-utils'
|
||||
import { getBasePath, normalizeFilePath } from '../../utils/path-utils'
|
||||
import { GoTestEvent } from './golang-json-types.js'
|
||||
import { getExceptionSource } from '../../utils/node-utils.js'
|
||||
import { getBasePath, normalizeFilePath } from '../../utils/path-utils.js'
|
||||
|
||||
import {
|
||||
TestExecutionResult,
|
||||
|
|
@ -11,7 +11,7 @@ import {
|
|||
TestGroupResult,
|
||||
TestCaseResult,
|
||||
TestCaseError
|
||||
} from '../../test-results'
|
||||
} from '../../test-results.js'
|
||||
|
||||
export class GolangJsonParser implements TestParser {
|
||||
assumedWorkDir: string | undefined
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
import * as path from 'path'
|
||||
import {ParseOptions, TestParser} from '../../test-parser'
|
||||
import {ParseOptions, TestParser} from '../../test-parser.js'
|
||||
import {parseStringPromise} from 'xml2js'
|
||||
|
||||
import {JunitReport, SingleSuiteReport, TestCase, TestSuite} from './java-junit-types'
|
||||
import {parseStackTraceElement} from './java-stack-trace-element-parser'
|
||||
import {normalizeFilePath} from '../../utils/path-utils'
|
||||
import {JunitReport, SingleSuiteReport, TestCase, TestSuite} from './java-junit-types.js'
|
||||
import {parseStackTraceElement} from './java-stack-trace-element-parser.js'
|
||||
import {normalizeFilePath} from '../../utils/path-utils.js'
|
||||
|
||||
import {
|
||||
TestExecutionResult,
|
||||
|
|
@ -13,7 +13,7 @@ import {
|
|||
TestGroupResult,
|
||||
TestCaseResult,
|
||||
TestCaseError
|
||||
} from '../../test-results'
|
||||
} from '../../test-results.js'
|
||||
|
||||
export class JavaJunitParser implements TestParser {
|
||||
readonly trackedFiles: {[fileName: string]: string[]}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import {ParseOptions, TestParser} from '../../test-parser'
|
||||
import {ParseOptions, TestParser} from '../../test-parser.js'
|
||||
import {parseStringPromise} from 'xml2js'
|
||||
|
||||
import {JunitReport, TestCase, TestSuite} from './jest-junit-types'
|
||||
import {getExceptionSource} from '../../utils/node-utils'
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils'
|
||||
import {JunitReport, TestCase, TestSuite} from './jest-junit-types.js'
|
||||
import {getExceptionSource} from '../../utils/node-utils.js'
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils.js'
|
||||
|
||||
import {
|
||||
TestExecutionResult,
|
||||
|
|
@ -12,7 +12,7 @@ import {
|
|||
TestGroupResult,
|
||||
TestCaseResult,
|
||||
TestCaseError
|
||||
} from '../../test-results'
|
||||
} from '../../test-results.js'
|
||||
|
||||
export class JestJunitParser implements TestParser {
|
||||
assumedWorkDir: string | undefined
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import {ParseOptions, TestParser} from '../../test-parser'
|
||||
import {ParseOptions, TestParser} from '../../test-parser.js'
|
||||
import {
|
||||
TestCaseError,
|
||||
TestCaseResult,
|
||||
|
|
@ -6,10 +6,10 @@ import {
|
|||
TestGroupResult,
|
||||
TestRunResult,
|
||||
TestSuiteResult
|
||||
} from '../../test-results'
|
||||
import {getExceptionSource} from '../../utils/node-utils'
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils'
|
||||
import {MochaJson, MochaJsonTest} from './mocha-json-types'
|
||||
} from '../../test-results.js'
|
||||
import {getExceptionSource} from '../../utils/node-utils.js'
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils.js'
|
||||
import {MochaJson, MochaJsonTest} from './mocha-json-types.js'
|
||||
|
||||
export class MochaJsonParser implements TestParser {
|
||||
assumedWorkDir: string | undefined
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import {ParseOptions, TestParser} from '../../test-parser'
|
||||
import {ParseOptions, TestParser} from '../../test-parser.js'
|
||||
import {parseStringPromise} from 'xml2js'
|
||||
|
||||
import {PhpunitReport, SingleSuiteReport, TestCase, TestSuite} from './phpunit-junit-types'
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils'
|
||||
import {PhpunitReport, SingleSuiteReport, TestCase, TestSuite} from './phpunit-junit-types.js'
|
||||
import {getBasePath, normalizeFilePath} from '../../utils/path-utils.js'
|
||||
|
||||
import {
|
||||
TestExecutionResult,
|
||||
|
|
@ -11,7 +11,7 @@ import {
|
|||
TestGroupResult,
|
||||
TestCaseResult,
|
||||
TestCaseError
|
||||
} from '../../test-results'
|
||||
} from '../../test-results.js'
|
||||
|
||||
export class PhpunitJunitParser implements TestParser {
|
||||
readonly trackedFiles: Set<string>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import {ParseOptions} from '../../test-parser'
|
||||
import {JavaJunitParser} from '../java-junit/java-junit-parser'
|
||||
import {ParseOptions} from '../../test-parser.js'
|
||||
import {JavaJunitParser} from '../java-junit/java-junit-parser.js'
|
||||
|
||||
export class PythonXunitParser extends JavaJunitParser {
|
||||
constructor(readonly options: ParseOptions) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import {ParseOptions, TestParser} from '../../test-parser'
|
||||
import {ParseOptions, TestParser} from '../../test-parser.js'
|
||||
import {
|
||||
TestCaseError,
|
||||
TestCaseResult,
|
||||
|
|
@ -6,8 +6,8 @@ import {
|
|||
TestGroupResult,
|
||||
TestRunResult,
|
||||
TestSuiteResult
|
||||
} from '../../test-results'
|
||||
import {RspecJson, RspecExample} from './rspec-json-types'
|
||||
} from '../../test-results.js'
|
||||
import {RspecJson, RspecExample} from './rspec-json-types.js'
|
||||
|
||||
export class RspecJsonParser implements TestParser {
|
||||
assumedWorkDir: string | undefined
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import {ParseOptions} from '../../test-parser'
|
||||
import {JavaJunitParser} from '../java-junit/java-junit-parser'
|
||||
import {ParseOptions} from '../../test-parser.js'
|
||||
import {JavaJunitParser} from '../java-junit/java-junit-parser.js'
|
||||
|
||||
export class SwiftXunitParser extends JavaJunitParser {
|
||||
constructor(readonly options: ParseOptions) {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import * as path from 'path'
|
||||
import {ParseOptions, TestParser} from '../../test-parser'
|
||||
import {ParseOptions, TestParser} from '../../test-parser.js'
|
||||
import {parseStringPromise} from 'xml2js'
|
||||
|
||||
import {NetteTesterReport, SingleSuiteReport, TestCase, TestSuite} from './tester-junit-types'
|
||||
import {normalizeFilePath} from '../../utils/path-utils'
|
||||
import {NetteTesterReport, SingleSuiteReport, TestCase, TestSuite} from './tester-junit-types.js'
|
||||
import {normalizeFilePath} from '../../utils/path-utils.js'
|
||||
|
||||
import {
|
||||
TestExecutionResult,
|
||||
|
|
@ -12,7 +12,7 @@ import {
|
|||
TestGroupResult,
|
||||
TestCaseResult,
|
||||
TestCaseError
|
||||
} from '../../test-results'
|
||||
} from '../../test-results.js'
|
||||
|
||||
interface ParsedTestName {
|
||||
filePath: string
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import {ellipsis, fixEol} from '../utils/markdown-utils'
|
||||
import {TestRunResult} from '../test-results'
|
||||
import {getFirstNonEmptyLine} from '../utils/parse-utils'
|
||||
import {ellipsis, fixEol} from '../utils/markdown-utils.js'
|
||||
import {TestRunResult} from '../test-results.js'
|
||||
import {getFirstNonEmptyLine} from '../utils/parse-utils.js'
|
||||
|
||||
type Annotation = {
|
||||
path: string
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import * as core from '@actions/core'
|
||||
import {TestExecutionResult, TestRunResult, TestSuiteResult} from '../test-results'
|
||||
import {Align, formatTime, Icon, link, table} from '../utils/markdown-utils'
|
||||
import {DEFAULT_LOCALE} from '../utils/node-utils'
|
||||
import {getFirstNonEmptyLine} from '../utils/parse-utils'
|
||||
import {slug} from '../utils/slugger'
|
||||
import {TestExecutionResult, TestRunResult, TestSuiteResult} from '../test-results.js'
|
||||
import {Align, formatTime, Icon, link, table} from '../utils/markdown-utils.js'
|
||||
import {DEFAULT_LOCALE} from '../utils/node-utils.js'
|
||||
import {getFirstNonEmptyLine} from '../utils/parse-utils.js'
|
||||
import {slug} from '../utils/slugger.js'
|
||||
|
||||
const MAX_REPORT_LENGTH = 65535
|
||||
const MAX_ACTIONS_SUMMARY_LENGTH = 1048576
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import {TestRunResult} from './test-results'
|
||||
import {TestRunResult} from './test-results.js'
|
||||
|
||||
export interface ParseOptions {
|
||||
parseErrors: boolean
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import {DEFAULT_LOCALE} from './utils/node-utils'
|
||||
import {DEFAULT_LOCALE} from './utils/node-utils.js'
|
||||
|
||||
export class TestRunResult {
|
||||
constructor(
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import {pipeline} from 'stream/promises'
|
|||
import {Readable, Transform} from 'stream'
|
||||
import * as core from '@actions/core'
|
||||
import * as github from '@actions/github'
|
||||
import {GitHub} from '@actions/github/lib/utils'
|
||||
import {GitHub} from '@actions/github/lib/utils.js'
|
||||
import type {PullRequest, WorkflowRunEvent} from '@octokit/webhooks-types'
|
||||
|
||||
export function getCheckRunContext(): {sha: string; runId: number} {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import {normalizeFilePath} from './path-utils'
|
||||
import {normalizeFilePath} from './path-utils.js'
|
||||
|
||||
export const DEFAULT_LOCALE = 'en-US'
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// Returns HTML element id and href link usable as manual anchor links
|
||||
// This is needed because Github in check run summary doesn't automatically
|
||||
// create links out of headings as it normally does for other markdown content
|
||||
import {ReportOptions} from '../report/get-report'
|
||||
import {ReportOptions} from '../report/get-report.js'
|
||||
|
||||
export function slug(name: string, options: ReportOptions): {id: string; link: string} {
|
||||
const slugId = name
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue