Skip to content

Commit 6063fb3

Browse files
authored
Add support for fromJSONFile to skip test execution and process JSON file (#11)
Co-authored-by: josh@careerpuck.com <Joshua Krall>
1 parent 109b18b commit 6063fb3

File tree

2 files changed

+43
-17
lines changed

2 files changed

+43
-17
lines changed

action.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ inputs:
2020
description: 'Omit the pie chart from the summary output'
2121
required: false
2222
default: 'false'
23+
fromJSONFile:
24+
description: 'Parse the specified JSON file, instead of executing go test'
25+
required: false
2326
runs:
2427
using: 'node20'
2528
main: 'dist/index.js'

src/runner.ts

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class Runner {
1313
testArguments = ['./...']
1414
omitUntestedPackages = false
1515
omitPie = false
16+
fromJSONFile: string | null = null
1617

1718
constructor() {
1819
this.getInputs()
@@ -24,24 +25,41 @@ class Runner {
2425
async run() {
2526
const moduleName = await this.findModuleName()
2627

27-
const { retCode, stdout, stderr } = await this.goTest()
28-
if (retCode > 0) {
29-
core.error(`\`go test\` returned nonzero exit code: ${retCode}`)
30-
}
31-
32-
const testEvents = parseTestEvents(stdout)
33-
34-
const renderer = new Renderer(
35-
moduleName,
36-
testEvents,
37-
stderr,
38-
this.omitUntestedPackages,
39-
this.omitPie
40-
)
41-
42-
await renderer.writeSummary()
28+
if (this.fromJSONFile) {
29+
const stdout = await readFile(this.fromJSONFile)
30+
const testEvents = parseTestEvents(stdout.toString())
31+
32+
const renderer = new Renderer(
33+
moduleName,
34+
testEvents,
35+
'',
36+
this.omitUntestedPackages,
37+
this.omitPie
38+
)
39+
40+
await renderer.writeSummary()
41+
42+
process.exit(0)
43+
} else {
44+
const { retCode, stdout, stderr } = await this.goTest()
45+
if (retCode > 0) {
46+
core.error(`\`go test\` returned nonzero exit code: ${retCode}`)
47+
}
4348

44-
process.exit(retCode)
49+
const testEvents = parseTestEvents(stdout)
50+
51+
const renderer = new Renderer(
52+
moduleName,
53+
testEvents,
54+
stderr,
55+
this.omitUntestedPackages,
56+
this.omitPie
57+
)
58+
59+
await renderer.writeSummary()
60+
61+
process.exit(retCode)
62+
}
4563
}
4664

4765
/**
@@ -125,6 +143,11 @@ class Runner {
125143
if (omitPie) {
126144
this.omitPie = core.getBooleanInput('omitPie')
127145
}
146+
147+
const fromJSONFile = core.getInput('fromJSONFile')
148+
if (fromJSONFile) {
149+
this.fromJSONFile = fromJSONFile
150+
}
128151
}
129152
}
130153

0 commit comments

Comments
 (0)