Skip to content

Commit

Permalink
fix broken positional arguments in config; ensure positional args are…
Browse files Browse the repository at this point in the history
… unique; closes #3763

Signed-off-by: Christopher Hiller <boneskull@boneskull.com>
  • Loading branch information
boneskull committed Feb 25, 2019
1 parent 6535965 commit 8bf86b6
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
6 changes: 6 additions & 0 deletions lib/cli/options.js
Expand Up @@ -301,12 +301,15 @@ const loadOptions = (argv = []) => {

if (rcConfig) {
args.config = false;
args._ = args._.concat(rcConfig._ || []);
}
if (pkgConfig) {
args.package = false;
args._ = args._.concat(pkgConfig._ || []);
}
if (optsConfig) {
args.opts = false;
args._ = args._.concat(optsConfig._ || []);
}

args = parse(
Expand All @@ -324,6 +327,9 @@ const loadOptions = (argv = []) => {
delete args.spec;
}

// make unique
args._ = Array.from(new Set(args._));

return args;
};

Expand Down
19 changes: 11 additions & 8 deletions test/node-unit/cli/options.spec.js
Expand Up @@ -165,14 +165,13 @@ describe('options', function() {

describe('when path to mocha.opts (`--opts <path>`) is valid', function() {
let result;

beforeEach(function() {
const filepath = '/path/to/mocha.opts';
readFileSync = sandbox.stub();
// package.json
readFileSync.onFirstCall().throws();
// mocha.opts
readFileSync.onSecondCall().returns('--retries 3');
readFileSync.onSecondCall().returns('--retries 3 foobar.spec.js');
findConfig = sandbox.stub().returns('/some/.mocharc.json');
loadConfig = sandbox.stub().returns({});
findupSync = sandbox.stub().returns('/some/package.json');
Expand All @@ -191,7 +190,7 @@ describe('options', function() {
'to equal',
Object.assign(
{
_: []
_: ['foobar.spec.js']
},
defaults,
{
Expand Down Expand Up @@ -353,7 +352,9 @@ describe('options', function() {
const filepath = '/some/package.json';
readFileSync = sandbox.stub();
// package.json
readFileSync.onFirstCall().returns('{"mocha": {"retries": 3}}');
readFileSync
.onFirstCall()
.returns('{"mocha": {"retries": 3, "_": ["foobar.spec.js"]}}');
// mocha.opts
readFileSync.onSecondCall().throws();
findConfig = sandbox.stub().returns('/some/.mocharc.json');
Expand All @@ -374,7 +375,7 @@ describe('options', function() {
'to equal',
Object.assign(
{
_: []
_: ['foobar.spec.js']
},
defaults,
{
Expand Down Expand Up @@ -443,8 +444,10 @@ describe('options', function() {
readFileSync = sandbox.stub();
readFileSync
.onFirstCall()
.returns('{"mocha": {"check-leaks": true}}');
readFileSync.onSecondCall().returns('--retries 3');
.returns(
'{"mocha": {"check-leaks": true, "_": ["foobar.spec.js"]}}'
);
readFileSync.onSecondCall().returns('--retries 3 foobar.spec.js');
findConfig = sandbox.stub();
loadConfig = sandbox.stub();
findupSync = sandbox.stub().returns('/some/package.json');
Expand All @@ -463,7 +466,7 @@ describe('options', function() {
expect(
result,
'to equal',
Object.assign({_: []}, defaults, {
Object.assign({_: ['foobar.spec.js']}, defaults, {
'check-leaks': true,
config: false,
opts: false,
Expand Down

0 comments on commit 8bf86b6

Please sign in to comment.