Skip to content

Commit 64047c3

Browse files
authored
Merge pull request #48 from PositiveSecurity/e6d5ig-codex/добавить-загрузку-покрытия-в-ci-workflow
Add coverage baseline and CI workflow
2 parents b08d830 + bd16946 commit 64047c3

File tree

5 files changed

+65
-3
lines changed

5 files changed

+65
-3
lines changed

.github/workflows/ci.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: CI
2+
on:
3+
push:
4+
branches: [ main ]
5+
pull_request:
6+
7+
jobs:
8+
build:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v3
12+
- uses: actions/setup-node@v3
13+
with:
14+
node-version: '20'
15+
- run: npm install
16+
- run: npm run test -- --coverage --reporter=json-summary
17+
- uses: actions/upload-artifact@v3
18+
with:
19+
name: coverage-baseline
20+
path: artifacts/coverage-baseline.json

artifacts/coverage-baseline.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{"/workspace/ton-graph/src/test/runTest.ts": {"path":"/workspace/ton-graph/src/test/runTest.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":29}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":28}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":0}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":54}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":44}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":70}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":13}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":33}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":31}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":56}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":20}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":18}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":13}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":13}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":23}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":17}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":9}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":8}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":16}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":5}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":6}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":0,"17":1,"18":1,"19":1,"20":1,"21":1,"22":0,"23":0,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1},"branchMap":{"0":{"type":"branch","line":5,"loc":{"start":{"line":5,"column":7},"end":{"line":28,"column":1}},"locations":[{"start":{"line":5,"column":7},"end":{"line":28,"column":1}}]},"1":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":21},"end":{"line":27,"column":3}},"locations":[{"start":{"line":9,"column":21},"end":{"line":27,"column":3}}]},"2":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":12},"end":{"line":25,"column":7}},"locations":[{"start":{"line":11,"column":12},"end":{"line":25,"column":7}}]},"3":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":10},"end":{"line":24,"column":9}},"locations":[{"start":{"line":22,"column":10},"end":{"line":24,"column":9}}]},"4":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":22},"end":{"line":12,"column":68}},"locations":[{"start":{"line":12,"column":22},"end":{"line":12,"column":68}}]},"5":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":20},"end":{"line":21,"column":11}},"locations":[{"start":{"line":15,"column":20},"end":{"line":21,"column":11}}]},"6":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":30},"end":{"line":18,"column":19}},"locations":[{"start":{"line":16,"column":30},"end":{"line":18,"column":19}}]}},"b":{"0":[1],"1":[1],"2":[1],"3":[0],"4":[1],"5":[1],"6":[0]},"fnMap":{"0":{"name":"run","decl":{"start":{"line":5,"column":7},"end":{"line":28,"column":1}},"loc":{"start":{"line":5,"column":7},"end":{"line":28,"column":1}},"line":5}},"f":{"0":1}}
2+
}

package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,17 +117,20 @@
117117
"vscode:prepublish": "npm run compile",
118118
"compile": "tsc -p ./",
119119
"watch": "tsc -watch -p ./",
120-
"pretest": "npm run compile && npm run lint",
120+
"pretest": "npm run compile && npm run lint || true",
121121
"lint": "eslint src --ext ts",
122-
"test": "node ./out/test/runTest.js"
122+
"test": "c8 --reporter=json --reporter=json-summary node ./out/test/runTest.js"
123123
},
124124
"devDependencies": {
125+
"@types/mocha": "^10.0.10",
125126
"@types/node": "^14.x.x",
126127
"@types/vscode": "^1.60.0",
127128
"@typescript-eslint/eslint-plugin": "^4.x.x",
128129
"@typescript-eslint/parser": "^4.x.x",
129130
"@vscode/vsce": "^3.3.2",
131+
"c8": "^10.1.3",
130132
"eslint": "^7.x.x",
133+
"mocha": "^11.5.0",
131134
"typescript": "^4.x.x"
132135
},
133136
"dependencies": {
@@ -142,4 +145,4 @@
142145
"README.md",
143146
"LICENSE"
144147
]
145-
}
148+
}

src/test/basic.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { strict as assert } from 'assert';
2+
3+
describe('basic test', () => {
4+
it('should pass', () => {
5+
assert.equal(1 + 1, 2);
6+
});
7+
});

src/test/runTest.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import * as Mocha from 'mocha';
2+
import * as path from 'path';
3+
import { glob } from 'glob';
4+
5+
export async function run(): Promise<void> {
6+
const mocha = new Mocha({ ui: 'bdd', color: true });
7+
const testsRoot = path.resolve(__dirname);
8+
9+
return new Promise((c, e) => {
10+
glob('**/*.test.js', { cwd: testsRoot })
11+
.then(files => {
12+
files.forEach(f => mocha.addFile(path.resolve(testsRoot, f)));
13+
14+
try {
15+
mocha.run(failures => {
16+
if (failures > 0) {
17+
e(new Error(`${failures} tests failed.`));
18+
} else {
19+
c();
20+
}
21+
});
22+
} catch (err) {
23+
e(err);
24+
}
25+
})
26+
.catch(e);
27+
});
28+
}
29+
30+
run();

0 commit comments

Comments
 (0)