diff --git a/lib/parse-args.js b/lib/parse-args.js index 84ff8e3e..c53f3c82 100644 --- a/lib/parse-args.js +++ b/lib/parse-args.js @@ -6,10 +6,12 @@ const Yargs = require('yargs/yargs') const { applyExtends } = require('yargs/helpers') const parser = require('yargs-parser') const { resolve } = require('path') +const { version } = require('../package.json') function buildYargs (withCommands = false) { const yargs = Yargs([]) .usage('$0 [opts] [script] [opts]') + .version(version) .options('config', { alias: 'c', config: true, diff --git a/test/integration.js.snap b/test/integration.js.snap index c2fba0a4..16329207 100644 --- a/test/integration.js.snap +++ b/test/integration.js.snap @@ -166,7 +166,7 @@ All files | 3.18 | 12.24 | 6.38 | 3.18 prettify.js | 0 | 0 | 0 | 0 | 1-2 sorter.js | 0 | 0 | 0 | 0 | 1-210 c8/lib | 0 | 0 | 0 | 0 | - parse-args.js | 0 | 0 | 0 | 0 | 1-229 + parse-args.js | 0 | 0 | 0 | 0 | 1-231 report.js | 0 | 0 | 0 | 0 | 1-542 source-map-from-file.js | 0 | 0 | 0 | 0 | 1-100 c8/lib/commands | 0 | 0 | 0 | 0 | @@ -532,7 +532,7 @@ All files | 3.18 | 12.24 | 6.38 | 3.18 prettify.js | 0 | 0 | 0 | 0 | 1-2 sorter.js | 0 | 0 | 0 | 0 | 1-210 c8/lib | 0 | 0 | 0 | 0 | - parse-args.js | 0 | 0 | 0 | 0 | 1-229 + parse-args.js | 0 | 0 | 0 | 0 | 1-231 report.js | 0 | 0 | 0 | 0 | 1-542 source-map-from-file.js | 0 | 0 | 0 | 0 | 1-100 c8/lib/commands | 0 | 0 | 0 | 0 | diff --git a/test/parse-args.js b/test/parse-args.js index fa2d5267..660ba291 100644 --- a/test/parse-args.js +++ b/test/parse-args.js @@ -6,7 +6,11 @@ const { hideInstrumenterArgs } = require('../lib/parse-args') +const { spawnSync } = require('child_process') +const { mkdtempSync, writeFileSync } = require('fs') +const { tmpdir } = require('os') const { join, resolve } = require('path') +const { version } = require('../package.json') describe('parse-args', () => { describe('hideInstrumenteeArgs', () => { @@ -87,6 +91,27 @@ describe('parse-args', () => { }) }) + describe('--version', () => { + it('prints the c8 package version from a cwd whose package.json differs', () => { + const dir = mkdtempSync(join(tmpdir(), 'c8-version-')) + writeFileSync(join(dir, 'package.json'), JSON.stringify({ + name: 'app', + version: '1.0.0' + })) + const env = { ...process.env } + delete env.NODE_V8_COVERAGE + const result = spawnSync(process.execPath, [require.resolve('../bin/c8'), '--version'], { + cwd: dir, + encoding: 'utf8', + env + }) + result.status.should.equal(0) + result.stdout.trim().should.equal(version) + result.stdout.trim().should.not.equal('1.0.0') + result.stdout.trim().should.not.equal('unknown') + }) + }) + describe('--merge-async', () => { it('should default to false', () => { const argv = buildYargs().parse(['node', 'c8'])