Removed duplicate message from errors (incl. matcher failures) on V8
This commit is contained in:
@@ -3843,7 +3843,7 @@ getJasmineRequireObj().ExceptionFormatter = function(j$) {
|
|||||||
return message;
|
return message;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.stack = function(error) {
|
this.stack = function(error, { omitMessage } = {}) {
|
||||||
if (!error || !error.stack) {
|
if (!error || !error.stack) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -3852,7 +3852,7 @@ getJasmineRequireObj().ExceptionFormatter = function(j$) {
|
|||||||
var lines = filterJasmine(stackTrace);
|
var lines = filterJasmine(stackTrace);
|
||||||
var result = '';
|
var result = '';
|
||||||
|
|
||||||
if (stackTrace.message) {
|
if (stackTrace.message && !omitMessage) {
|
||||||
lines.unshift(stackTrace.message);
|
lines.unshift(stackTrace.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4302,7 +4302,9 @@ getJasmineRequireObj().buildExpectationResult = function(j$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return stackFormatter(error);
|
// Omit the message from the stack trace because it will be
|
||||||
|
// included elsewhere.
|
||||||
|
return stackFormatter(error, { omitMessage: true });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -225,5 +225,61 @@ describe('ExceptionFormatter', function() {
|
|||||||
|
|
||||||
expect(result).toMatch(/error properties:.*someProperty.*hello there/);
|
expect(result).toMatch(/error properties:.*someProperty.*hello there/);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('When omitMessage is true', function() {
|
||||||
|
it('filters the message from V8-style stack traces', function() {
|
||||||
|
const error = {
|
||||||
|
message: 'nope',
|
||||||
|
stack:
|
||||||
|
'Error: nope\n' +
|
||||||
|
' at fn1 (http://localhost:8888/__spec__/core/UtilSpec.js:115:19)\n' +
|
||||||
|
' at fn2 (http://localhost:8888/__jasmine__/jasmine.js:4320:20)\n' +
|
||||||
|
' at fn3 (http://localhost:8888/__jasmine__/jasmine.js:4320:20)\n' +
|
||||||
|
' at fn4 (http://localhost:8888/__spec__/core/UtilSpec.js:110:19)\n'
|
||||||
|
};
|
||||||
|
const subject = new jasmineUnderTest.ExceptionFormatter({
|
||||||
|
jasmineFile: 'http://localhost:8888/__jasmine__/jasmine.js'
|
||||||
|
});
|
||||||
|
const result = subject.stack(error, { omitMessage: true });
|
||||||
|
expect(result).toEqual(
|
||||||
|
' at fn1 (http://localhost:8888/__spec__/core/UtilSpec.js:115:19)\n' +
|
||||||
|
' at <Jasmine>\n' +
|
||||||
|
' at fn4 (http://localhost:8888/__spec__/core/UtilSpec.js:110:19)'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles Webkit style traces that do not include a message', function() {
|
||||||
|
const error = {
|
||||||
|
stack:
|
||||||
|
'http://localhost:8888/__spec__/core/UtilSpec.js:115:28\n' +
|
||||||
|
'fn1@http://localhost:8888/__jasmine__/jasmine.js:4320:27\n' +
|
||||||
|
'fn2@http://localhost:8888/__jasmine__/jasmine.js:4320:27\n' +
|
||||||
|
'http://localhost:8888/__spec__/core/UtilSpec.js:115:28'
|
||||||
|
};
|
||||||
|
const subject = new jasmineUnderTest.ExceptionFormatter({
|
||||||
|
jasmineFile: 'http://localhost:8888/__jasmine__/jasmine.js'
|
||||||
|
});
|
||||||
|
const result = subject.stack(error, { omitMessage: true });
|
||||||
|
expect(result).toEqual(
|
||||||
|
'http://localhost:8888/__spec__/core/UtilSpec.js:115:28\n' +
|
||||||
|
'<Jasmine>\n' +
|
||||||
|
'http://localhost:8888/__spec__/core/UtilSpec.js:115:28'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('ensures that stack traces do not include the message in this environment', function() {
|
||||||
|
let error;
|
||||||
|
try {
|
||||||
|
throw new Error('an error');
|
||||||
|
} catch (e) {
|
||||||
|
error = e;
|
||||||
|
}
|
||||||
|
const subject = new jasmineUnderTest.ExceptionFormatter({
|
||||||
|
jasmineFile: jasmine.util.jasmineFile()
|
||||||
|
});
|
||||||
|
const result = subject.stack(error, { omitMessage: true });
|
||||||
|
expect(result).not.toContain('an error');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -50,7 +50,9 @@ describe('buildExpectationResult', function() {
|
|||||||
stackFormatter: stackFormatter
|
stackFormatter: stackFormatter
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(stackFormatter).toHaveBeenCalledWith(fakeError);
|
expect(stackFormatter).toHaveBeenCalledWith(fakeError, {
|
||||||
|
omitMessage: true
|
||||||
|
});
|
||||||
expect(result.stack).toEqual('foo');
|
expect(result.stack).toEqual('foo');
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -66,7 +68,9 @@ describe('buildExpectationResult', function() {
|
|||||||
stackFormatter: stackFormatter
|
stackFormatter: stackFormatter
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(stackFormatter).toHaveBeenCalledWith(fakeError);
|
expect(stackFormatter).toHaveBeenCalledWith(fakeError, {
|
||||||
|
omitMessage: true
|
||||||
|
});
|
||||||
expect(result.stack).toEqual('foo');
|
expect(result.stack).toEqual('foo');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -2839,7 +2839,7 @@ describe('Env integration', function() {
|
|||||||
expect(result.deprecationWarnings).toEqual([
|
expect(result.deprecationWarnings).toEqual([
|
||||||
jasmine.objectContaining({
|
jasmine.objectContaining({
|
||||||
message: topLevelError.message,
|
message: topLevelError.message,
|
||||||
stack: exceptionFormatter.stack(topLevelError)
|
stack: exceptionFormatter.stack(topLevelError, { omitMessage: true })
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -2849,7 +2849,9 @@ describe('Env integration', function() {
|
|||||||
deprecationWarnings: [
|
deprecationWarnings: [
|
||||||
jasmine.objectContaining({
|
jasmine.objectContaining({
|
||||||
message: suiteLevelError.message,
|
message: suiteLevelError.message,
|
||||||
stack: exceptionFormatter.stack(suiteLevelError)
|
stack: exceptionFormatter.stack(suiteLevelError, {
|
||||||
|
omitMessage: true
|
||||||
|
})
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
@@ -2861,7 +2863,9 @@ describe('Env integration', function() {
|
|||||||
deprecationWarnings: [
|
deprecationWarnings: [
|
||||||
jasmine.objectContaining({
|
jasmine.objectContaining({
|
||||||
message: specLevelError.message,
|
message: specLevelError.message,
|
||||||
stack: exceptionFormatter.stack(specLevelError)
|
stack: exceptionFormatter.stack(specLevelError, {
|
||||||
|
omitMessage: true
|
||||||
|
})
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ getJasmineRequireObj().ExceptionFormatter = function(j$) {
|
|||||||
return message;
|
return message;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.stack = function(error) {
|
this.stack = function(error, { omitMessage } = {}) {
|
||||||
if (!error || !error.stack) {
|
if (!error || !error.stack) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -47,7 +47,7 @@ getJasmineRequireObj().ExceptionFormatter = function(j$) {
|
|||||||
var lines = filterJasmine(stackTrace);
|
var lines = filterJasmine(stackTrace);
|
||||||
var result = '';
|
var result = '';
|
||||||
|
|
||||||
if (stackTrace.message) {
|
if (stackTrace.message && !omitMessage) {
|
||||||
lines.unshift(stackTrace.message);
|
lines.unshift(stackTrace.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,9 @@ getJasmineRequireObj().buildExpectationResult = function(j$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return stackFormatter(error);
|
// Omit the message from the stack trace because it will be
|
||||||
|
// included elsewhere.
|
||||||
|
return stackFormatter(error, { omitMessage: true });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user