Skip to content

Commit bc4a403

Browse files
authored
Fixes #39 Implements Negative Difference Threshold (#54)
1 parent f5234ea commit bc4a403

File tree

4 files changed

+15
-5
lines changed

4 files changed

+15
-5
lines changed

__tests__/utils.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ test('getInputs', () => {
130130
artifactDownloadWorkflowNames: null,
131131
artifactName: 'coverage-%name%',
132132
negativeDifferenceBy: 'package',
133+
negativeDifferenceThreshold: -0,
133134
retention: undefined,
134135
//This is a cheat
135136
withBaseCoverageTemplate: f.withBaseCoverageTemplate,

src/interfaces.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export interface Inputs {
2626
retention: number | undefined
2727
withBaseCoverageTemplate: string
2828
withoutBaseCoverageTemplate: string
29+
negativeDifferenceThreshold: number
2930
}
3031

3132
export interface Files {

src/main.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,8 @@ async function generateMarkdown(
117117
markdownFilename,
118118
negativeDifferenceBy,
119119
withBaseCoverageTemplate,
120-
withoutBaseCoverageTemplate
120+
withoutBaseCoverageTemplate,
121+
negativeDifferenceThreshold
121122
} = getInputs()
122123
const overallDifferencePercentage = baseCoverage
123124
? roundPercentage(headCoverage.coverage - baseCoverage.coverage)
@@ -126,16 +127,18 @@ async function generateMarkdown(
126127
core.debug(`headCoverage: ${headCoverage.coverage}`)
127128
core.debug(`baseCoverage: ${baseCoverage?.coverage}`)
128129
core.debug(`overallDifferencePercentage: ${overallDifferencePercentage}`)
130+
core.debug(`negativeDifferenceThreshold: ${negativeDifferenceThreshold}`)
129131

130132
if (
131133
failOnNegativeDifference &&
132134
negativeDifferenceBy === 'overall' &&
133135
overallDifferencePercentage !== null &&
134136
overallDifferencePercentage < 0 &&
137+
overallDifferencePercentage < negativeDifferenceThreshold &&
135138
baseCoverage
136139
) {
137140
core.setFailed(
138-
`FAIL: Overall coverage of dropped ${overallDifferencePercentage}%, from ${baseCoverage.coverage}% to ${headCoverage.coverage}%.`
141+
`FAIL: Overall coverage of dropped ${overallDifferencePercentage}%, from ${baseCoverage.coverage}% to ${headCoverage.coverage}% which is below minimum threshold of ${-negativeDifferenceThreshold}%`
139142
)
140143
}
141144

@@ -200,10 +203,11 @@ async function generateMarkdown(
200203
failOnNegativeDifference &&
201204
negativeDifferenceBy === 'package' &&
202205
differencePercentage !== null &&
203-
differencePercentage < 0
206+
differencePercentage < 0 &&
207+
differencePercentage < negativeDifferenceThreshold
204208
) {
205209
core.setFailed(
206-
`${headCoverage.files[hash].relative} coverage difference was ${differencePercentage}%`
210+
`${headCoverage.files[hash].relative} coverage difference was ${differencePercentage}% which is below threshold of ${-negativeDifferenceThreshold}%`
207211
)
208212
}
209213

src/utils.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,9 @@ export function getInputs(): Inputs {
343343
core.getInput('file_coverage_warning_max') || '75'
344344
)
345345

346+
const negativeDifferenceThreshold =
347+
parseFloat(core.getInput('negative_difference_threshold') || '0') * -100
348+
346349
const failOnNegativeDifference =
347350
core.getInput('fail_on_negative_difference') === 'true' ? true : false
348351

@@ -389,7 +392,8 @@ export function getInputs(): Inputs {
389392
negativeDifferenceBy,
390393
retention: retentionDays,
391394
withoutBaseCoverageTemplate,
392-
withBaseCoverageTemplate
395+
withBaseCoverageTemplate,
396+
negativeDifferenceThreshold
393397
}
394398

395399
return inputs

0 commit comments

Comments
 (0)