From 7633f094793e2bffc82f1c4f4036fdbf30418700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 12 Nov 2019 18:25:24 -0500 Subject: [PATCH] =?UTF-8?q?Babel=20should=20not=20silently=20remove=20unkn?= =?UTF-8?q?own=20options=20after=20command=E2=80=A6=20(#10698)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: add test case * chore: bump commander to 4.0.1 * fix: let commander.js throw on unknown options after args --- packages/babel-cli/package.json | 2 +- packages/babel-cli/src/babel/options.js | 4 ++++ .../error incorrect options after args/in-files/script.js | 1 + .../babel/error incorrect options after args/options.json | 4 ++++ .../babel/error incorrect options after args/stderr.txt | 1 + .../error incorrect options before args/in-files/script.js | 1 + .../babel/error incorrect options before args/options.json | 4 ++++ .../babel/error incorrect options before args/stderr.txt | 1 + 8 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 packages/babel-cli/test/fixtures/babel/error incorrect options after args/in-files/script.js create mode 100644 packages/babel-cli/test/fixtures/babel/error incorrect options after args/options.json create mode 100644 packages/babel-cli/test/fixtures/babel/error incorrect options after args/stderr.txt create mode 100644 packages/babel-cli/test/fixtures/babel/error incorrect options before args/in-files/script.js create mode 100644 packages/babel-cli/test/fixtures/babel/error incorrect options before args/options.json create mode 100644 packages/babel-cli/test/fixtures/babel/error incorrect options before args/stderr.txt diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json index 0328b7596c27..c5b1e90485d6 100644 --- a/packages/babel-cli/package.json +++ b/packages/babel-cli/package.json @@ -19,7 +19,7 @@ "compiler" ], "dependencies": { - "commander": "^2.8.1", + "commander": "^4.0.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", diff --git a/packages/babel-cli/src/babel/options.js b/packages/babel-cli/src/babel/options.js index 169c61ffa51a..1543d02f4bb4 100644 --- a/packages/babel-cli/src/babel/options.js +++ b/packages/babel-cli/src/babel/options.js @@ -163,6 +163,10 @@ commander.option( commander.version(pkg.version + " (@babel/core " + version + ")"); commander.usage("[options] "); +// register an empty action handler so that commander.js can throw on +// unknown options _after_ args +// see https://github.com/tj/commander.js/issues/561#issuecomment-522209408 +commander.action(() => {}); export type CmdOptions = { babelOptions: Object, diff --git a/packages/babel-cli/test/fixtures/babel/error incorrect options after args/in-files/script.js b/packages/babel-cli/test/fixtures/babel/error incorrect options after args/in-files/script.js new file mode 100644 index 000000000000..4bc9539528d4 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error incorrect options after args/in-files/script.js @@ -0,0 +1 @@ +arr.map(x => x * MULTIPLIER); diff --git a/packages/babel-cli/test/fixtures/babel/error incorrect options after args/options.json b/packages/babel-cli/test/fixtures/babel/error incorrect options after args/options.json new file mode 100644 index 000000000000..dde64755da06 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error incorrect options after args/options.json @@ -0,0 +1,4 @@ +{ + "args": ["script.js", "--spruce-maps"], + "stderrContains": true +} diff --git a/packages/babel-cli/test/fixtures/babel/error incorrect options after args/stderr.txt b/packages/babel-cli/test/fixtures/babel/error incorrect options after args/stderr.txt new file mode 100644 index 000000000000..294d5ccaeaed --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error incorrect options after args/stderr.txt @@ -0,0 +1 @@ +error: unknown option '--spruce-maps' diff --git a/packages/babel-cli/test/fixtures/babel/error incorrect options before args/in-files/script.js b/packages/babel-cli/test/fixtures/babel/error incorrect options before args/in-files/script.js new file mode 100644 index 000000000000..4bc9539528d4 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error incorrect options before args/in-files/script.js @@ -0,0 +1 @@ +arr.map(x => x * MULTIPLIER); diff --git a/packages/babel-cli/test/fixtures/babel/error incorrect options before args/options.json b/packages/babel-cli/test/fixtures/babel/error incorrect options before args/options.json new file mode 100644 index 000000000000..0d7953971726 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error incorrect options before args/options.json @@ -0,0 +1,4 @@ +{ + "args": ["--spruce-maps", "script.js"], + "stderrContains": true +} diff --git a/packages/babel-cli/test/fixtures/babel/error incorrect options before args/stderr.txt b/packages/babel-cli/test/fixtures/babel/error incorrect options before args/stderr.txt new file mode 100644 index 000000000000..294d5ccaeaed --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error incorrect options before args/stderr.txt @@ -0,0 +1 @@ +error: unknown option '--spruce-maps'