From 85dbefb86c931d0380d89525f2219b1402f83f56 Mon Sep 17 00:00:00 2001 From: Bo Xiong Date: Wed, 20 Nov 2013 12:05:20 -0600 Subject: [PATCH] Added isVerbose as a property of mechanic to suppress excessive logging from UIALogger. --- spec/logging-spec.js | 24 +++++++++++++++++++++++- src/logging.js | 8 +++++--- src/mechanic-core.js | 3 +++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/spec/logging-spec.js b/spec/logging-spec.js index f7ed0b5..372bcd2 100644 --- a/spec/logging-spec.js +++ b/spec/logging-spec.js @@ -1,10 +1,29 @@ -describe('Mechanic Event Module', function() { +describe('Mechanic Logging Module', function() { + it('suppresses message and debug logs when isVerbose is false', function() { + spyOn(UIALogger, 'logError'); + spyOn(UIALogger, 'logWarning'); + spyOn(UIALogger, 'logDebug'); + spyOn(UIALogger, 'logMessage'); + + $.isVerbose = false; + $.log('error', 'error'); + $.log('warn', 'warn'); + $.log('debug', 'debug'); + $.log('message', 'message'); + + expect(UIALogger.logError).toHaveBeenCalledWith('error'); + expect(UIALogger.logWarning).toHaveBeenCalledWith('warn'); + expect(UIALogger.logDebug).not.toHaveBeenCalled(); + expect(UIALogger.logMessage).not.toHaveBeenCalled(); + }); + it('delegates to UIALogger when logging', function() { spyOn(UIALogger, 'logError'); spyOn(UIALogger, 'logWarning'); spyOn(UIALogger, 'logDebug'); spyOn(UIALogger, 'logMessage'); + $.isVerbose = true; $.error('error'); $.warn('warn'); $.debug('debug'); @@ -20,6 +39,7 @@ describe('Mechanic Event Module', function() { spyOn(UIALogger, 'logMessage'); spyOn(UIALogger, 'logError'); + $.isVerbose = true; $.log('hello!'); expect(UIALogger.logMessage).toHaveBeenCalledWith('hello!'); @@ -30,6 +50,7 @@ describe('Mechanic Event Module', function() { spyOn(UIALogger, 'logMessage'); spyOn(UIALogger, 'logError'); + $.isVerbose = true; $.log('hello!', 'fakelevel'); expect(UIALogger.logMessage).toHaveBeenCalledWith('hello!'); @@ -42,6 +63,7 @@ describe('Mechanic Event Module', function() { spyOn(UIALogger, 'logDebug'); spyOn(UIALogger, 'logMessage'); + $.isVerbose = true; $.log('error', 'error'); $.log('warn', 'warn'); $.log('debug', 'debug'); diff --git a/src/logging.js b/src/logging.js index 1759046..94602ea 100644 --- a/src/logging.js +++ b/src/logging.js @@ -8,15 +8,17 @@ level = level || 'message'; if (level === 'error') $.error(s); else if (level === 'warn') $.warn(s); - else if (level === 'debug') $.debug(s); - else $.message(s); + else if (typeof $.isVerbose !== "undefined" && $.isVerbose) { + if (level === 'debug') $.debug(s); + else $.message(s); + } }, error: function(s) { UIALogger.logError(s); }, warn: function(s) { UIALogger.logWarning(s); }, debug: function(s) { UIALogger.logDebug(s); }, message: function(s) { UIALogger.logMessage(s); }, capture: function(imageName, rect) { - var target = UIATarget.localTarget(); + var target = UIATarget.localTarget(); imageName = imageName || new Date().toString(); if (rect) target.captureRectWithName(rect, imageName); else target.captureScreenWithName(imageName); diff --git a/src/mechanic-core.js b/src/mechanic-core.js index 6d2a736..3b5b3ea 100644 --- a/src/mechanic-core.js +++ b/src/mechanic-core.js @@ -18,6 +18,9 @@ var mechanic = (function() { // Developers can adjust this value by calling $.timeout(duration) target.setTimeout(0); + // This property is meant to suppress excessive logging which prevents instruments from promptly dumping out screenshots. + this.isVerbose = false + var app = target.frontMostApp(), window = app.mainWindow(), emptyArray = [],