github.com/expr-lang/expr@v1.16.9/.github/scripts/coverage.mjs (about) 1 #!/usr/bin/env zx 2 3 const expected = 90 4 const exclude = [ 5 'expr/test', 6 'checker/mock', 7 'vm/func_types', 8 'vm/runtime/helpers', 9 'internal/difflib', 10 'internal/spew', 11 'internal/testify', 12 ] 13 14 cd(path.resolve(__dirname, '..', '..')) 15 16 await spinner('Running tests', async () => { 17 await $`go test -coverprofile=coverage.out -coverpkg=github.com/expr-lang/expr/... ./...` 18 const coverage = fs.readFileSync('coverage.out').toString() 19 .split('\n') 20 .filter(line => { 21 for (const ex of exclude) 22 if (line.includes(ex)) return false 23 return true 24 }) 25 .join('\n') 26 fs.writeFileSync('coverage.out', coverage) 27 await $`go tool cover -html=coverage.out -o coverage.html` 28 }) 29 30 const cover = await $({verbose: true})`go tool cover -func=coverage.out` 31 const total = +cover.stdout.match(/total:\s+\(statements\)\s+(\d+\.\d+)%/)[1] 32 if (total < expected) { 33 echo(chalk.red(`Coverage is too low: ${total}% < ${expected}% (expected)`)) 34 process.exit(1) 35 } else { 36 echo(`Coverage is good: ${chalk.green(total + '%')} >= ${expected}% (expected)`) 37 }