From e0ef63d9423d6954643b0a5f15809000918b53be Mon Sep 17 00:00:00 2001 From: Nathan Manceaux-Panot Date: Mon, 27 Jun 2022 18:23:12 +0200 Subject: [PATCH] Add --no-msg argument And use in tests that check a script's output. --- source/PackageCache.js | 7 +++++-- source/ScriptEnvironment.js | 3 ++- source/ScriptRunner.js | 1 + source/exposed-modules/Folder.js | 15 ++++++++++++--- source/tasklemon.js | 8 +++++++- spec/npm/npmSpec.js | 16 ++++++++-------- 6 files changed, 35 insertions(+), 15 deletions(-) diff --git a/source/PackageCache.js b/source/PackageCache.js index 1d38450..81d22f8 100644 --- a/source/PackageCache.js +++ b/source/PackageCache.js @@ -8,8 +8,9 @@ const crossSpawn = require('cross-spawn'); const rimraf = require('rimraf'); const Constants = require('./Constants'); -const Tools = require('./Tools'); +const ScriptEnvironment = require('./ScriptEnvironment'); const RuntimeVersion = require('./RuntimeVersion'); +const Tools = require('./Tools'); module.exports = { PACKAGE_CACHE_PATH: path.join(Constants.CACHE_PATH, 'npm-packages', path.sep), @@ -249,7 +250,9 @@ module.exports = { _showPreparingMessage() { if (!this._didRecentlyShowPreparingMessage) { - process.stdout.write('Preparing packages...\n'); + if (!ScriptEnvironment.muteInfoMessages) { + process.stdout.write('Preparing packages...\n'); + } this._didRecentlyShowPreparingMessage = true; setImmediate(() => { diff --git a/source/ScriptEnvironment.js b/source/ScriptEnvironment.js index 9941224..9d876a8 100644 --- a/source/ScriptEnvironment.js +++ b/source/ScriptEnvironment.js @@ -6,5 +6,6 @@ module.exports = { requiredRuntimeVersion: null, rawArguments: null, defaultBundlePackageList: null, - requiredPackageVersions: null + requiredPackageVersions: null, + muteInfoMessages: null }; diff --git a/source/ScriptRunner.js b/source/ScriptRunner.js index 16c6a61..7f4dc32 100644 --- a/source/ScriptRunner.js +++ b/source/ScriptRunner.js @@ -28,6 +28,7 @@ module.exports = { ScriptEnvironment.rawArguments = args; ScriptEnvironment.defaultBundlePackageList = requiredPackages; ScriptEnvironment.requiredPackageVersions = requiredPackageVersions; + //ScriptEnvironment.muteInfoMessages // Set in tasklemon.js // Write script to stage stagePath = fs.mkdtempSync(os.tmpdir() + path.sep); diff --git a/source/exposed-modules/Folder.js b/source/exposed-modules/Folder.js index 43e6f50..f7b3007 100644 --- a/source/exposed-modules/Folder.js +++ b/source/exposed-modules/Folder.js @@ -7,6 +7,7 @@ const glob = require('glob'); const Item = require('./Item'); const TypeDefinition = require('../TypeDefinition'); +const ScriptEnvironment = require('../ScriptEnvironment'); const RuntimeVersion = require('../RuntimeVersion'); let didShowFileMethodDeprecationWarning = false; @@ -59,7 +60,11 @@ class Folder extends Item { if (Item._isAbsolutePath(nativePath)) { if (!this._isRoot) throw Error(`“${cleanPath}” is an absolute path but the folder is not a root folder`); - if (!didShowFileMethodDeprecationWarning && RuntimeVersion.isAtLeast('0.4')) { + if ( + !ScriptEnvironment.muteInfoMessages + && !didShowFileMethodDeprecationWarning + && RuntimeVersion.isAtLeast('0.4') + ) { didShowFileMethodDeprecationWarning = true; console.trace('Calling the file() method with an absolute path is deprecated. Call the File() global instead.'); } @@ -78,8 +83,12 @@ class Folder extends Item { if (Item._isAbsolutePath(nativePath)) { if (!this._isRoot) throw Error(`“${cleanPath}” is an absolute path but the folder is not a root folder`); - - if (!didShowFolderMethodDeprecationWarning && RuntimeVersion.isAtLeast('0.4')) { + + if ( + !ScriptEnvironment.muteInfoMessages + && !didShowFolderMethodDeprecationWarning + && RuntimeVersion.isAtLeast('0.4') + ) { didShowFolderMethodDeprecationWarning = true; console.trace('Calling the folder() method with an absolute path is deprecated. Call the Folder() global instead.'); } diff --git a/source/tasklemon.js b/source/tasklemon.js index 15c93e5..a3014c7 100755 --- a/source/tasklemon.js +++ b/source/tasklemon.js @@ -8,6 +8,7 @@ const PackageCache = require('./PackageCache'); const ScriptFile = require('./ScriptFile'); const ScriptRunner = require('./ScriptRunner'); const ScriptParser = require('./ScriptParser'); +const ScriptEnvironment = require('./ScriptEnvironment'); const Tools = require('./Tools'); const validLemonArguments = [ @@ -17,7 +18,10 @@ const validLemonArguments = [ // Package/runtime pinning '--pin-pkg', - '--no-pin' + '--no-pin', + + // Other + '--no-msg' ]; const validNodeArguments = ['--inspect', '--inspect-brk']; @@ -110,6 +114,8 @@ function exitIfContainsInvalidArguments(args) { const actionsToPerform = getActionsForForArguments(programArgs.lemonArguments); const scriptFile = new ScriptFile(programArgs.scriptPath); + ScriptEnvironment.muteInfoMessages = programArgs.lemonArguments.includes('--no-msg'); + // Clear package cache if (actionsToPerform.clearPackageCache) { const deletedBundleCount = PackageCache.clearAll(); diff --git a/spec/npm/npmSpec.js b/spec/npm/npmSpec.js index 552bbc1..9fa31cd 100644 --- a/spec/npm/npmSpec.js +++ b/spec/npm/npmSpec.js @@ -11,7 +11,7 @@ describe('npm', function() { process.stdout.write(String(uniqueCount)); `; - let scriptOutput = await testEnv.runLemonScript(scriptSource); + let scriptOutput = await testEnv.runLemonScript(scriptSource, [], ['--no-msg']); expect(scriptOutput).toBe('3'); }); @@ -26,7 +26,7 @@ describe('npm', function() { } `; - let scriptOutput = await testEnv.runLemonScript(scriptSource); + let scriptOutput = await testEnv.runLemonScript(scriptSource, [], ['--no-msg']); expect(scriptOutput).toBe('success'); }); @@ -37,7 +37,7 @@ describe('npm', function() { process.stdout.write(String(uniqueCount)); `; - let scriptOutput = await testEnv.runLemonScript(scriptSource); + let scriptOutput = await testEnv.runLemonScript(scriptSource, [], ['--no-msg']); expect(scriptOutput).toBe('3'); }); @@ -48,7 +48,7 @@ describe('npm', function() { process.stdout.write(String(stryker.cliOptions.concurrency)); `; - let scriptOutput = await testEnv.runLemonScript(scriptSource); + let scriptOutput = await testEnv.runLemonScript(scriptSource, [], ['--no-msg']); expect(scriptOutput).toBe('4'); }); @@ -59,7 +59,7 @@ describe('npm', function() { process.stdout.write(String(npm['@octokit/core'].Octokit.VERSION)); `; - let scriptOutput = await testEnv.runLemonScript(scriptSource); + let scriptOutput = await testEnv.runLemonScript(scriptSource, [], ['--no-msg']); expect(scriptOutput).toBe('3.2.4'); }); @@ -73,7 +73,7 @@ describe('npm', function() { } `; - let scriptOutput = await testEnv.runLemonScript(scriptSource); + let scriptOutput = await testEnv.runLemonScript(scriptSource, [], ['--no-msg']); expect(scriptOutput).toBe('success'); }); @@ -88,7 +88,7 @@ describe('npm', function() { } `; - let scriptOutput = await testEnv.runLemonScript(scriptSource); + let scriptOutput = await testEnv.runLemonScript(scriptSource, [], ['--no-msg']); expect(scriptOutput).toBe('success'); }); @@ -105,7 +105,7 @@ describe('npm', function() { } `; - let scriptOutput = await testEnv.runLemonScript(scriptSource, [], ['--no-pin']); + let scriptOutput = await testEnv.runLemonScript(scriptSource, [], ['--no-msg', '--no-pin']); expect(scriptOutput).toBe('success'); });