UNPKG

@atakama/cover-diff

Version:

coverage reporter and enforcer for diffs only

128 lines (108 loc) 3.78 kB
const test = require('@atakama/qtest') const assert = test.assert const coverDiff = require('./cover-diff') const fs = require('fs') const util = require('util') test.before = (ctx) => { ctx.cd = new coverDiff() } test('opts', async (ctx) => { const opts = await ctx.cd.getOpts() ctx.log("opts:", opts) assert.equal(opts.lines, 95) assert.ok(opts.lcovFile) }) test('diff', async (ctx) => { const diff = await ctx.cd.getDiff({diffFile: "./test-data/diffs"}) ctx.log("diff:", diff[0]) assert.equal(diff[0].to, ".eslintrc") }) test('lcov', async (ctx) => { const lcov = await ctx.cd.getLcov({lcovFile: "./test-data/coverage/lcov.info"}) ctx.log("lcov:", lcov[0]) assert.equal(lcov[0].lines.details.length, 11) assert.equal(lcov[0].file, "lib/Constants.js") }) test('trim', async (ctx) => { const diff = await ctx.cd.getDiff({diffFile: "./test-data/diffs"}) const lcov = await ctx.cd.getLcov({lcovFile: "./test-data/coverage/lcov.info"}) const trim = await ctx.cd.trimLcov(diff, lcov, {}) ctx.log("trim:", trim) assert.equal(trim[0].lines.details.length, 1) assert.equal(lcov[0].file, "lib/Constants.js") }) test('fix-path-sep', async (ctx) => { const diff = await ctx.cd.getDiff({diffFile: "./test-data/diffs"}, {}) const lcov = await ctx.cd.getLcov({lcovFile: "./test-data/coverage/lcov.info"}, {}) lcov[0].file = 'lib\\Constants.js' const trim = await ctx.cd.trimLcov(diff, lcov, {fixPathSep: true}) assert.equal(trim[0].file, "lib\\Constants.js") }) test('out', async (ctx) => { const diff = await ctx.cd.getDiff({diffFile: "./test-data/diffs"}) const lcov = await ctx.cd.getLcov({lcovFile: "./test-data/coverage/lcov.info"}) const trim = await ctx.cd.trimLcov(diff, lcov, {}) const out = await ctx.cd.toLcov(trim) const expect = await util.promisify(fs.readFile)("./test-data/expected", "utf-8") assert.equal(out, expect) }) test('enforce', async(ctx) => { const sample =[ { file: "a", functions: {hit: 1, found: 2}, branches: {hit: 1, found: 2}, lines: {hit: 1, found: 2}, }, { file: "b", functions: {hit: 1, found: 2}, branches: {hit: 1, found: 2}, lines: {hit: 1, found: 2}, } ] const summ = ctx.cd.summarizeCov(sample) process.exitCode = 0 ctx.cd.checkCov(summ, {branches: 60, lines: 60, functions: 60}) assert(process.exitCode > 0) process.exitCode = 0 ctx.cd.checkCov(summ, {branches: 40, lines: 40, functions: 40}) assert(process.exitCode == 0) }) var cli = test.scope("fork", {parallel: false}) cli.beforeAll = () => { process.chdir("./test-data") } cli.afterAll = () => { process.chdir("..") } cli('basic', async () => { const cp = require('child_process'); const diffs = await util.promisify(fs.readFile)("./diffs", "utf-8") const out = cp.execFileSync(process.execPath, ['../cli.js'], { input: diffs }) const expect = await util.promisify(fs.readFile)("./expected", "utf-8") assert.equal(out, expect) }) cli('err', async () => { const cp = require('child_process'); const diffs = await util.promisify(fs.readFile)("./bad-diffs", "utf-8") try { cp.execFileSync(process.execPath, ['../cli.js'], { input: diffs }) assert.fail() } catch (err) { assert.equal(err.stdout, "") } }) cli('ok', async () => { const cp = require('child_process'); const diffs = await util.promisify(fs.readFile)("./non-diffs", "utf-8") let stdout = cp.execFileSync(process.execPath, ['../cli.js'], { input: diffs }) assert.equal(stdout, "") }) test.run()