@@ -2030,6 +2030,7 @@ function run() {
20302030 const githubToken = core . getInput ( 'accessToken' ) ;
20312031 const fullCoverage = JSON . parse ( core . getInput ( 'fullCoverageDiff' ) ) ;
20322032 const commandToRun = core . getInput ( 'runCommand' ) ;
2033+ const delta = Number ( core . getInput ( 'delta' ) ) ;
20332034 const githubClient = github . getOctokit ( githubToken ) ;
20342035 const prNumber = github . context . issue . number ;
20352036 const branchNameBase = ( _a = github . context . payload . pull_request ) === null || _a === void 0 ? void 0 : _a . base . ref ;
@@ -2046,7 +2047,7 @@ function run() {
20462047 . trim ( ) ;
20472048 const diffChecker = new DiffChecker_1 . DiffChecker ( codeCoverageNew , codeCoverageOld ) ;
20482049 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 ) ;
20502051 if ( coverageDetails . length === 0 ) {
20512052 messageToPost =
20522053 'No changes to code coverage between the base branch and the head branch' ;
@@ -6710,11 +6711,11 @@ class DiffChecker {
67106711 }
67116712 }
67126713 }
6713- getCoverageDetails ( diffOnly , currentDirectory ) {
6714+ getCoverageDetails ( diffOnly , currentDirectory , delta ) {
67146715 const keys = Object . keys ( this . diffCoverageReport ) ;
67156716 const returnStrings = [ ] ;
67166717 for ( const key of keys ) {
6717- if ( this . compareCoverageValues ( this . diffCoverageReport [ key ] ) !== 0 ) {
6718+ if ( this . compareCoverageValues ( this . diffCoverageReport [ key ] , delta ) !== 0 ) {
67186719 returnStrings . push ( this . createDiffLine ( key . replace ( currentDirectory , '' ) , this . diffCoverageReport [ key ] ) ) ;
67196720 }
67206721 else {
@@ -6734,10 +6735,15 @@ class DiffChecker {
67346735 }
67356736 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 } **` ;
67366737 }
6737- compareCoverageValues ( diffCoverageData ) {
6738+ compareCoverageValues ( diffCoverageData , delta ) {
67386739 const keys = Object . keys ( diffCoverageData ) ;
67396740 for ( const key of keys ) {
67406741 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+ }
67416747 return 1 ;
67426748 }
67436749 }
0 commit comments