From c930079d5b2ba813a1fd2b124944b73f90547305 Mon Sep 17 00:00:00 2001 From: exoego Date: Sun, 20 Jan 2019 16:10:02 +0900 Subject: [PATCH 1/3] Do not print logs if print command is used. --- lib/Serverless.js | 1 + lib/classes/CLI.js | 24 +++++++++++++ lib/classes/CLI.test.js | 80 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+) diff --git a/lib/Serverless.js b/lib/Serverless.js index b501a8fa733..71856ad3806 100644 --- a/lib/Serverless.js +++ b/lib/Serverless.js @@ -81,6 +81,7 @@ class Serverless { if (this.cli.displayHelp(this.processedInput)) { return BbPromise.resolve(); } + this.cli.suppressLog(this.processedInput); // make sure the command exists before doing anything else this.pluginManager.validateCommand(this.processedInput.commands); diff --git a/lib/classes/CLI.js b/lib/classes/CLI.js index 53fca5073fd..ea5e14786f7 100644 --- a/lib/classes/CLI.js +++ b/lib/classes/CLI.js @@ -79,6 +79,30 @@ class CLI { return { commands, options }; } + suppressLog(processedInput) { + const commands = processedInput.commands; + const options = processedInput.options; + + // if "-help" or "-h" was entered + if (options.help || options.h) { + return; + } + + // if "print" was NOT entered + if (commands.indexOf('print') === -1) { + return; + } + + // if other command was combined with "print" + if (commands.length !== 1) { + return; + } + + // Make "log" no-op to suppress warnings. + // But preserve "consoleLog" which "print" command use to print config. + this.log = function() {}; + } + displayHelp(processedInput) { const commands = processedInput.commands; const options = processedInput.options; diff --git a/lib/classes/CLI.test.js b/lib/classes/CLI.test.js index 755a9b51732..a058d64f695 100644 --- a/lib/classes/CLI.test.js +++ b/lib/classes/CLI.test.js @@ -57,6 +57,86 @@ describe('CLI', () => { }); }); + describe('#suppressLog()', () => { + let logStub; + let consoleLogStub; + + beforeEach(() => { + logStub = sinon.stub(); + consoleLogStub = sinon.stub(); + }); + + it('should do nothing when no command is given', () => { + cli = new CLI(serverless, []); + cli.log = logStub; + cli.consoleLog = consoleLogStub; + + const processedInput = cli.processInput(); + cli.suppressLog(processedInput); + cli.log('logged'); + cli.consoleLog('logged'); + + expect(logStub.calledOnce).to.equal(true); + expect(consoleLogStub.calledOnce).to.equal(true); + }); + + it('should do nothing when "print" is given with "-h"', () => { + cli = new CLI(serverless, ['print', '-h']); + cli.log = logStub; + cli.consoleLog = consoleLogStub; + + const processedInput = cli.processInput(); + cli.suppressLog(processedInput); + cli.log('logged'); + cli.consoleLog('logged'); + + expect(logStub.calledOnce).to.equal(true); + expect(consoleLogStub.calledOnce).to.equal(true); + }); + + it('should do nothing when "print" is given with "-help"', () => { + cli = new CLI(serverless, ['print', '-help']); + cli.log = logStub; + cli.consoleLog = consoleLogStub; + + const processedInput = cli.processInput(); + cli.suppressLog(processedInput); + cli.log('logged'); + cli.consoleLog('logged'); + + expect(logStub.calledOnce).to.equal(true); + expect(consoleLogStub.calledOnce).to.equal(true); + }); + + it('should do nothing when "print" is combined with other command.', () => { + cli = new CLI(serverless, ['other', 'print']); + cli.log = logStub; + cli.consoleLog = consoleLogStub; + + const processedInput = cli.processInput(); + cli.suppressLog(processedInput); + cli.log('logged'); + cli.consoleLog('logged'); + + expect(logStub.calledOnce).to.equal(true); + expect(consoleLogStub.calledOnce).to.equal(true); + }); + + it('should suppress log when "print" is given', () => { + cli = new CLI(serverless, ['print', '-myvar', '123']); + cli.log = logStub; + cli.consoleLog = consoleLogStub; + + const processedInput = cli.processInput(); + cli.suppressLog(processedInput); + cli.log('NOT LOGGED'); + cli.consoleLog('logged'); + + expect(logStub.calledOnce).to.equal(false); + expect(consoleLogStub.calledOnce).to.equal(true); + }); + }); + describe('#displayHelp()', () => { it('should return true when no command is given', () => { cli = new CLI(serverless, []); From 43e1fd105f889bd806cc79b1ef04e6ec8ef72d7c Mon Sep 17 00:00:00 2001 From: exoego Date: Sun, 20 Jan 2019 16:24:30 +0900 Subject: [PATCH 2/3] Fix linting error. --- lib/classes/CLI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/classes/CLI.js b/lib/classes/CLI.js index ea5e14786f7..ff3af5d4cc7 100644 --- a/lib/classes/CLI.js +++ b/lib/classes/CLI.js @@ -100,7 +100,7 @@ class CLI { // Make "log" no-op to suppress warnings. // But preserve "consoleLog" which "print" command use to print config. - this.log = function() {}; + this.log = function () {}; } displayHelp(processedInput) { From 59c440e0737801eb37de63dc74e133be8bbb83f7 Mon Sep 17 00:00:00 2001 From: exoego Date: Wed, 23 Jan 2019 14:33:53 +0900 Subject: [PATCH 3/3] Make it clear that logs don't always get suppressed. --- lib/Serverless.js | 2 +- lib/classes/CLI.js | 2 +- lib/classes/CLI.test.js | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/Serverless.js b/lib/Serverless.js index 71856ad3806..3fbd527fd4b 100644 --- a/lib/Serverless.js +++ b/lib/Serverless.js @@ -81,7 +81,7 @@ class Serverless { if (this.cli.displayHelp(this.processedInput)) { return BbPromise.resolve(); } - this.cli.suppressLog(this.processedInput); + this.cli.suppressLogIfPrintCommand(this.processedInput); // make sure the command exists before doing anything else this.pluginManager.validateCommand(this.processedInput.commands); diff --git a/lib/classes/CLI.js b/lib/classes/CLI.js index ff3af5d4cc7..bcfde70dd3f 100644 --- a/lib/classes/CLI.js +++ b/lib/classes/CLI.js @@ -79,7 +79,7 @@ class CLI { return { commands, options }; } - suppressLog(processedInput) { + suppressLogIfPrintCommand(processedInput) { const commands = processedInput.commands; const options = processedInput.options; diff --git a/lib/classes/CLI.test.js b/lib/classes/CLI.test.js index 6bc94a72d03..f99ea3228da 100644 --- a/lib/classes/CLI.test.js +++ b/lib/classes/CLI.test.js @@ -72,7 +72,7 @@ describe('CLI', () => { }); }); - describe('#suppressLog()', () => { + describe('#suppressLogIfPrintCommand()', () => { let logStub; let consoleLogStub; @@ -87,7 +87,7 @@ describe('CLI', () => { cli.consoleLog = consoleLogStub; const processedInput = cli.processInput(); - cli.suppressLog(processedInput); + cli.suppressLogIfPrintCommand(processedInput); cli.log('logged'); cli.consoleLog('logged'); @@ -101,7 +101,7 @@ describe('CLI', () => { cli.consoleLog = consoleLogStub; const processedInput = cli.processInput(); - cli.suppressLog(processedInput); + cli.suppressLogIfPrintCommand(processedInput); cli.log('logged'); cli.consoleLog('logged'); @@ -115,7 +115,7 @@ describe('CLI', () => { cli.consoleLog = consoleLogStub; const processedInput = cli.processInput(); - cli.suppressLog(processedInput); + cli.suppressLogIfPrintCommand(processedInput); cli.log('logged'); cli.consoleLog('logged'); @@ -129,7 +129,7 @@ describe('CLI', () => { cli.consoleLog = consoleLogStub; const processedInput = cli.processInput(); - cli.suppressLog(processedInput); + cli.suppressLogIfPrintCommand(processedInput); cli.log('logged'); cli.consoleLog('logged'); @@ -143,7 +143,7 @@ describe('CLI', () => { cli.consoleLog = consoleLogStub; const processedInput = cli.processInput(); - cli.suppressLog(processedInput); + cli.suppressLogIfPrintCommand(processedInput); cli.log('NOT LOGGED'); cli.consoleLog('logged');