diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index d05ae562..eb9b54dc 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -1081,7 +1081,10 @@ getJasmineRequireObj().Env = function(j$) { config.hideDisabled = configuration.hideDisabled; } - if (configuration.hasOwnProperty('Promise')) { + // Don't use hasOwnProperty to check for Promise existence because Promise + // can be initialized to undefined, either explicitly or by using the + // object returned from Env#configuration. In particular, Karma does this. + if (configuration.Promise) { if ( typeof configuration.Promise.resolve === 'function' && typeof configuration.Promise.reject === 'function' diff --git a/spec/core/EnvSpec.js b/spec/core/EnvSpec.js index 72c8d979..aa87a997 100644 --- a/spec/core/EnvSpec.js +++ b/spec/core/EnvSpec.js @@ -28,6 +28,10 @@ describe('Env', function() { }); }); + it('accepts its own current configureation', function() { + env.configure(env.configuration()); + }); + it('can configure specs to throw errors on expectation failures', function() { env.configure({ oneFailurePerSpec: true }); @@ -53,6 +57,11 @@ describe('Env', function() { }); describe('promise library', function() { + it('can be configured without a custom library', function() { + env.configure({}); + env.configure({ Promise: undefined }); + }); + it('can be configured with a custom library', function() { var myLibrary = { resolve: jasmine.createSpy(), diff --git a/src/core/Env.js b/src/core/Env.js index 43e4a8e7..d769d1c4 100644 --- a/src/core/Env.js +++ b/src/core/Env.js @@ -175,7 +175,10 @@ getJasmineRequireObj().Env = function(j$) { config.hideDisabled = configuration.hideDisabled; } - if (configuration.hasOwnProperty('Promise')) { + // Don't use hasOwnProperty to check for Promise existence because Promise + // can be initialized to undefined, either explicitly or by using the + // object returned from Env#configuration. In particular, Karma does this. + if (configuration.Promise) { if ( typeof configuration.Promise.resolve === 'function' && typeof configuration.Promise.reject === 'function'