diff --git a/README.md b/README.md index c896a95..e22c9b6 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Powered by [Job Summaries](https://github.blog/2022-05-09-supercharging-github-a | moduleDirectory | `.` | relative path to the directory containing the `go.mod` of the module you wish to test | | testArguments | `./...` | arguments to pass to `go test`, `-json` will be prepended automatically | | omitUntestedPackages | `false` | omit any go packages that don't have any tests from the summary output | +| omitSuccessfulPackages | `false` | omit any go packages that didn't contain failed tests | | omitPie | `false` | omit the pie chart from the summary output ## Demo diff --git a/__tests__/renderer.test.ts b/__tests__/renderer.test.ts index 1b3d6ef..c564e61 100644 --- a/__tests__/renderer.test.ts +++ b/__tests__/renderer.test.ts @@ -27,6 +27,7 @@ const getRenderer = async (): Promise => { testEvents, '', // stderr false, // omitUntestedPackages + false, // omitSuccessfulPackages false // omitPie ) } @@ -105,6 +106,7 @@ describe('renderer', () => { [], '', false, + false, false ) await renderer.writeSummary() diff --git a/src/renderer.ts b/src/renderer.ts index f8ac438..c7e5cb4 100644 --- a/src/renderer.ts +++ b/src/renderer.ts @@ -16,6 +16,7 @@ class Renderer { testEvents: TestEvent[] stderr: string omitUntestedPackages: boolean + omitSuccessfulPackages: boolean omitPie: boolean packageResults: PackageResult[] headers: SummaryTableRow = [ @@ -36,12 +37,14 @@ class Renderer { testEvents: TestEvent[], stderr: string, omitUntestedPackages: boolean, + omitSuccessfulPackages: boolean, omitPie: boolean ) { this.moduleName = moduleName this.testEvents = testEvents this.stderr = stderr this.omitUntestedPackages = omitUntestedPackages + this.omitSuccessfulPackages = omitSuccessfulPackages this.omitPie = omitPie this.packageResults = this.calculatePackageResults() } @@ -51,9 +54,11 @@ class Renderer { * https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary */ async writeSummary() { - const resultsToRender = this.packageResults.filter(result => - this.omitUntestedPackages ? result.hasTests() : true - ) + const resultsToRender = this.packageResults + .filter(result => (this.omitUntestedPackages ? result.hasTests() : true)) + .filter(result => + this.omitSuccessfulPackages ? result.justSuccessfulTests() : true + ) if (resultsToRender.length === 0) { core.debug('no packages with tests, skipping render') diff --git a/src/results.ts b/src/results.ts index 76e499b..97b1e68 100644 --- a/src/results.ts +++ b/src/results.ts @@ -35,6 +35,10 @@ class PackageResult { return this.testCount() !== 0 } + public justSuccessfulTests(): boolean { + return this.conclusions.pass === 0 && this.conclusions.fail === 0 + } + public output(): string { return this.events.map(e => e.output).join('') } diff --git a/src/runner.ts b/src/runner.ts index 3464202..a1c820d 100644 --- a/src/runner.ts +++ b/src/runner.ts @@ -12,6 +12,7 @@ class Runner { moduleDirectory = '.' testArguments = ['./...'] omitUntestedPackages = false + omitSuccessfulPackages = false omitPie = false fromJSONFile: string | null = null @@ -34,6 +35,7 @@ class Runner { testEvents, '', this.omitUntestedPackages, + this.omitSuccessfulPackages, this.omitPie ) @@ -53,6 +55,7 @@ class Runner { testEvents, stderr, this.omitUntestedPackages, + this.omitSuccessfulPackages, this.omitPie ) @@ -139,6 +142,13 @@ class Runner { this.omitUntestedPackages = core.getBooleanInput('omitUntestedPackages') } + const omitSuccessfulPackages = core.getInput('omitSuccessfulPackages') + if (omitSuccessfulPackages) { + this.omitSuccessfulPackages = core.getBooleanInput( + 'omitSuccessfulPackages' + ) + } + const omitPie = core.getInput('omitPie') if (omitPie) { this.omitPie = core.getBooleanInput('omitPie')