diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index ecbeda78..f2980f62 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -2066,7 +2066,10 @@ getJasmineRequireObj().Env = function(j$) { } function callerCallerFilename() { - return new j$.StackTrace(new Error()).frames[3].file; + const frames = new j$.StackTrace(new Error()).frames; + // frames[3] should always exist except in Jasmine's own tests, which bypass + // the global it/describe layer, but don't crash if it doesn't. + return frames[3] && frames[3].file; } return Env; diff --git a/spec/core/SuiteBuilderSpec.js b/spec/core/SuiteBuilderSpec.js index d625d29b..082d3b38 100644 --- a/spec/core/SuiteBuilderSpec.js +++ b/spec/core/SuiteBuilderSpec.js @@ -195,7 +195,7 @@ describe('SuiteBuilder', function() { duration: null, properties: null, parentSuiteId: null, - filename: undefined, + filename: undefined }); }); diff --git a/src/core/Env.js b/src/core/Env.js index b7ed3e85..3c0e4e74 100644 --- a/src/core/Env.js +++ b/src/core/Env.js @@ -931,7 +931,10 @@ getJasmineRequireObj().Env = function(j$) { } function callerCallerFilename() { - return new j$.StackTrace(new Error()).frames[3].file; + const frames = new j$.StackTrace(new Error()).frames; + // frames[3] should always exist except in Jasmine's own tests, which bypass + // the global it/describe layer, but don't crash if it doesn't. + return frames[3] && frames[3].file; } return Env;