From 7a9c2590d6f8026c68ac53f12aa6ed3f16dd5bef Mon Sep 17 00:00:00 2001 From: Anton Backer Date: Wed, 4 Oct 2017 17:08:46 -0700 Subject: [PATCH 1/7] Compare ignoreErrors pattern to error message --- src/raven.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/raven.js b/src/raven.js index 5f79ebcb0ac9..3fe12a46bd7d 100644 --- a/src/raven.js +++ b/src/raven.js @@ -1423,8 +1423,9 @@ Raven.prototype = { var testString = (type || '') + ': ' + (message || ''); if ( - !!this._globalOptions.ignoreErrors.test && - this._globalOptions.ignoreErrors.test(testString) + !!this._globalOptions.ignoreErrors.test && ( + this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(testString)) ) return; From c90dd1e11792950959a6ed7a486cfb0b634100c3 Mon Sep 17 00:00:00 2001 From: Anton Backer Date: Thu, 5 Oct 2017 19:23:33 -0700 Subject: [PATCH 2/7] Don't prepend a blank type to testString --- src/raven.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/raven.js b/src/raven.js index 3fe12a46bd7d..83db5a5d8c31 100644 --- a/src/raven.js +++ b/src/raven.js @@ -1420,7 +1420,7 @@ Raven.prototype = { }, _processException: function(type, message, fileurl, lineno, frames, options) { - var testString = (type || '') + ': ' + (message || ''); + var testString = (type ? type + ': ' : '') + (message || ''); if ( !!this._globalOptions.ignoreErrors.test && ( From 5b5689c92ed2bfdad38862bfdf9fe2ed58e4fbad Mon Sep 17 00:00:00 2001 From: Anton Backer Date: Fri, 6 Oct 2017 14:49:29 -0700 Subject: [PATCH 3/7] Add unit tests --- src/raven.js | 16 ++++++++-------- test/raven.test.js | 18 +++++++++++++++--- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/raven.js b/src/raven.js index 83db5a5d8c31..84b399936798 100644 --- a/src/raven.js +++ b/src/raven.js @@ -1420,14 +1420,14 @@ Raven.prototype = { }, _processException: function(type, message, fileurl, lineno, frames, options) { - var testString = (type ? type + ': ' : '') + (message || ''); - - if ( - !!this._globalOptions.ignoreErrors.test && ( - this._globalOptions.ignoreErrors.test(message) || - this._globalOptions.ignoreErrors.test(testString)) - ) - return; + if (!!this._globalOptions.ignoreErrors.test) { + var testStrings = [message, type ? type + ': ' + (message || '') : '']; + for (var ix in testStrings) { + if (testStrings[ix] && this._globalOptions.ignoreErrors.test(testStrings[ix])) { + return; + } + } + } var stacktrace; diff --git a/test/raven.test.js b/test/raven.test.js index 01d9ea29cf57..8f5123a70b3e 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -477,13 +477,25 @@ describe('globals', function() { describe('processException', function() { it('should respect `ignoreErrors`', function() { this.sinon.stub(Raven, '_send'); - - Raven._globalOptions.ignoreErrors = joinRegExp(['e1', 'e2', 'CustomError']); + Raven._globalOptions.ignoreErrors = joinRegExp([ + 'CustomError1: e1', + 'e1', + 'e2', + 'CustomError2', + /^CustomError1: e1$/, + /^e1$/, + /^e2$/, + /^CustomError2/ + ]); Raven._processException('Error', 'e1', 'http://example.com', []); assert.isFalse(Raven._send.called); Raven._processException('Error', 'e2', 'http://example.com', []); assert.isFalse(Raven._send.called); - Raven._processException('CustomError', 'e3', 'http://example.com', []); + Raven._processException('CustomError1', 'e1', 'http://example.com', []); + assert.isFalse(Raven._send.called); + Raven._processException('CustomError2', 'error', 'http://example.com', []); + assert.isFalse(Raven._send.called); + Raven._processException(undefined, 'e1', 'http://example.com', []); assert.isFalse(Raven._send.called); Raven._processException('Error', 'error', 'http://example.com', []); assert.isTrue(Raven._send.calledOnce); From 6acaf22a5b5fffb1d43379b1e2da718e9524a637 Mon Sep 17 00:00:00 2001 From: Anton Backer Date: Fri, 6 Oct 2017 15:06:46 -0700 Subject: [PATCH 4/7] Clean up unit test --- src/raven.js | 2 +- test/raven.test.js | 36 +++++++++++++++++++++++------------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/raven.js b/src/raven.js index 84b399936798..fd51054e61c1 100644 --- a/src/raven.js +++ b/src/raven.js @@ -1422,7 +1422,7 @@ Raven.prototype = { _processException: function(type, message, fileurl, lineno, frames, options) { if (!!this._globalOptions.ignoreErrors.test) { var testStrings = [message, type ? type + ': ' + (message || '') : '']; - for (var ix in testStrings) { + for (var ix = 0, len = testStrings.length; ix < len; ix++) { if (testStrings[ix] && this._globalOptions.ignoreErrors.test(testStrings[ix])) { return; } diff --git a/test/raven.test.js b/test/raven.test.js index 8f5123a70b3e..6da9e6a9236c 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -478,27 +478,37 @@ describe('globals', function() { it('should respect `ignoreErrors`', function() { this.sinon.stub(Raven, '_send'); Raven._globalOptions.ignoreErrors = joinRegExp([ - 'CustomError1: e1', - 'e1', - 'e2', - 'CustomError2', - /^CustomError1: e1$/, - /^e1$/, - /^e2$/, - /^CustomError2/ + 'msg1', + 'CustomError1', + 'CustomError2: msg2', + /^msg3/, + /^RegexError1/, + /^RegexError2: msg4/ ]); - Raven._processException('Error', 'e1', 'http://example.com', []); + Raven._processException('Error', 'msg1', 'http://example.com', []); assert.isFalse(Raven._send.called); - Raven._processException('Error', 'e2', 'http://example.com', []); + Raven._processException(undefined, 'msg1', 'http://example.com', []); assert.isFalse(Raven._send.called); - Raven._processException('CustomError1', 'e1', 'http://example.com', []); + Raven._processException('CustomError1', 'error', 'http://example.com', []); assert.isFalse(Raven._send.called); - Raven._processException('CustomError2', 'error', 'http://example.com', []); + Raven._processException('CustomError2', 'msg2', 'http://example.com', []); + assert.isFalse(Raven._send.called); + + Raven._processException('Error', 'msg3', 'http://example.com', []); assert.isFalse(Raven._send.called); - Raven._processException(undefined, 'e1', 'http://example.com', []); + Raven._processException(undefined, 'msg3', 'http://example.com', []); assert.isFalse(Raven._send.called); + Raven._processException('RegexError1', 'error', 'http://example.com', []); + assert.isFalse(Raven._send.called); + Raven._processException('RegexError2', 'msg4', 'http://example.com', []); + assert.isFalse(Raven._send.called); + Raven._processException('Error', 'error', 'http://example.com', []); assert.isTrue(Raven._send.calledOnce); + Raven._processException('CustomError2', 'error', 'http://example.com', []); + assert.isTrue(Raven._send.calledTwice); + Raven._processException('RegexError2', 'error', 'http://example.com', []); + assert.isTrue(Raven._send.calledThrice); }); it('should handle empty `ignoreErrors`', function() { From ce3ce083a1e58df8cfbd2539faf62ecd325f3c8a Mon Sep 17 00:00:00 2001 From: Anton Backer Date: Fri, 6 Oct 2017 15:11:32 -0700 Subject: [PATCH 5/7] Remove the loop --- src/raven.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/raven.js b/src/raven.js index fd51054e61c1..5d823d7f4ff7 100644 --- a/src/raven.js +++ b/src/raven.js @@ -1421,11 +1421,13 @@ Raven.prototype = { _processException: function(type, message, fileurl, lineno, frames, options) { if (!!this._globalOptions.ignoreErrors.test) { - var testStrings = [message, type ? type + ': ' + (message || '') : '']; - for (var ix = 0, len = testStrings.length; ix < len; ix++) { - if (testStrings[ix] && this._globalOptions.ignoreErrors.test(testStrings[ix])) { - return; - } + if (this._globalOptions.ignoreErrors.test(message)) { + return; + } else if ( + type && + this._globalOptions.ignoreErrors.test(type + ': ' + (message || '')) + ) { + return; } } From c933d1a985665d25377006b9ac4ef048f1c52e72 Mon Sep 17 00:00:00 2001 From: Anton Backer Date: Fri, 6 Oct 2017 15:13:15 -0700 Subject: [PATCH 6/7] Combine the if and the else-if --- src/raven.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/raven.js b/src/raven.js index 5d823d7f4ff7..74010256d0a6 100644 --- a/src/raven.js +++ b/src/raven.js @@ -1421,11 +1421,9 @@ Raven.prototype = { _processException: function(type, message, fileurl, lineno, frames, options) { if (!!this._globalOptions.ignoreErrors.test) { - if (this._globalOptions.ignoreErrors.test(message)) { - return; - } else if ( - type && - this._globalOptions.ignoreErrors.test(type + ': ' + (message || '')) + if ( + this._globalOptions.ignoreErrors.test(message) || + (type && this._globalOptions.ignoreErrors.test(type + ': ' + (message || ''))) ) { return; } From 78e2e776dd1336dacfa4b6bcea1c6bed7cbe28ac Mon Sep 17 00:00:00 2001 From: Anton Backer Date: Mon, 9 Oct 2017 10:58:52 -0700 Subject: [PATCH 7/7] Simplify --- src/raven.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/raven.js b/src/raven.js index 74010256d0a6..aea46a649e7c 100644 --- a/src/raven.js +++ b/src/raven.js @@ -1420,13 +1420,13 @@ Raven.prototype = { }, _processException: function(type, message, fileurl, lineno, frames, options) { - if (!!this._globalOptions.ignoreErrors.test) { - if ( - this._globalOptions.ignoreErrors.test(message) || - (type && this._globalOptions.ignoreErrors.test(type + ': ' + (message || ''))) - ) { - return; - } + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } var stacktrace;