Skip to content

Commit 088335c

Browse files
committed
add coverage check after same-folder example
1 parent 7b2e452 commit 088335c

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

.circleci/config.yml

+4
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,10 @@ workflows:
194194
- run:
195195
command: npx nyc report --check-coverage true --lines 100 --include unit-utils.js
196196
working_directory: examples/same-folder
197+
- run:
198+
command: node ../../scripts/check-coverage main.js
199+
- run:
200+
command: node ../../scripts/check-coverage unit-utils.js
197201

198202
- publish:
199203
filters:

scripts/check-coverage.js

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
const { join } = require('path')
2+
3+
const filename = process.argv[2]
4+
if (!filename) {
5+
console.error('Usage: node %s <file name>', __filename)
6+
process.exit(1)
7+
}
8+
const coverageFilename = join(process.cwd(), '.nyc_output', 'out.json')
9+
const coverage = require(coverageFilename)
10+
const fileCoverageKey = Object.keys(coverage).find(name => {
11+
const fileCover = coverage[name]
12+
if (fileCover.path.endsWith(filename)) {
13+
return fileCover
14+
}
15+
})
16+
17+
if (!fileCoverageKey) {
18+
console.error(
19+
'Could not find file %s in coverage in file %s',
20+
filename,
21+
coverageFilename
22+
)
23+
process.exit(1)
24+
}
25+
26+
const fileCoverage = coverage[fileCoverageKey]
27+
const statementCounters = fileCoverage.s
28+
const isThereUncoveredStatement = Object.keys(statementCounters).some(
29+
(k, key) => {
30+
return statementCounters[key] === 0
31+
}
32+
)
33+
if (isThereUncoveredStatement) {
34+
console.error(
35+
'file %s has statements that were not covered by tests',
36+
fileCoverage.path
37+
)
38+
console.log('statement counters %o', statementCounters)
39+
40+
process.exit(1)
41+
}
42+
43+
console.log(
44+
'All statements in file %s (found for %s) were covered',
45+
fileCoverage.path,
46+
filename
47+
)

0 commit comments

Comments
 (0)