Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions __tests__/utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ test('getInputs', () => {
artifactDownloadWorkflowNames: null,
artifactName: 'coverage-%name%',
negativeDifferenceBy: 'package',
negativeDifferenceThreshold: -0,
retention: undefined,
//This is a cheat
withBaseCoverageTemplate: f.withBaseCoverageTemplate,
Expand Down
1 change: 1 addition & 0 deletions src/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ export interface Inputs {
retention: number | undefined
withBaseCoverageTemplate: string
withoutBaseCoverageTemplate: string
negativeDifferenceThreshold: number
}

export interface Files {
Expand Down
12 changes: 8 additions & 4 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,8 @@ async function generateMarkdown(
markdownFilename,
negativeDifferenceBy,
withBaseCoverageTemplate,
withoutBaseCoverageTemplate
withoutBaseCoverageTemplate,
negativeDifferenceThreshold
} = getInputs()
const overallDifferencePercentage = baseCoverage
? roundPercentage(headCoverage.coverage - baseCoverage.coverage)
Expand All @@ -126,16 +127,18 @@ async function generateMarkdown(
core.debug(`headCoverage: ${headCoverage.coverage}`)
core.debug(`baseCoverage: ${baseCoverage?.coverage}`)
core.debug(`overallDifferencePercentage: ${overallDifferencePercentage}`)
core.debug(`negativeDifferenceThreshold: ${negativeDifferenceThreshold}`)

if (
failOnNegativeDifference &&
negativeDifferenceBy === 'overall' &&
overallDifferencePercentage !== null &&
overallDifferencePercentage < 0 &&
overallDifferencePercentage < negativeDifferenceThreshold &&
baseCoverage
) {
core.setFailed(
`FAIL: Overall coverage of dropped ${overallDifferencePercentage}%, from ${baseCoverage.coverage}% to ${headCoverage.coverage}%.`
`FAIL: Overall coverage of dropped ${overallDifferencePercentage}%, from ${baseCoverage.coverage}% to ${headCoverage.coverage}% which is below minimum threshold of ${-negativeDifferenceThreshold}%`
)
}

Expand Down Expand Up @@ -200,10 +203,11 @@ async function generateMarkdown(
failOnNegativeDifference &&
negativeDifferenceBy === 'package' &&
differencePercentage !== null &&
differencePercentage < 0
differencePercentage < 0 &&
differencePercentage < negativeDifferenceThreshold
) {
core.setFailed(
`${headCoverage.files[hash].relative} coverage difference was ${differencePercentage}%`
`${headCoverage.files[hash].relative} coverage difference was ${differencePercentage}% which is below threshold of ${-negativeDifferenceThreshold}%`
)
}

Expand Down
6 changes: 5 additions & 1 deletion src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,9 @@ export function getInputs(): Inputs {
core.getInput('file_coverage_warning_max') || '75'
)

const negativeDifferenceThreshold =
parseFloat(core.getInput('negative_difference_threshold') || '0') * -100

const failOnNegativeDifference =
core.getInput('fail_on_negative_difference') === 'true' ? true : false

Expand Down Expand Up @@ -389,7 +392,8 @@ export function getInputs(): Inputs {
negativeDifferenceBy,
retention: retentionDays,
withoutBaseCoverageTemplate,
withBaseCoverageTemplate
withBaseCoverageTemplate,
negativeDifferenceThreshold
}

return inputs
Expand Down