Don't mutate suite's failedExpectations from env

This commit is contained in:
Steve Gravrock
2025-10-05 05:57:56 -07:00
parent bca56032e0
commit 2a83f5cc30
4 changed files with 21 additions and 7 deletions

View File

@@ -1252,7 +1252,7 @@ getJasmineRequireObj().Env = function(j$) {
if (!envOptions.suppressLoadErrors) {
installGlobalErrors();
globalErrors.pushListener(function loadtimeErrorHandler(error) {
topSuite.result.failedExpectations.push({
topSuite.addExpectationResult(false, {
passed: false,
globalErrorType: 'load',
message: error.message,
@@ -2597,6 +2597,13 @@ getJasmineRequireObj().buildExpectationResult = function(j$) {
globalErrorType: options.globalErrorType
};
if (options.filename !== undefined) {
result.filename = options.filename;
}
if (options.lineno !== undefined) {
result.lineno = options.lineno;
}
if (!result.passed) {
if (options.error && !j$.private.isString(options.error)) {
if ('code' in options.error) {

View File

@@ -53,17 +53,17 @@ describe('Global error handling (integration)', function() {
passed: false,
globalErrorType: 'load',
message: 'Uncaught SyntaxError: Unexpected end of input',
stack: '@borkenSpec.js:42',
filename: 'borkenSpec.js',
lineno: 42
lineno: 42,
matcherName: undefined,
stack: jasmine.any(String)
},
{
passed: false,
globalErrorType: 'load',
message: 'ENOCHEESE',
stack: error.stack,
filename: undefined,
lineno: undefined
matcherName: undefined,
stack: jasmine.any(String)
}
]);
});

View File

@@ -68,7 +68,7 @@ getJasmineRequireObj().Env = function(j$) {
if (!envOptions.suppressLoadErrors) {
installGlobalErrors();
globalErrors.pushListener(function loadtimeErrorHandler(error) {
topSuite.result.failedExpectations.push({
topSuite.addExpectationResult(false, {
passed: false,
globalErrorType: 'load',
message: error.message,

View File

@@ -23,6 +23,13 @@ getJasmineRequireObj().buildExpectationResult = function(j$) {
globalErrorType: options.globalErrorType
};
if (options.filename !== undefined) {
result.filename = options.filename;
}
if (options.lineno !== undefined) {
result.lineno = options.lineno;
}
if (!result.passed) {
if (options.error && !j$.private.isString(options.error)) {
if ('code' in options.error) {