Skip to content

Commit 2fea995

Browse files
committed
chore(github actions): Update coverage checking
1 parent a613b6e commit 2fea995

File tree

4 files changed

+325
-44
lines changed

4 files changed

+325
-44
lines changed

.github/scripts/checkCoverage.ts

Lines changed: 27 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,43 @@
11
/* v8 ignore next 1000 */
22

3-
import { parseString } from 'xml2js';
4-
import { readFile } from 'fs';
5-
6-
function parseXMLFile(): Promise<any> {
7-
return new Promise((resolve, reject) => {
8-
readFile('.github/coverageData.xml', 'utf8', (err, data) => {
9-
if (err) {
10-
reject('File Dose not exist!');
11-
return;
12-
}
13-
14-
parseString(data, (err, result) => {
15-
if (err) {
16-
reject('Something Went wrong!');
17-
return;
18-
}
19-
20-
resolve(result);
21-
});
22-
});
23-
});
24-
}
3+
import { parseStringPromise } from 'xml2js';
4+
import { readFileSync } from 'fs';
5+
6+
const coverageDataFile = readFileSync('./coverage/clover.xml', 'utf-8');
7+
const parsed = await parseStringPromise(coverageDataFile);
258

26-
const data = await parseXMLFile();
27-
const codeStats = data.coverage.project[0].metrics[0].$;
9+
const codeStats = parsed.coverage.project[0].metrics[0].$;
2810
const info = {
2911
statements: Number(codeStats.statements),
30-
coveredstatements: Number(codeStats.coveredstatements),
12+
coveredStatements: Number(codeStats.coveredstatements),
3113
conditionals: Number(codeStats.conditionals),
32-
coveredconditionals: Number(codeStats.coveredconditionals),
14+
coveredConditionals: Number(codeStats.coveredconditionals),
3315
methods: Number(codeStats.methods),
34-
coveredmethods: Number(codeStats.coveredmethods)
16+
coveredMethods: Number(codeStats.coveredmethods)
3517
};
3618

37-
if ((info.coveredstatements / info.statements) * 100 < 95) {
38-
throw new Error('Statements is required to be 95% or higher');
19+
const baseline = 95;
20+
21+
const statementsCoverage = (info.coveredStatements / info.statements) * 100;
22+
if (statementsCoverage <= baseline) {
23+
console.log(`Statements is required to be ${baseline}% or higher. Currently ${statementsCoverage.toFixed(2)}`);
24+
process.exit();
3925
}
4026

41-
if ((info.coveredconditionals / info.conditionals) * 100 < 95) {
42-
throw new Error('Conditionals is required to be 95% or higher');
27+
const conditionalsCoverage = (info.coveredConditionals / info.conditionals) * 100;
28+
if (conditionalsCoverage <= baseline) {
29+
console.log(`Conditionals is required to be ${baseline}% or higher. Currently ${conditionalsCoverage.toFixed(2)}`);
30+
process.exit();
4331
}
4432

45-
if ((info.coveredmethods / info.methods) * 100 < 95) {
46-
throw new Error('Methods is required to be 95% or higher');
33+
const methodsCoverage = (info.coveredMethods / info.methods) * 100;
34+
if (methodsCoverage <= baseline) {
35+
console.log(`Methods is required to be ${baseline}% or higher. Currently ${methodsCoverage.toFixed(2)}`);
36+
process.exit();
4737
}
4838

49-
if (
50-
((info.coveredstatements + info.coveredconditionals + info.coveredmethods) /
51-
(info.statements + info.conditionals + info.methods)) *
52-
100 <
53-
95
54-
) {
55-
throw new Error('Everythng Combinded is required to be 95% or higher');
39+
const combinedCoverage = statementsCoverage + conditionalsCoverage + methodsCoverage;
40+
if (combinedCoverage <= baseline) {
41+
console.log(`Everything Combined is required to be ${baseline}% or higher. Currently ${combinedCoverage.toFixed(2)}`);
42+
process.exit();
5643
}

.github/workflows/ci-cd.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,5 @@ jobs:
125125
HYPIXEL_KEY: ${{ secrets.HYPIXEL_KEY }}
126126
run: pnpm test:coverage
127127

128-
- name: Move Coverage Data
129-
run: mv coverage/clover.xml .github/coverageData.xml
130-
131128
- name: Check Coverage
132-
run: npx tsx .github/scripts/checkCoverage.ts
129+
run: pnpm test:coverage:check

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"build": "pnpm exec tsc",
2525
"test": "pnpm exec vitest run",
2626
"test:coverage": "pnpm exec vitest run --coverage",
27+
"test:coverage:check": "pnpm exec tsx .github/scripts/checkCoverage.ts",
2728
"test:ui": "pnpm exec vitest --ui --coverage",
2829
"docgen": "pnpm exec typedoc"
2930
},
@@ -64,6 +65,7 @@
6465
"eslint-plugin-import": "^2.32.0",
6566
"globals": "^16.5.0",
6667
"prettier": "^3.6.2",
68+
"tsx": "^4.20.6",
6769
"typedoc": "^0.27.9",
6870
"typedoc-material-theme": "^1.4.1",
6971
"typedoc-plugin-rename-defaults": "^0.7.3",

0 commit comments

Comments
 (0)