Skip to content

Commit

Permalink
Increase code quality by increasing code coverage: lib/parse-args.js
Browse files Browse the repository at this point in the history
refactor: bumping code coverage to 100% for lib/parse-args.js. (#447)
test: Adding a test case for NODE_V8_COVERAGE and changing the describe block title. (#447)
test: Early exit branch test for hideInstrumenteeArgs function. (#447)
test: Adding test for relative paths for relative report directory cli option. (#447)
test: Adding test case for relative paths for temporary directory cli option. (#447)
test: Adding test for passing node.js arguments to c8. (#447)
  • Loading branch information
mcknasty committed Jan 20, 2024
1 parent bf3073b commit 2c5f1b2
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 10 deletions.
18 changes: 10 additions & 8 deletions lib/parse-args.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ function buildYargs (withCommands = false) {
alias: ['o', 'report-dir'],
group: 'Reporting options',
describe: 'directory where coverage reports will be output to',
default: './coverage'
default: './coverage',
type: 'string'
})
.options('all', {
default: false,
Expand Down Expand Up @@ -126,7 +127,8 @@ function buildYargs (withCommands = false) {
})
.option('temp-directory', {
describe: 'directory V8 coverage data is written to and read from',
default: process.env.NODE_V8_COVERAGE
default: process.env.NODE_V8_COVERAGE,
type: 'string'
})
.option('clean', {
default: true,
Expand Down Expand Up @@ -207,12 +209,12 @@ function hideInstrumenteeArgs () {
let argv = process.argv.slice(2)
const yargv = parser(argv)

if (!yargv._.length) return argv

// drop all the arguments after the bin being
// instrumented by c8.
argv = argv.slice(0, argv.indexOf(yargv._[0]))
argv.push(yargv._[0])
if (yargv._.length !== 0) {
// drop all the arguments after the bin being
// instrumented by c8.
argv = argv.slice(0, argv.indexOf(yargv._[0]))
argv.push(yargv._[0])
}

return argv
}
Expand Down
4 changes: 2 additions & 2 deletions test/integration.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ All files | 3.52 | 12.5 | 6.52 | 3.52
prettify.js | 0 | 0 | 0 | 0 | 1-2
sorter.js | 0 | 0 | 0 | 0 | 1-196
c8/lib | 0 | 0 | 0 | 0 |
parse-args.js | 0 | 0 | 0 | 0 | 1-224
parse-args.js | 0 | 0 | 0 | 0 | 1-226
report.js | 0 | 0 | 0 | 0 | 1-402
source-map-from-file.js | 0 | 0 | 0 | 0 | 1-100
c8/lib/commands | 0 | 0 | 0 | 0 |
Expand Down Expand Up @@ -531,7 +531,7 @@ All files | 3.52 | 12.5 | 6.52 | 3.52
prettify.js | 0 | 0 | 0 | 0 | 1-2
sorter.js | 0 | 0 | 0 | 0 | 1-196
c8/lib | 0 | 0 | 0 | 0 |
parse-args.js | 0 | 0 | 0 | 0 | 1-224
parse-args.js | 0 | 0 | 0 | 0 | 1-226
report.js | 0 | 0 | 0 | 0 | 1-402
source-map-from-file.js | 0 | 0 | 0 | 0 | 1-100
c8/lib/commands | 0 | 0 | 0 | 0 |
Expand Down
24 changes: 24 additions & 0 deletions test/parse-args.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ describe('parse-args', () => {
const instrumenterArgs = hideInstrumenteeArgs()
instrumenterArgs.should.eql(['--foo=99', 'my-app'])
})
it('test early exit from function if no arguments are passed', () => {
process.argv = []
const instrumenterArgs = hideInstrumenteeArgs()
instrumenterArgs.length.should.eql(0)
})
})

describe('hideInstrumenterArgs', () => {
Expand All @@ -25,6 +30,13 @@ describe('parse-args', () => {
instrumenteeArgs.should.eql(['my-app', '--help'])
argv.tempDirectory.endsWith(join('coverage', 'tmp')).should.be.equal(true)
})
it('interprets first args after -- as Node.js execArgv', () => {
const expected = [process.execPath, '--expose-gc', 'index.js']
process.argv = ['node', 'c8', '--', '--expose-gc', 'index.js']
const argv = buildYargs().parse(hideInstrumenteeArgs())
const munged = hideInstrumenterArgs(argv)
munged.should.deep.equal(expected)
})
})

describe('with NODE_V8_COVERAGE already set', () => {
Expand All @@ -34,8 +46,20 @@ describe('parse-args', () => {
process.argv = ['node', 'c8', '--foo=99', 'my-app', '--help']
const argv = buildYargs().parse(hideInstrumenteeArgs())
argv.tempDirectory.endsWith('/coverage/tmp_').should.be.equal(true)
delete process.env.NODE_V8_COVERAGE
process.env.NODE_V8_COVERAGE = NODE_V8_COVERAGE
})
/** Commenting out till the print config PR is ready * /
it('should set it if undefined', () => {
const NODE_V8_COVERAGE = process.env.NODE_V8_COVERAGE
process.env.NODE_V8_COVERAGE = undefined
process.argv = ['node', 'c8', '--foo=99', 'my-app', '--help']
const argv = buildYargs().parse(hideInstrumenteeArgs())
argv.tempDirectory.endsWith('/coverage/tmp').should.be.equal(true)
delete process.env.NODE_V8_COVERAGE
process.env.NODE_V8_COVERAGE = NODE_V8_COVERAGE
})
/** */
})

describe('--config', () => {
Expand Down

0 comments on commit 2c5f1b2

Please sign in to comment.