diff --git a/README.md b/README.md index 59d798c..250af82 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ module.exports = function(config) { jasmine: { random: true, seed: '4321', - stopOnFailure: true, + oneFailurePerSpec: true, failFast: true, timeoutInterval: 1000 } diff --git a/package-lock.json b/package-lock.json index 48c09c9..af88ba8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4280,9 +4280,9 @@ "optional": true }, "jasmine-core": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.0.0.tgz", - "integrity": "sha1-jNsgzzNrG4aDDtxYsaiqxHRV6Uw=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.3.0.tgz", + "integrity": "sha512-3/xSmG/d35hf80BEN66Y6g9Ca5l/Isdeg/j6zvbTYlTzeKinzmaTM4p9am5kYqOmE05D7s1t8FGjzdSnbUbceA==", "dev": true }, "js-yaml": { diff --git a/package.json b/package.json index 2eaafb5..8b7bb06 100644 --- a/package.json +++ b/package.json @@ -31,13 +31,13 @@ "grunt-karma": "2.x", "grunt-npm": "0.0.2", "karma": "2.x || ", - "jasmine-core": "~3.0.0", + "jasmine-core": "^3.3.0", "karma-chrome-launcher": "1.x || ~0.2.2", "karma-firefox-launcher": "1.x || ~0.1.7", "load-grunt-tasks": "^3.4.1" }, "peerDependencies": { - "jasmine-core": "*", + "jasmine-core": "^3.3.0", "karma": "*" }, "engines": { diff --git a/src/adapter.js b/src/adapter.js index 7fff079..442384c 100644 --- a/src/adapter.js +++ b/src/adapter.js @@ -322,19 +322,26 @@ var KarmaSpecFilter = function (options) { } /** + * Configure jasmine specFilter + * + * This function is invoked from the wrapper. + * @see adapter.wrapper + * * @param {Object} config The karma config * @param {Object} jasmineEnv jasmine environment object */ var createSpecFilter = function (config, jasmineEnv) { - var specFilter = new KarmaSpecFilter({ + var karmaSpecFilter = new KarmaSpecFilter({ filterString: function () { return getGrepOption(config.args) } }) - jasmineEnv.specFilter = function (spec) { - return specFilter.matches(spec.getFullName()) + var specFilter = function (spec) { + return karmaSpecFilter.matches(spec.getFullName()) } + + jasmineEnv.configure({ specFilter: specFilter }) } /** @@ -355,10 +362,7 @@ function createStartFn (karma, jasmineEnv) { jasmineEnv = jasmineEnv || window.jasmine.getEnv() - setOption(jasmineConfig.stopOnFailure, jasmineEnv.throwOnExpectationFailure) - setOption(jasmineConfig.failFast, jasmineEnv.stopOnSpecFailure) - setOption(jasmineConfig.seed, jasmineEnv.seed) - setOption(jasmineConfig.random, jasmineEnv.randomizeTests) + jasmineEnv.configure(jasmineConfig) window.jasmine.DEFAULT_TIMEOUT_INTERVAL = jasmineConfig.timeoutInterval || window.jasmine.DEFAULT_TIMEOUT_INTERVAL @@ -366,12 +370,6 @@ function createStartFn (karma, jasmineEnv) { jasmineEnv.addReporter(new KarmaReporter(karma, jasmineEnv)) jasmineEnv.execute() } - - function setOption (option, set) { - if (option != null && typeof set === 'function') { - set(option) - } - } } function indexOf (collection, find, i /* opt*/) { diff --git a/test/adapter.spec.js b/test/adapter.spec.js index 187b88b..e9e8c5a 100644 --- a/test/adapter.spec.js +++ b/test/adapter.spec.js @@ -366,42 +366,14 @@ describe('jasmine adapter', function () { jasmineEnv = new jasmine.Env() }) - it('should set random order', function () { - jasmineConfig.random = true - spyOn(jasmineEnv, 'randomizeTests') + it('should pass jasmineConfig directly to jasmine.configure', function () { + var configure = spyOn(jasmineEnv, 'configure') - createStartFn(tc, jasmineEnv)() - - expect(jasmineEnv.randomizeTests).toHaveBeenCalledWith(true) - }) - - it('should set order seed', function () { - var seed = '4321' - - jasmineConfig.seed = seed - spyOn(jasmineEnv, 'seed') + jasmineConfig.foo = 42 createStartFn(tc, jasmineEnv)() - expect(jasmineEnv.seed).toHaveBeenCalledWith(seed) - }) - - it('should set stopOnFailure', function () { - jasmineConfig.stopOnFailure = true - spyOn(jasmineEnv, 'throwOnExpectationFailure') - - createStartFn(tc, jasmineEnv)() - - expect(jasmineEnv.throwOnExpectationFailure).toHaveBeenCalledWith(true) - }) - - it('should set failFast', function () { - jasmineConfig.failFast = true - spyOn(jasmineEnv, 'stopOnSpecFailure') - - createStartFn(tc, jasmineEnv)() - - expect(jasmineEnv.stopOnSpecFailure).toHaveBeenCalledWith(true) + expect(configure).toHaveBeenCalledWith(jasmineConfig) }) it('should change timeoutInterval', function () { @@ -416,29 +388,6 @@ describe('jasmine adapter', function () { jasmine.DEFAULT_TIMEOUT_INTERVAL = previousTimeoutInterval }) - it('should not set random order if client does not pass it', function () { - spyOn(jasmineEnv, 'randomizeTests') - - createStartFn(tc, jasmineEnv)() - - expect(jasmineEnv.randomizeTests).not.toHaveBeenCalled() - }) - - it('should not fail with failFast if the jasmineEnv does not support it', function () { - jasmineConfig.failFast = true - jasmineEnv.stopOnSpecFailure = null - - expect(function () { - createStartFn(tc, jasmineEnv)() - }).not.toThrowError() - }) - - it('should not change timeoutInterval if client does not pass it', function () { - createStartFn(tc, jasmineEnv)() - - expect(jasmine.DEFAULT_TIMEOUT_INTERVAL).toBe(jasmine.DEFAULT_TIMEOUT_INTERVAL) - }) - it('should not fail if client does not set config', function () { tc.config = null @@ -601,18 +550,31 @@ describe('jasmine adapter', function () { }) describe('createSpecFilter', function () { + var jasmineEnv + + beforeEach(function () { + jasmineEnv = new jasmine.Env() + }) + it('should create spec filter in jasmine', function () { - var jasmineEnvMock = {} var karmaConfMock = { args: ['--grep', 'test'] } - var specMock = { - getFullName: jasmine.createSpy('getFullName').and.returnValue('test') - } - createSpecFilter(karmaConfMock, jasmineEnvMock) + createSpecFilter(karmaConfMock, jasmineEnv) + + var specFilter = jasmineEnv.configuration().specFilter + + // Jasmine's default specFilter **always** returns true + // so test multiple possibilities + + expect(specFilter({ + getFullName: jasmine.createSpy('getFullName').and.returnValue('test') + })).toEqual(true) - expect(jasmineEnvMock.specFilter(specMock)).toEqual(true) + expect(specFilter({ + getFullName: jasmine.createSpy('getFullName2').and.returnValue('foo') + })).toEqual(false) }) }) })