From 8b6821690cdee982b439369115d80b2857e7d5c9 Mon Sep 17 00:00:00 2001 From: Dan Rumney Date: Thu, 28 Aug 2014 15:49:35 -0500 Subject: [PATCH 1/4] Adding getGlobalOptions to the Raven object, so that options can be passed to plugins --- src/raven.js | 15 +++++++++++++++ test/raven.test.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/raven.js b/src/raven.js index 32570b8aa1a6..cfa2c2a6a5f6 100644 --- a/src/raven.js +++ b/src/raven.js @@ -133,6 +133,21 @@ var Raven = { return Raven; }, + /* + * Get a copy of the global options. + * + * This allows plugins to be configurable by reading options from Raven + * + * @return Copy of Raven's global options. If JSON is not supported, returns null + */ + + + getGlobalOptions: function() { + if (!hasJSON) return null; + + return isSetup() ? JSON.parse(JSON.stringify(globalOptions)) : {}; + }, + /* * Wrap code within a context so Raven can capture errors * reliably across domains that is executed immediately. diff --git a/test/raven.test.js b/test/raven.test.js index a51ad388f0a9..fc5507345463 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1310,6 +1310,35 @@ describe('Raven (public API)', function() { }); }); + describe('.getGlobalOptions', function() { + it('should return null if JSON is not supported', function() { + Raven.config(SENTRY_DSN); + hasJSON = false; + assert.isNull(Raven.getGlobalOptions()); + }); + + it('should return an empty object if Raven has not been configured', function() { + hasJSON=true; + assert.deepEqual(Raven.getGlobalOptions(), {}); + }); + + it('should return the global options of a configured Raven object', function() { + Raven.config(SENTRY_DSN); + assert.deepEqual(Raven.getGlobalOptions(), { + "collectWindowErrors": true, + "extra": {}, + "ignoreErrors": {}, + "ignoreUrls": false, + "includePaths": {}, + "logger": "javascript", + "maxMessageLength": 100, + "tags": {}, + "whitelistUrls": false + }); + }) + + }); + describe('.install', function() { it('should check `isSetup`', function() { this.sinon.stub(window, 'isSetup').returns(false); From 0d514670c7c982c44ead8e82920f390abbb76851 Mon Sep 17 00:00:00 2001 From: Dan Rumney Date: Thu, 28 Aug 2014 16:31:46 -0500 Subject: [PATCH 2/4] Add support for ignoring some console log levels --- plugins/console.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/console.js b/plugins/console.js index d3a3a82a4b53..50e5b007793a 100644 --- a/plugins/console.js +++ b/plugins/console.js @@ -9,13 +9,21 @@ var originalConsole = console, logLevels = ['debug', 'info', 'warn', 'error'], + ignoredLevels = [], + consoleOptions = (Raven.pluginOptions && Raven.pluginOptions.console) ? Raven.pluginOptions.console : [], level; +for (var i = 0; i < consoleOptions.length; i++) { + ignoredLevels.push(consoleOptions[i]); +} + var logForGivenLevel = function(level) { var originalConsoleLevel = console[level]; return function () { var args = [].slice.call(arguments); - Raven.captureMessage('' + args, {level: level, logger: 'console'}); + if(ignoreLevels.indexOf(level) === -1) { + Raven.captureMessage('' + args, {level: level, logger: 'console'}); + } // this fails for some browsers. :( if (originalConsoleLevel) { @@ -29,6 +37,8 @@ var logForGivenLevel = function(level) { }; + + level = logLevels.pop(); while(level) { console[level] = logForGivenLevel(level); From 5a04aa6062d5794a11abf1f56c782fff4cd6da11 Mon Sep 17 00:00:00 2001 From: Dan Rumney Date: Thu, 28 Aug 2014 16:33:20 -0500 Subject: [PATCH 3/4] Reverting unnecessary change --- src/raven.js | 15 --------------- test/raven.test.js | 29 ----------------------------- 2 files changed, 44 deletions(-) diff --git a/src/raven.js b/src/raven.js index cfa2c2a6a5f6..32570b8aa1a6 100644 --- a/src/raven.js +++ b/src/raven.js @@ -133,21 +133,6 @@ var Raven = { return Raven; }, - /* - * Get a copy of the global options. - * - * This allows plugins to be configurable by reading options from Raven - * - * @return Copy of Raven's global options. If JSON is not supported, returns null - */ - - - getGlobalOptions: function() { - if (!hasJSON) return null; - - return isSetup() ? JSON.parse(JSON.stringify(globalOptions)) : {}; - }, - /* * Wrap code within a context so Raven can capture errors * reliably across domains that is executed immediately. diff --git a/test/raven.test.js b/test/raven.test.js index fc5507345463..a51ad388f0a9 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1310,35 +1310,6 @@ describe('Raven (public API)', function() { }); }); - describe('.getGlobalOptions', function() { - it('should return null if JSON is not supported', function() { - Raven.config(SENTRY_DSN); - hasJSON = false; - assert.isNull(Raven.getGlobalOptions()); - }); - - it('should return an empty object if Raven has not been configured', function() { - hasJSON=true; - assert.deepEqual(Raven.getGlobalOptions(), {}); - }); - - it('should return the global options of a configured Raven object', function() { - Raven.config(SENTRY_DSN); - assert.deepEqual(Raven.getGlobalOptions(), { - "collectWindowErrors": true, - "extra": {}, - "ignoreErrors": {}, - "ignoreUrls": false, - "includePaths": {}, - "logger": "javascript", - "maxMessageLength": 100, - "tags": {}, - "whitelistUrls": false - }); - }) - - }); - describe('.install', function() { it('should check `isSetup`', function() { this.sinon.stub(window, 'isSetup').returns(false); From 779e6ca996c3bc86f2afc87df09f9387b9209a98 Mon Sep 17 00:00:00 2001 From: Dan Rumney Date: Thu, 28 Aug 2014 16:38:09 -0500 Subject: [PATCH 4/4] Refactor 'ignoredLevels' --- plugins/console.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/console.js b/plugins/console.js index 50e5b007793a..80610a530a7c 100644 --- a/plugins/console.js +++ b/plugins/console.js @@ -9,13 +9,10 @@ var originalConsole = console, logLevels = ['debug', 'info', 'warn', 'error'], - ignoredLevels = [], - consoleOptions = (Raven.pluginOptions && Raven.pluginOptions.console) ? Raven.pluginOptions.console : [], + consoleOptions = (Raven.pluginOptions && Raven.pluginOptions.console) ? Raven.pluginOptions.console : {}, + ignoredLevels = consoleOptions.ignoredLevels || [], level; -for (var i = 0; i < consoleOptions.length; i++) { - ignoredLevels.push(consoleOptions[i]); -} var logForGivenLevel = function(level) { var originalConsoleLevel = console[level];