Skip to content

Commit 24d6b0e

Browse files
committed
changes
1 parent 7b04a53 commit 24d6b0e

File tree

4 files changed

+21
-230
lines changed

4 files changed

+21
-230
lines changed

__tests__/DiffChecker.test.ts

-152
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,6 @@ describe('DiffChecker', () => {
1313
skipped: 1,
1414
pct: 99
1515
}
16-
const mock98Coverage = {
17-
total: 100,
18-
covered: 98,
19-
skipped: 1,
20-
pct: 98
21-
}
2216
const mockEmptyCoverage = {
2317
total: 100,
2418
covered: 0,
@@ -37,12 +31,6 @@ describe('DiffChecker', () => {
3731
functions: mock100Coverage,
3832
lines: mock100Coverage
3933
}
40-
const mock98CoverageFile = {
41-
statements: mock98Coverage,
42-
branches: mock98Coverage,
43-
functions: mock98Coverage,
44-
lines: mock98Coverage
45-
}
4634
const mockEmptyCoverageFile = {
4735
statements: mockEmptyCoverage,
4836
branches: mockEmptyCoverage,
@@ -77,144 +65,4 @@ describe('DiffChecker', () => {
7765
' :x: | ~~file4~~ | ~~100~~ | ~~100~~ | ~~100~~ | ~~100~~'
7866
])
7967
})
80-
describe('testing checkIfTestCoverageFallsBelowDelta', () => {
81-
describe('respects total_delta for total and delta for other files', () => {
82-
it('returns true because delta diff is too high, even if total_delta is okay', () => {
83-
const codeCoverageOld = {
84-
total: mock100CoverageFile,
85-
file1: mock100CoverageFile
86-
}
87-
const codeCoverageNew = {
88-
total: mock98CoverageFile,
89-
file1: mock98CoverageFile
90-
}
91-
const diffChecker = new DiffChecker(codeCoverageNew, codeCoverageOld)
92-
const isTestCoverageFallsBelowDelta = diffChecker.checkIfTestCoverageFallsBelowDelta(
93-
1,
94-
50
95-
)
96-
expect(isTestCoverageFallsBelowDelta).toBeTruthy()
97-
})
98-
it('returns true because total_delta diff is too high, even if delta is okay', () => {
99-
const codeCoverageOld = {
100-
total: mock100CoverageFile,
101-
file1: mock100CoverageFile
102-
}
103-
const codeCoverageNew = {
104-
total: mock98CoverageFile,
105-
file1: mock98CoverageFile
106-
}
107-
const diffChecker = new DiffChecker(codeCoverageNew, codeCoverageOld)
108-
const isTestCoverageFallsBelowDelta = diffChecker.checkIfTestCoverageFallsBelowDelta(
109-
50,
110-
1
111-
)
112-
expect(isTestCoverageFallsBelowDelta).toBeTruthy()
113-
})
114-
it('returns true if delta diff is too high - total_delta is not defined', () => {
115-
const codeCoverageOld = {
116-
total: mock100CoverageFile,
117-
file1: mock100CoverageFile
118-
}
119-
const codeCoverageNew = {
120-
total: mock98CoverageFile,
121-
file1: mock98CoverageFile
122-
}
123-
const diffChecker = new DiffChecker(codeCoverageNew, codeCoverageOld)
124-
const isTestCoverageFallsBelowDelta = diffChecker.checkIfTestCoverageFallsBelowDelta(
125-
1,
126-
null
127-
)
128-
expect(isTestCoverageFallsBelowDelta).toBeTruthy()
129-
})
130-
it('returns false if total_delta and delta are okay', () => {
131-
const codeCoverageOld = {
132-
total: mock100CoverageFile,
133-
file1: mock100CoverageFile
134-
}
135-
const codeCoverageNew = {
136-
total: mock98CoverageFile,
137-
file1: mock98CoverageFile
138-
}
139-
const diffChecker = new DiffChecker(codeCoverageNew, codeCoverageOld)
140-
const isTestCoverageFallsBelowDelta = diffChecker.checkIfTestCoverageFallsBelowDelta(
141-
50,
142-
50
143-
)
144-
expect(isTestCoverageFallsBelowDelta).toBeFalsy()
145-
})
146-
it('returns false if delta is okay - total_delta is not defined', () => {
147-
const codeCoverageOld = {
148-
total: mock100CoverageFile,
149-
file1: mock100CoverageFile
150-
}
151-
const codeCoverageNew = {
152-
total: mock98CoverageFile,
153-
file1: mock98CoverageFile
154-
}
155-
const diffChecker = new DiffChecker(codeCoverageNew, codeCoverageOld)
156-
const isTestCoverageFallsBelowDelta = diffChecker.checkIfTestCoverageFallsBelowDelta(
157-
50,
158-
null
159-
)
160-
expect(isTestCoverageFallsBelowDelta).toBeFalsy()
161-
})
162-
})
163-
it('detects that total coverage dropped below total_delta', () => {
164-
const codeCoverageOld = {
165-
total: mock100CoverageFile
166-
}
167-
const codeCoverageNew = {
168-
total: mock98CoverageFile
169-
}
170-
const diffChecker = new DiffChecker(codeCoverageNew, codeCoverageOld)
171-
const isTestCoverageFallsBelowDelta = diffChecker.checkIfTestCoverageFallsBelowDelta(
172-
2,
173-
1
174-
)
175-
expect(isTestCoverageFallsBelowDelta).toBeTruthy()
176-
})
177-
it('detects that total coverage did not drop below total_delta', () => {
178-
const codeCoverageOld = {
179-
total: mock100CoverageFile
180-
}
181-
const codeCoverageNew = {
182-
total: mock98CoverageFile
183-
}
184-
const diffChecker = new DiffChecker(codeCoverageNew, codeCoverageOld)
185-
const isTestCoverageFallsBelowDelta = diffChecker.checkIfTestCoverageFallsBelowDelta(
186-
1,
187-
5
188-
)
189-
expect(isTestCoverageFallsBelowDelta).toBeFalsy()
190-
})
191-
it('detects that total coverage dropped below delta', () => {
192-
const codeCoverageOld = {
193-
total: mock100CoverageFile
194-
}
195-
const codeCoverageNew = {
196-
total: mock98CoverageFile
197-
}
198-
const diffChecker = new DiffChecker(codeCoverageNew, codeCoverageOld)
199-
const isTestCoverageFallsBelowDelta = diffChecker.checkIfTestCoverageFallsBelowDelta(
200-
1,
201-
null
202-
)
203-
expect(isTestCoverageFallsBelowDelta).toBeTruthy()
204-
})
205-
it('detects that total coverage did not drop below delta', () => {
206-
const codeCoverageOld = {
207-
total: mock100CoverageFile
208-
}
209-
const codeCoverageNew = {
210-
total: mock98CoverageFile
211-
}
212-
const diffChecker = new DiffChecker(codeCoverageNew, codeCoverageOld)
213-
const isTestCoverageFallsBelowDelta = diffChecker.checkIfTestCoverageFallsBelowDelta(
214-
2,
215-
null
216-
)
217-
expect(isTestCoverageFallsBelowDelta).toBeFalsy()
218-
})
219-
})
22068
})

