@@ -2030,6 +2030,7 @@ function run() {
2030
2030
const githubToken = core . getInput ( 'accessToken' ) ;
2031
2031
const fullCoverage = JSON . parse ( core . getInput ( 'fullCoverageDiff' ) ) ;
2032
2032
const commandToRun = core . getInput ( 'runCommand' ) ;
2033
+ const delta = Number ( core . getInput ( 'delta' ) ) ;
2033
2034
const githubClient = github . getOctokit ( githubToken ) ;
2034
2035
const prNumber = github . context . issue . number ;
2035
2036
const branchNameBase = ( _a = github . context . payload . pull_request ) === null || _a === void 0 ? void 0 : _a . base . ref ;
@@ -2046,7 +2047,7 @@ function run() {
2046
2047
. trim ( ) ;
2047
2048
const diffChecker = new DiffChecker_1 . DiffChecker ( codeCoverageNew , codeCoverageOld ) ;
2048
2049
let messageToPost = `Code coverage diff between base branch:${ branchNameBase } and head branch: ${ branchNameHead } \n` ;
2049
- const coverageDetails = diffChecker . getCoverageDetails ( ! fullCoverage , `${ currentDirectory } /` ) ;
2050
+ const coverageDetails = diffChecker . getCoverageDetails ( ! fullCoverage , `${ currentDirectory } /` , delta ) ;
2050
2051
if ( coverageDetails . length === 0 ) {
2051
2052
messageToPost =
2052
2053
'No changes to code coverage between the base branch and the head branch' ;
@@ -6710,11 +6711,11 @@ class DiffChecker {
6710
6711
}
6711
6712
}
6712
6713
}
6713
- getCoverageDetails ( diffOnly , currentDirectory ) {
6714
+ getCoverageDetails ( diffOnly , currentDirectory , delta ) {
6714
6715
const keys = Object . keys ( this . diffCoverageReport ) ;
6715
6716
const returnStrings = [ ] ;
6716
6717
for ( const key of keys ) {
6717
- if ( this . compareCoverageValues ( this . diffCoverageReport [ key ] ) !== 0 ) {
6718
+ if ( this . compareCoverageValues ( this . diffCoverageReport [ key ] , delta ) !== 0 ) {
6718
6719
returnStrings . push ( this . createDiffLine ( key . replace ( currentDirectory , '' ) , this . diffCoverageReport [ key ] ) ) ;
6719
6720
}
6720
6721
else {
@@ -6734,10 +6735,15 @@ class DiffChecker {
6734
6735
}
6735
6736
return `${ name } | ~~${ diffFileCoverageData . statements . oldPct } ~~ **${ diffFileCoverageData . statements . newPct } ** | ~~${ diffFileCoverageData . branches . oldPct } ~~ **${ diffFileCoverageData . branches . newPct } ** | ~~${ diffFileCoverageData . functions . oldPct } ~~ **${ diffFileCoverageData . functions . newPct } ** | ~~${ diffFileCoverageData . lines . oldPct } ~~ **${ diffFileCoverageData . lines . newPct } **` ;
6736
6737
}
6737
- compareCoverageValues ( diffCoverageData ) {
6738
+ compareCoverageValues ( diffCoverageData , delta ) {
6738
6739
const keys = Object . keys ( diffCoverageData ) ;
6739
6740
for ( const key of keys ) {
6740
6741
if ( diffCoverageData [ key ] . oldPct !== diffCoverageData [ key ] . newPct ) {
6742
+ const oldValue = Number ( diffCoverageData [ key ] . oldPct ) ;
6743
+ const newValue = Number ( diffCoverageData [ key ] . newPct ) ;
6744
+ if ( oldValue - newValue > delta ) {
6745
+ throw Error ( `Current PR reduces the test percentage by ${ delta } ` ) ;
6746
+ }
6741
6747
return 1 ;
6742
6748
}
6743
6749
}
0 commit comments