From 9edeeb4413e23acbadebe4ae232a329925b31ab4 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Sun, 19 Jul 2020 23:12:22 +0530 Subject: [PATCH 1/4] fix: serve recognizes color flag --- packages/serve/src/index.ts | 2 ++ test/serve/basic/serve-basic.test.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/packages/serve/src/index.ts b/packages/serve/src/index.ts index 10d0ecfa799..121a553a84a 100644 --- a/packages/serve/src/index.ts +++ b/packages/serve/src/index.ts @@ -15,6 +15,8 @@ export default function serve(...args: string[]): void { const core = cli.getCoreFlags(); const parsedDevServerArgs = cli.argParser(devServer, args, true); + if (parsedDevServerArgs.unknownArgs.some((arg) => ['help', 'version', 'color'].includes(arg))) return; + const devServerArgs = parsedDevServerArgs.opts; const parsedWebpackArgs = cli.argParser(core, parsedDevServerArgs.unknownArgs, true, process.title); const webpackArgs = parsedWebpackArgs.opts; diff --git a/test/serve/basic/serve-basic.test.js b/test/serve/basic/serve-basic.test.js index ccb1a8e8f19..359b1ee9126 100644 --- a/test/serve/basic/serve-basic.test.js +++ b/test/serve/basic/serve-basic.test.js @@ -1,11 +1,15 @@ 'use strict'; +const chalk = require('chalk'); const path = require('path'); const getPort = require('get-port'); const { runServe } = require('../../utils/test-utils'); const testPath = path.resolve(__dirname); +const usageText = 'webpack s | serve'; +const descriptionText = 'Run the webpack Dev Server'; + describe('basic serve usage', () => { let port; @@ -23,6 +27,16 @@ describe('basic serve usage', () => { console.warn('TODO: fix `serve` test on windows'); }); } else { + it('should respect the --color=false flag', async () => { + const { stdout, stderr } = await runServe(['help', '--color=false'], __dirname); + chalk.enabled = true; + chalk.level = 3; + const orange = chalk.keyword('orange'); + expect(stdout).not.toContain(orange(usageText)); + expect(stdout).toContain(descriptionText); + expect(stderr).toHaveLength(0); + }); + it('should not invoke info subcommand', async () => { const { stdout, stderr } = await runServe(['--client-log-level', 'info'], testPath); expect(stdout).toContain('main.js'); From 667086649b0c0a9144c3d995e50ee21a530d7731 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Fri, 31 Jul 2020 09:46:58 +0530 Subject: [PATCH 2/4] chore: migrate to colorette --- packages/serve/src/index.ts | 2 +- test/serve/basic/serve-basic.test.js | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/serve/src/index.ts b/packages/serve/src/index.ts index 121a553a84a..16e121c0f33 100644 --- a/packages/serve/src/index.ts +++ b/packages/serve/src/index.ts @@ -15,7 +15,7 @@ export default function serve(...args: string[]): void { const core = cli.getCoreFlags(); const parsedDevServerArgs = cli.argParser(devServer, args, true); - if (parsedDevServerArgs.unknownArgs.some((arg) => ['help', 'version', 'color'].includes(arg))) return; + if (parsedDevServerArgs.unknownArgs.some((arg) => ['help', 'version'].includes(arg))) return; const devServerArgs = parsedDevServerArgs.opts; const parsedWebpackArgs = cli.argParser(core, parsedDevServerArgs.unknownArgs, true, process.title); diff --git a/test/serve/basic/serve-basic.test.js b/test/serve/basic/serve-basic.test.js index 359b1ee9126..2c489313431 100644 --- a/test/serve/basic/serve-basic.test.js +++ b/test/serve/basic/serve-basic.test.js @@ -1,6 +1,6 @@ 'use strict'; -const chalk = require('chalk'); +const { yellow, options } = require('colorette'); const path = require('path'); const getPort = require('get-port'); const { runServe } = require('../../utils/test-utils'); @@ -27,12 +27,10 @@ describe('basic serve usage', () => { console.warn('TODO: fix `serve` test on windows'); }); } else { - it('should respect the --color=false flag', async () => { - const { stdout, stderr } = await runServe(['help', '--color=false'], __dirname); - chalk.enabled = true; - chalk.level = 3; - const orange = chalk.keyword('orange'); - expect(stdout).not.toContain(orange(usageText)); + it('should respect the --no-color flag', async () => { + const { stdout, stderr } = await runServe(['--help', '--no-color'], __dirname); + options.enabled = true; + expect(stdout).not.toContain(yellow(usageText)); expect(stdout).toContain(descriptionText); expect(stderr).toHaveLength(0); }); From 87d01634e676caa38e936137132a245b0cd9128e Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Wed, 5 Aug 2020 17:45:35 +0530 Subject: [PATCH 3/4] tests: add test case to ensure that help arg recognizes subcommands --- test/help/help-commands.test.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/help/help-commands.test.js b/test/help/help-commands.test.js index 765573ad072..d49482ec9ab 100644 --- a/test/help/help-commands.test.js +++ b/test/help/help-commands.test.js @@ -4,6 +4,11 @@ const { run } = require('../utils/test-utils'); const helpHeader = 'The build tool for modern web applications'; describe('commands help', () => { + it('recognizes subcommands', () => { + const { stderr } = run(__dirname, ['help', 'serve'], false); + expect(stderr).not.toContain('Unknown argument: help'); + }); + it('throws error for invalid command with --help flag', () => { const { stderr } = run(__dirname, ['--help', 'myCommand'], false); expect(stderr).toContain(`You provided an invalid command 'myCommand'`); From d1cbcaeafb088eecc67c686a87135bc5ac4d5b57 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Wed, 5 Aug 2020 20:04:31 +0530 Subject: [PATCH 4/4] fix: throw error if help or version is supplied as an arg --- packages/serve/src/index.ts | 6 ++---- test/help/help-commands.test.js | 12 +++++++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/serve/src/index.ts b/packages/serve/src/index.ts index 16e121c0f33..0f8ffad1520 100644 --- a/packages/serve/src/index.ts +++ b/packages/serve/src/index.ts @@ -15,8 +15,6 @@ export default function serve(...args: string[]): void { const core = cli.getCoreFlags(); const parsedDevServerArgs = cli.argParser(devServer, args, true); - if (parsedDevServerArgs.unknownArgs.some((arg) => ['help', 'version'].includes(arg))) return; - const devServerArgs = parsedDevServerArgs.opts; const parsedWebpackArgs = cli.argParser(core, parsedDevServerArgs.unknownArgs, true, process.title); const webpackArgs = parsedWebpackArgs.opts; @@ -30,9 +28,9 @@ export default function serve(...args: string[]): void { parsedWebpackArgs.unknownArgs .filter((e) => e) .forEach((unknown) => { - logger.warn('Unknown argument:', unknown); + logger.error('Unknown argument:', unknown); }); - return; + process.exit(2); } cli.getCompiler(webpackArgs, core).then((compiler): void => { diff --git a/test/help/help-commands.test.js b/test/help/help-commands.test.js index d49482ec9ab..63f2e94fdf4 100644 --- a/test/help/help-commands.test.js +++ b/test/help/help-commands.test.js @@ -4,9 +4,15 @@ const { run } = require('../utils/test-utils'); const helpHeader = 'The build tool for modern web applications'; describe('commands help', () => { - it('recognizes subcommands', () => { - const { stderr } = run(__dirname, ['help', 'serve'], false); - expect(stderr).not.toContain('Unknown argument: help'); + it('throws error if supplied as an argument for subcommands', () => { + const { stderr } = run(__dirname, ['serve', 'help'], false); + expect(stderr).toContain('Unknown argument: help'); + }); + + it('shows help information with subcommands as an arg', () => { + const { stdout, stderr } = run(__dirname, ['help', 'serve'], false); + expect(stdout).toContain('webpack s | serve'); + expect(stderr).toHaveLength(0); }); it('throws error for invalid command with --help flag', () => {