Skip to content

Commit

Permalink
fix(runner): Do not persist grep option across runs
Browse files Browse the repository at this point in the history
  • Loading branch information
jvalkeejarvi authored and Juuso Valkeejärvi committed Aug 30, 2018
1 parent eeadcf2 commit c3ce1f3
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 5 deletions.
6 changes: 6 additions & 0 deletions lib/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -169,3 +169,9 @@ exports.defer = () => {
promise: promise
}
}

exports.saveOriginalArgs = (config) => {
if (config && config.client) {
config.client.originalArgs = _.cloneDeep(config.client.args)
}
}
6 changes: 6 additions & 0 deletions lib/middleware/runner.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,20 @@ function createRunnerMiddleware (emitter, fileList, capturedBrowsers, reporter,
})
})

if (config.client.originalArgs) {
config.client.args = config.client.originalArgs
config.client.originalArgs = null
}
if (_.isEmpty(data.args)) {
log.debug('Ignoring empty client.args from run command')
} else if ((_.isArray(data.args) && _.isArray(config.client.args)) ||
(_.isPlainObject(data.args) && _.isPlainObject(config.client.args))) {
log.debug('Merging client.args with ', data.args)
helper.saveOriginalArgs(config)
config.client.args = _.merge(config.client.args, data.args)
} else {
log.warn('Replacing client.args with ', data.args, ' as their types do not match.')
helper.saveOriginalArgs(config)
config.client.args = data.args
}

Expand Down
14 changes: 14 additions & 0 deletions test/unit/helper.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -309,4 +309,18 @@ describe('helper', () => {
helper.mmPatternWeight('{**,*}').should.be.deep.equal([2, 1, 0, 0, 0, 0])
})
})

describe('saveOriginalArgs', () => {
it('should clone config args', () => {
var config = {
client: {
args: ['--somearg']
}
}
expect(config.client.originalArgs).to.not.exist
helper.saveOriginalArgs(config)
config.client.args.should.be.deep.equal(['--somearg'])
config.client.originalArgs.should.be.deep.equal(['--somearg'])
})
})
})
29 changes: 24 additions & 5 deletions test/unit/middleware/runner.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -167,19 +167,22 @@ describe('middleware.runner', () => {
desc: 'should overwrite empty array client.args when run passes an array for client.args',
expected: ['user_arg1'],
rawMessage: '{"args": ["user_arg1"]}',
existingConfig: []
existingConfig: [],
expectedOriginalArgs: []
},
{
desc: 'should overwrite empty array client.args when run passes an object for client.args',
expected: {arg2: 'figs', arg3: 'chocolates'},
rawMessage: '{"args": {"arg2": "figs", "arg3": "chocolates"}}',
existingConfig: []
existingConfig: [],
expectedOriginalArgs: []
},
{
desc: 'should overwrite empty object client.args when run passes an array for client.args',
expected: ['user_arg'],
rawMessage: '{"args": ["user_arg"]}',
existingConfig: {}
existingConfig: {},
expectedOriginalArgs: {}
},
{
desc: 'should not overwrite existing array client.args when run passes an empty array for client.args',
Expand All @@ -203,13 +206,23 @@ describe('middleware.runner', () => {
desc: 'should merge existing client.args with client.args passed by run',
expected: {arg1: 'cherry', arg2: 'fig', arg3: 'chocolate'},
rawMessage: '{"args": {"arg2": "fig", "arg3": "chocolate"}}',
existingConfig: {arg1: 'cherry', arg2: 'mango'}
existingConfig: {arg1: 'cherry', arg2: 'mango'},
expectedOriginalArgs: {arg1: 'cherry', arg2: 'mango'}
},
{
desc: 'should merge empty client.args with client.args passed by run',
expected: {arg2: 'fig', arg3: 'chocolate'},
rawMessage: '{"args": {"arg2": "fig", "arg3": "chocolate"}}',
existingConfig: {}
existingConfig: {},
expectedOriginalArgs: {}
},
{
desc: 'should not persist client.args passed by user from previous run',
expected: [],
rawMessage: '{"args": []}',
existingConfig: ['--somearg'],
expectedOriginalArgs: null,
originalArgs: []
}
]

Expand All @@ -220,10 +233,16 @@ describe('middleware.runner', () => {
sinon.stub(capturedBrowsers, 'areAllReady').callsFake(() => true)
if (run.existingConfig) {
config = _.merge(config, {client: {args: run.existingConfig}})
if (run.originalArgs) {
config = _.merge(config, {client: {originalArgs: run.originalArgs}})
}
}

emitter.once('run_start', () => {
expect(config.client.args).to.deep.equal(run.expected)
if (run.expectedOriginalArgs) {
expect(config.client.originalArgs).to.deep.equal(run.expectedOriginalArgs)
}
done()
})

Expand Down

0 comments on commit c3ce1f3

Please sign in to comment.