@@ -2047,7 +2047,7 @@ function run() {
2047
2047
. trim ( ) ;
2048
2048
const diffChecker = new DiffChecker_1 . DiffChecker ( codeCoverageNew , codeCoverageOld ) ;
2049
2049
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 } /` ) ;
2051
2051
if ( coverageDetails . length === 0 ) {
2052
2052
messageToPost =
2053
2053
'No changes to code coverage between the base branch and the head branch' ;
@@ -2063,6 +2063,17 @@ function run() {
2063
2063
body : messageToPost ,
2064
2064
issue_number : prNumber
2065
2065
} ) ;
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
+ }
2066
2077
}
2067
2078
catch ( error ) {
2068
2079
core . setFailed ( error ) ;
@@ -6711,11 +6722,11 @@ class DiffChecker {
6711
6722
}
6712
6723
}
6713
6724
}
6714
- getCoverageDetails ( diffOnly , currentDirectory , delta ) {
6725
+ getCoverageDetails ( diffOnly , currentDirectory ) {
6715
6726
const keys = Object . keys ( this . diffCoverageReport ) ;
6716
6727
const returnStrings = [ ] ;
6717
6728
for ( const key of keys ) {
6718
- if ( this . compareCoverageValues ( this . diffCoverageReport [ key ] , delta ) !== 0 ) {
6729
+ if ( this . compareCoverageValues ( this . diffCoverageReport [ key ] ) !== 0 ) {
6719
6730
returnStrings . push ( this . createDiffLine ( key . replace ( currentDirectory , '' ) , this . diffCoverageReport [ key ] ) ) ;
6720
6731
}
6721
6732
else {
@@ -6726,6 +6737,23 @@ class DiffChecker {
6726
6737
}
6727
6738
return returnStrings ;
6728
6739
}
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
+ }
6729
6757
createDiffLine ( name , diffFileCoverageData ) {
6730
6758
if ( ! diffFileCoverageData . branches . oldPct ) {
6731
6759
return `**${ name } ** | **${ diffFileCoverageData . statements . newPct } ** | **${ diffFileCoverageData . branches . newPct } ** | **${ diffFileCoverageData . functions . newPct } ** | **${ diffFileCoverageData . lines . newPct } **` ;
@@ -6735,15 +6763,10 @@ class DiffChecker {
6735
6763
}
6736
6764
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 } **` ;
6737
6765
}
6738
- compareCoverageValues ( diffCoverageData , delta ) {
6766
+ compareCoverageValues ( diffCoverageData ) {
6739
6767
const keys = Object . keys ( diffCoverageData ) ;
6740
6768
for ( const key of keys ) {
6741
6769
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
- }
6747
6770
return 1 ;
6748
6771
}
6749
6772
}
0 commit comments