@@ -2047,7 +2047,7 @@ function run() {
20472047 . trim ( ) ;
20482048 const diffChecker = new DiffChecker_1 . DiffChecker ( codeCoverageNew , codeCoverageOld ) ;
20492049 let messageToPost = `Code coverage diff between base branch:${ branchNameBase } and head branch: ${ branchNameHead } \n` ;
2050- const coverageDetails = diffChecker . getCoverageDetails ( ! fullCoverage , `${ currentDirectory } /` , delta ) ;
2050+ const coverageDetails = diffChecker . getCoverageDetails ( ! fullCoverage , `${ currentDirectory } /` ) ;
20512051 if ( coverageDetails . length === 0 ) {
20522052 messageToPost =
20532053 'No changes to code coverage between the base branch and the head branch' ;
@@ -2063,6 +2063,17 @@ function run() {
20632063 body : messageToPost ,
20642064 issue_number : prNumber
20652065 } ) ;
2066+ // check if the test coverage is falling below delta/tolerance.
2067+ if ( diffChecker . checkIfTestCoverageFallsBelowDelta ( delta ) ) {
2068+ messageToPost = `Current PR reduces the test coverage percentage by ${ delta } for some tests` ;
2069+ yield githubClient . issues . createComment ( {
2070+ repo : repoName ,
2071+ owner : repoOwner ,
2072+ body : messageToPost ,
2073+ issue_number : prNumber
2074+ } ) ;
2075+ throw Error ( messageToPost ) ;
2076+ }
20662077 }
20672078 catch ( error ) {
20682079 core . setFailed ( error ) ;
@@ -6711,11 +6722,11 @@ class DiffChecker {
67116722 }
67126723 }
67136724 }
6714- getCoverageDetails ( diffOnly , currentDirectory , delta ) {
6725+ getCoverageDetails ( diffOnly , currentDirectory ) {
67156726 const keys = Object . keys ( this . diffCoverageReport ) ;
67166727 const returnStrings = [ ] ;
67176728 for ( const key of keys ) {
6718- if ( this . compareCoverageValues ( this . diffCoverageReport [ key ] , delta ) !== 0 ) {
6729+ if ( this . compareCoverageValues ( this . diffCoverageReport [ key ] ) !== 0 ) {
67196730 returnStrings . push ( this . createDiffLine ( key . replace ( currentDirectory , '' ) , this . diffCoverageReport [ key ] ) ) ;
67206731 }
67216732 else {
@@ -6726,6 +6737,23 @@ class DiffChecker {
67266737 }
67276738 return returnStrings ;
67286739 }
6740+ checkIfTestCoverageFallsBelowDelta ( delta ) {
6741+ const keys = Object . keys ( this . diffCoverageReport ) ;
6742+ for ( const key of keys ) {
6743+ const diffCoverageData = this . diffCoverageReport [ key ] ;
6744+ const keys = Object . keys ( diffCoverageData ) ;
6745+ for ( const key of keys ) {
6746+ if ( diffCoverageData [ key ] . oldPct !== diffCoverageData [ key ] . newPct ) {
6747+ const oldValue = Number ( diffCoverageData [ key ] . oldPct ) ;
6748+ const newValue = Number ( diffCoverageData [ key ] . newPct ) ;
6749+ if ( oldValue - newValue > delta ) {
6750+ return true ;
6751+ }
6752+ }
6753+ }
6754+ }
6755+ return false ;
6756+ }
67296757 createDiffLine ( name , diffFileCoverageData ) {
67306758 if ( ! diffFileCoverageData . branches . oldPct ) {
67316759 return `**${ name } ** | **${ diffFileCoverageData . statements . newPct } ** | **${ diffFileCoverageData . branches . newPct } ** | **${ diffFileCoverageData . functions . newPct } ** | **${ diffFileCoverageData . lines . newPct } **` ;
@@ -6735,15 +6763,10 @@ class DiffChecker {
67356763 }
67366764 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 } **` ;
67376765 }
6738- compareCoverageValues ( diffCoverageData , delta ) {
6766+ compareCoverageValues ( diffCoverageData ) {
67396767 const keys = Object . keys ( diffCoverageData ) ;
67406768 for ( const key of keys ) {
67416769 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- }
67476770 return 1 ;
67486771 }
67496772 }
0 commit comments