dist/index.js

+10-39
Original file line numberDiff line numberDiff line change
@@ -2034,22 +2034,17 @@ function run() {
20342034
const additionalCommentInfo = core.getInput('additionalCommentInfo');
20352035
const codeCoverageDirectory = core.getInput('codeCoverageDirectory');
20362036
const delta = Number(core.getInput('delta'));
2037-
const rawTotalDelta = core.getInput('total_delta');
2038-
const mainBranchCoverageSummaryFileName = core.getInput('mainBranchCoverageSummaryFileName');
20392037
const githubClient = github.getOctokit(githubToken);
20402038
const prNumber = github.context.issue.number;
20412039
const branchNameBase = (_a = github.context.payload.pull_request) === null || _a === void 0 ? void 0 : _a.base.ref;
20422040
const branchNameHead = (_b = github.context.payload.pull_request) === null || _b === void 0 ? void 0 : _b.head.ref;
2041+
const mainBranchCoverageSummaryFileName = core.getInput('mainBranchCoverageSummaryFileName');
20432042
const useSameComment = JSON.parse(core.getInput('useSameComment'));
20442043
const commentIdentifier = `<!-- codeCoverageDiffComment -->`;
20452044
const deltaCommentIdentifier = `<!-- codeCoverageDeltaComment -->`;
2046-
let totalDelta = null;
2047-
if (rawTotalDelta !== null) {
2048-
totalDelta = Number(rawTotalDelta);
2049-
}
20502045
let commentId = null;
2051-
child_process_1.execSync(`${commandToRun}`);
2052-
const codeCoverageNew = (JSON.parse(fs_1.default.readFileSync(codeCoverageDirectory).toString()));
2046+
child_process_1.execSync(commandToRun);
2047+
const codeCoverageNew = (JSON.parse(fs_1.default.readFileSync('coverage-summary.json').toString()));
20532048
const codeCoverageOld = (JSON.parse(fs_1.default.readFileSync(mainBranchCoverageSummaryFileName).toString()));
20542049
const currentDirectory = child_process_1.execSync('pwd')
20552050
.toString()
@@ -2073,7 +2068,7 @@ function run() {
20732068
}
20742069
yield createOrUpdateComment(commentId, githubClient, repoOwner, repoName, messageToPost, prNumber);
20752070
// check if the test coverage is falling below delta/tolerance.
2076-
if (diffChecker.checkIfTestCoverageFallsBelowDelta(delta, totalDelta)) {
2071+
if (diffChecker.checkIfTestCoverageFallsBelowDelta(delta)) {
20772072
if (useSameComment) {
20782073
commentId = yield findComment(githubClient, repoName, repoOwner, prNumber, deltaCommentIdentifier);
20792074
}
@@ -6716,32 +6711,12 @@ module.exports = isPlainObject;
67166711
/***/ }),
67176712

67186713
/***/ 563:
6719-
/***/ (function(__unusedmodule, exports, __webpack_require__) {
6714+
/***/ (function(__unusedmodule, exports) {
67206715

67216716
"use strict";
67226717

6723-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6724-
if (k2 === undefined) k2 = k;
6725-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
6726-
}) : (function(o, m, k, k2) {
6727-
if (k2 === undefined) k2 = k;
6728-
o[k2] = m[k];
6729-
}));
6730-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
6731-
Object.defineProperty(o, "default", { enumerable: true, value: v });
6732-
}) : function(o, v) {
6733-
o["default"] = v;
6734-
});
6735-
var __importStar = (this && this.__importStar) || function (mod) {
6736-
if (mod && mod.__esModule) return mod;
6737-
var result = {};
6738-
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
6739-
__setModuleDefault(result, mod);
6740-
return result;
6741-
};
67426718
Object.defineProperty(exports, "__esModule", { value: true });
67436719
exports.DiffChecker = void 0;
6744-
const core = __importStar(__webpack_require__(470));
67456720
const increasedCoverageIcon = ':green_circle:';
67466721
const decreasedCoverageIcon = ':red_circle:';
67476722
const newCoverageIcon = ':sparkles: :new:';
@@ -6789,24 +6764,20 @@ class DiffChecker {
67896764
}
67906765
return returnStrings;
67916766
}
6792-
checkIfTestCoverageFallsBelowDelta(delta, totalDelta) {
6793-
const files = Object.keys(this.diffCoverageReport);
6794-
for (const file of files) {
6795-
const diffCoverageData = this.diffCoverageReport[file];
6767+
checkIfTestCoverageFallsBelowDelta(delta) {
6768+
const keys = Object.keys(this.diffCoverageReport);
6769+
for (const key of keys) {
6770+
const diffCoverageData = this.diffCoverageReport[key];
67966771
const keys = Object.keys(diffCoverageData);
67976772
// No new coverage found so that means we deleted a file coverage
67986773
const fileRemovedCoverage = Object.values(diffCoverageData).every(coverageData => coverageData.newPct === 0);
67996774
if (fileRemovedCoverage) {
6800-
core.info(`${file} : deleted or renamed and is not considered for coverage diff.`);
68016775
// since the file is deleted don't include in delta calculation
68026776
continue;
68036777
}
68046778
for (const key of keys) {
68056779
if (diffCoverageData[key].oldPct !== diffCoverageData[key].newPct) {
6806-
const deltaToCompareWith = file === 'total' && totalDelta !== null ? totalDelta : delta;
6807-
if (-this.getPercentageDiff(diffCoverageData[key]) > deltaToCompareWith) {
6808-
const percentageDiff = this.getPercentageDiff(diffCoverageData[key]);
6809-
core.info(`percentage Diff: ${percentageDiff} is greater than delta for ${file}`);
6780+
if (-this.getPercentageDiff(diffCoverageData[key]) > delta) {
68106781
return true;
68116782
}
68126783
}

src/DiffChecker.ts

+5-20
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import * as core from '@actions/core'
21
import {CoverageReport} from './Model/CoverageReport'
32
import {DiffCoverageReport} from './Model/DiffCoverageReport'
43
import {CoverageData} from './Model/CoverageData'
@@ -68,13 +67,10 @@ export class DiffChecker {
6867
return returnStrings
6968
}
7069

71-
checkIfTestCoverageFallsBelowDelta(
72-
delta: number,
73-
totalDelta: number | null
74-
): boolean {
75-
const files = Object.keys(this.diffCoverageReport)
76-
for (const file of files) {
77-
const diffCoverageData = this.diffCoverageReport[file]
70+
checkIfTestCoverageFallsBelowDelta(delta: number): boolean {
71+
const keys = Object.keys(this.diffCoverageReport)
72+
for (const key of keys) {
73+
const diffCoverageData = this.diffCoverageReport[key]
7874
const keys: ('lines' | 'statements' | 'branches' | 'functions')[] = <
7975
('lines' | 'statements' | 'branches' | 'functions')[]
8076
>Object.keys(diffCoverageData)
@@ -83,23 +79,12 @@ export class DiffChecker {
8379
coverageData => coverageData.newPct === 0
8480
)
8581
if (fileRemovedCoverage) {
86-
core.info(
87-
`${file} : deleted or renamed and is not considered for coverage diff.`
88-
)
8982
// since the file is deleted don't include in delta calculation
9083
continue
9184
}
9285
for (const key of keys) {
9386
if (diffCoverageData[key].oldPct !== diffCoverageData[key].newPct) {
94-
const deltaToCompareWith =
95-
file === 'total' && totalDelta !== null ? totalDelta : delta
96-
if (
97-
-this.getPercentageDiff(diffCoverageData[key]) > deltaToCompareWith
98-
) {
99-
const percentageDiff = this.getPercentageDiff(diffCoverageData[key])
100-
core.info(
101-
`percentage Diff: ${percentageDiff} is greater than delta for ${file}`
102-
)
87+
if (-this.getPercentageDiff(diffCoverageData[key]) > delta) {
10388
return true
10489
}
10590
}

src/main.ts

+6-19
Original file line numberDiff line numberDiff line change
@@ -18,44 +18,32 @@ async function run(): Promise<void> {
1818
const commandToRun = core.getInput('runCommand')
1919
const additionalCommentInfo = core.getInput('additionalCommentInfo')
2020
const codeCoverageDirectory = core.getInput('codeCoverageDirectory')
21-
2221
const delta = Number(core.getInput('delta'))
23-
const rawTotalDelta = core.getInput('total_delta')
24-
const mainBranchCoverageSummaryFileName = core.getInput(
25-
'mainBranchCoverageSummaryFileName'
26-
)
2722
const githubClient = github.getOctokit(githubToken)
2823
const prNumber = github.context.issue.number
2924
const branchNameBase = github.context.payload.pull_request?.base.ref
3025
const branchNameHead = github.context.payload.pull_request?.head.ref
26+
const mainBranchCoverageSummaryFileName = core.getInput(
27+
'mainBranchCoverageSummaryFileName'
28+
)
3129
const useSameComment = JSON.parse(core.getInput('useSameComment'))
3230
const commentIdentifier = `<!-- codeCoverageDiffComment -->`
3331
const deltaCommentIdentifier = `<!-- codeCoverageDeltaComment -->`
34-
let totalDelta = null
35-
36-
if (rawTotalDelta !== null) {
37-
totalDelta = Number(rawTotalDelta)
38-
}
39-
4032
let commentId = null
41-
execSync(`${commandToRun}`)
42-
33+
execSync(commandToRun)
4334
const codeCoverageNew = <CoverageReport>(
44-
JSON.parse(fs.readFileSync(codeCoverageDirectory).toString())
35+
JSON.parse(fs.readFileSync('coverage-summary.json').toString())
4536
)
46-
4737
const codeCoverageOld = <CoverageReport>(
4838
JSON.parse(fs.readFileSync(mainBranchCoverageSummaryFileName).toString())
4939
)
50-
5140
const currentDirectory = execSync('pwd')
5241
.toString()
5342
.trim()
5443
const diffChecker: DiffChecker = new DiffChecker(
5544
codeCoverageNew,
5645
codeCoverageOld
5746
)
58-
5947
let messageToPost = `## Test coverage results :test_tube: \n
6048
Code coverage diff between base branch:${branchNameBase} and head branch: ${branchNameHead} \n\n`
6149
const coverageDetails = diffChecker.getCoverageDetails(
@@ -90,7 +78,7 @@ async function run(): Promise<void> {
9078
)
9179

9280
// check if the test coverage is falling below delta/tolerance.
93-
if (diffChecker.checkIfTestCoverageFallsBelowDelta(delta, totalDelta)) {
81+
if (diffChecker.checkIfTestCoverageFallsBelowDelta(delta)) {
9482
if (useSameComment) {
9583
commentId = await findComment(
9684
githubClient,
@@ -105,7 +93,6 @@ async function run(): Promise<void> {
10593
if (additionalCommentInfo) {
10694
messageToPost = `${messageToPost}\n${additionalCommentInfo}`
10795
}
108-
10996
await createOrUpdateComment(
11097
commentId,
11198
githubClient,

0 commit comments

Comments
 (0)