From eaf9f36b22541ea9eafca3b46f2626eed9cb753f Mon Sep 17 00:00:00 2001 From: Rishabh Chawla Date: Sat, 4 Sep 2021 18:53:14 +0530 Subject: [PATCH 1/9] test: add test case for required behaviour --- test/build/config/undefined/src/index.js | 1 + test/build/config/undefined/undefined.test.js | 18 ++++++++++++++++++ test/build/config/undefined/webpack.config.js | 1 + 3 files changed, 20 insertions(+) create mode 100644 test/build/config/undefined/src/index.js create mode 100644 test/build/config/undefined/undefined.test.js create mode 100644 test/build/config/undefined/webpack.config.js diff --git a/test/build/config/undefined/src/index.js b/test/build/config/undefined/src/index.js new file mode 100644 index 00000000000..9c65d57fa6c --- /dev/null +++ b/test/build/config/undefined/src/index.js @@ -0,0 +1 @@ +console.log("Percy Weasley") \ No newline at end of file diff --git a/test/build/config/undefined/undefined.test.js b/test/build/config/undefined/undefined.test.js new file mode 100644 index 00000000000..c6d10dc9d8c --- /dev/null +++ b/test/build/config/undefined/undefined.test.js @@ -0,0 +1,18 @@ +"use strict"; +const { resolve } = require("path"); +const { run } = require("../../../utils/test-utils"); + +describe("config flag with undefined export config file", () => { + it("should throw error with no configuration or index file", async () => { + const { exitCode, stderr, stdout } = await run(__dirname, [ + "-c", + resolve(__dirname, "webpack.config.js"), + ]); + + console.log({ stdout, stderr, exitCode }); + + expect(exitCode).toBe(0); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + }); +}); diff --git a/test/build/config/undefined/webpack.config.js b/test/build/config/undefined/webpack.config.js new file mode 100644 index 00000000000..d0f5f3a7fc4 --- /dev/null +++ b/test/build/config/undefined/webpack.config.js @@ -0,0 +1 @@ +module.exports = undefined; From 2328313fda87cad55bdf65ea87e425936c71e978 Mon Sep 17 00:00:00 2001 From: Rishabh Chawla Date: Sat, 4 Sep 2021 19:13:53 +0530 Subject: [PATCH 2/9] chore: handle undefined configuration --- packages/webpack-cli/lib/webpack-cli.js | 10 +++++++++- test/build/config/undefined/undefined.test.js | 2 -- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/webpack-cli/lib/webpack-cli.js b/packages/webpack-cli/lib/webpack-cli.js index c3d9052e7fa..1b030aa75f1 100644 --- a/packages/webpack-cli/lib/webpack-cli.js +++ b/packages/webpack-cli/lib/webpack-cli.js @@ -67,10 +67,18 @@ class WebpackCLI { } // For babel/typescript - if (result.default) { + if (result && result.default) { result = result.default; } + // Treat undefined configuration for zero-config + if (!result) { + this.logger.info( + "Configuration file provided didn't export any configuration, using defaults to build.", + ); + result = {}; + } + return result; } diff --git a/test/build/config/undefined/undefined.test.js b/test/build/config/undefined/undefined.test.js index c6d10dc9d8c..f36efef63b3 100644 --- a/test/build/config/undefined/undefined.test.js +++ b/test/build/config/undefined/undefined.test.js @@ -9,8 +9,6 @@ describe("config flag with undefined export config file", () => { resolve(__dirname, "webpack.config.js"), ]); - console.log({ stdout, stderr, exitCode }); - expect(exitCode).toBe(0); expect(stderr).toBeFalsy(); expect(stdout).toBeTruthy(); From 74896c8ef1e60ec54f264fd0236997e7e37bea05 Mon Sep 17 00:00:00 2001 From: Rishabh Chawla Date: Sat, 4 Sep 2021 19:56:47 +0530 Subject: [PATCH 3/9] test: add no code test case --- test/build/config/no-code/no-code.test.js | 16 ++++++++++++++++ test/build/config/no-code/src/index.js | 1 + test/build/config/no-code/webpack.config.js | 0 3 files changed, 17 insertions(+) create mode 100644 test/build/config/no-code/no-code.test.js create mode 100644 test/build/config/no-code/src/index.js create mode 100644 test/build/config/no-code/webpack.config.js diff --git a/test/build/config/no-code/no-code.test.js b/test/build/config/no-code/no-code.test.js new file mode 100644 index 00000000000..c7b98674ead --- /dev/null +++ b/test/build/config/no-code/no-code.test.js @@ -0,0 +1,16 @@ +"use strict"; +const { resolve } = require("path"); +const { run } = require("../../../utils/test-utils"); + +describe("config flag with no code", () => { + it("should throw error with no configuration or index file", async () => { + const { exitCode, stderr, stdout } = await run(__dirname, [ + "-c", + resolve(__dirname, "webpack.config.js"), + ]); + + expect(exitCode).toBe(0); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + }); +}); diff --git a/test/build/config/no-code/src/index.js b/test/build/config/no-code/src/index.js new file mode 100644 index 00000000000..164e3e9c24f --- /dev/null +++ b/test/build/config/no-code/src/index.js @@ -0,0 +1 @@ +console.log("Peeves"); diff --git a/test/build/config/no-code/webpack.config.js b/test/build/config/no-code/webpack.config.js new file mode 100644 index 00000000000..e69de29bb2d From 2f53013e1c230d510e845bab9b89c9990222b2f2 Mon Sep 17 00:00:00 2001 From: Rishabh Chawla Date: Sat, 4 Sep 2021 20:16:14 +0530 Subject: [PATCH 4/9] chore: remove aggressive log --- packages/webpack-cli/lib/webpack-cli.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/webpack-cli/lib/webpack-cli.js b/packages/webpack-cli/lib/webpack-cli.js index 1b030aa75f1..18ef5cca60d 100644 --- a/packages/webpack-cli/lib/webpack-cli.js +++ b/packages/webpack-cli/lib/webpack-cli.js @@ -73,9 +73,6 @@ class WebpackCLI { // Treat undefined configuration for zero-config if (!result) { - this.logger.info( - "Configuration file provided didn't export any configuration, using defaults to build.", - ); result = {}; } From 397e6e54359c44cc9e809f5da6d7c72ceb787f68 Mon Sep 17 00:00:00 2001 From: Rishabh Chawla Date: Sat, 4 Sep 2021 20:38:52 +0530 Subject: [PATCH 5/9] chore: use suggestion --- packages/webpack-cli/lib/webpack-cli.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/webpack-cli/lib/webpack-cli.js b/packages/webpack-cli/lib/webpack-cli.js index 18ef5cca60d..a42f036f7eb 100644 --- a/packages/webpack-cli/lib/webpack-cli.js +++ b/packages/webpack-cli/lib/webpack-cli.js @@ -71,12 +71,7 @@ class WebpackCLI { result = result.default; } - // Treat undefined configuration for zero-config - if (!result) { - result = {}; - } - - return result; + return result || {}; } loadJSONFile(pathToFile, handleError = true) { From 3f252897194461f22b2dc48ee0bc6a2e7fa6110a Mon Sep 17 00:00:00 2001 From: Rishabh Chawla Date: Sat, 4 Sep 2021 21:07:31 +0530 Subject: [PATCH 6/9] test: add test case for default undefined case --- packages/webpack-cli/lib/webpack-cli.js | 4 ++-- test/build/config/undefined-default/src/index.js | 1 + .../undefined-default/undefined-default.test.js | 16 ++++++++++++++++ .../config/undefined-default/webpack.config.js | 1 + 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 test/build/config/undefined-default/src/index.js create mode 100644 test/build/config/undefined-default/undefined-default.test.js create mode 100644 test/build/config/undefined-default/webpack.config.js diff --git a/packages/webpack-cli/lib/webpack-cli.js b/packages/webpack-cli/lib/webpack-cli.js index a42f036f7eb..bb7661fc34c 100644 --- a/packages/webpack-cli/lib/webpack-cli.js +++ b/packages/webpack-cli/lib/webpack-cli.js @@ -67,8 +67,8 @@ class WebpackCLI { } // For babel/typescript - if (result && result.default) { - result = result.default; + if (result && "default" in result) { + result = result.default || {}; } return result || {}; diff --git a/test/build/config/undefined-default/src/index.js b/test/build/config/undefined-default/src/index.js new file mode 100644 index 00000000000..d4caacb0cbb --- /dev/null +++ b/test/build/config/undefined-default/src/index.js @@ -0,0 +1 @@ +console.log("Tom Riddle"); diff --git a/test/build/config/undefined-default/undefined-default.test.js b/test/build/config/undefined-default/undefined-default.test.js new file mode 100644 index 00000000000..c625b1005a6 --- /dev/null +++ b/test/build/config/undefined-default/undefined-default.test.js @@ -0,0 +1,16 @@ +"use strict"; +const { resolve } = require("path"); +const { run } = require("../../../utils/test-utils"); + +describe("config flag with undefined default export config file", () => { + it("should throw error with no configuration or index file", async () => { + const { exitCode, stderr, stdout } = await run(__dirname, [ + "-c", + resolve(__dirname, "webpack.config.js"), + ]); + + expect(exitCode).toBe(0); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + }); +}); diff --git a/test/build/config/undefined-default/webpack.config.js b/test/build/config/undefined-default/webpack.config.js new file mode 100644 index 00000000000..253def99924 --- /dev/null +++ b/test/build/config/undefined-default/webpack.config.js @@ -0,0 +1 @@ +module.exports.default = undefined; From da23efa544518c0f691687967531decc20558534 Mon Sep 17 00:00:00 2001 From: Rishabh Chawla Date: Sun, 5 Sep 2021 11:53:39 +0530 Subject: [PATCH 7/9] fix: invalid export case --- packages/webpack-cli/lib/webpack-cli.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webpack-cli/lib/webpack-cli.js b/packages/webpack-cli/lib/webpack-cli.js index bb7661fc34c..0548c9a2550 100644 --- a/packages/webpack-cli/lib/webpack-cli.js +++ b/packages/webpack-cli/lib/webpack-cli.js @@ -67,7 +67,7 @@ class WebpackCLI { } // For babel/typescript - if (result && "default" in result) { + if (result && typeof result === "object" && "default" in result) { result = result.default || {}; } From 2442dc3aa2014efa6555118e62bdadfbc751b2ea Mon Sep 17 00:00:00 2001 From: Rishabh Chawla Date: Sun, 5 Sep 2021 17:27:08 +0530 Subject: [PATCH 8/9] chore: update test descriptions --- test/build/config/no-code/no-code.test.js | 2 +- test/build/config/undefined-default/undefined-default.test.js | 2 +- test/build/config/undefined/undefined.test.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/build/config/no-code/no-code.test.js b/test/build/config/no-code/no-code.test.js index c7b98674ead..e9515123b1c 100644 --- a/test/build/config/no-code/no-code.test.js +++ b/test/build/config/no-code/no-code.test.js @@ -3,7 +3,7 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); describe("config flag with no code", () => { - it("should throw error with no configuration or index file", async () => { + it("should not throw error with no configuration or index file", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "-c", resolve(__dirname, "webpack.config.js"), diff --git a/test/build/config/undefined-default/undefined-default.test.js b/test/build/config/undefined-default/undefined-default.test.js index c625b1005a6..eabeb06be42 100644 --- a/test/build/config/undefined-default/undefined-default.test.js +++ b/test/build/config/undefined-default/undefined-default.test.js @@ -3,7 +3,7 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); describe("config flag with undefined default export config file", () => { - it("should throw error with no configuration or index file", async () => { + it("should not throw error with no configuration or index file", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "-c", resolve(__dirname, "webpack.config.js"), diff --git a/test/build/config/undefined/undefined.test.js b/test/build/config/undefined/undefined.test.js index f36efef63b3..2845fecb20c 100644 --- a/test/build/config/undefined/undefined.test.js +++ b/test/build/config/undefined/undefined.test.js @@ -3,7 +3,7 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); describe("config flag with undefined export config file", () => { - it("should throw error with no configuration or index file", async () => { + it("should not throw error with no configuration or index file", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "-c", resolve(__dirname, "webpack.config.js"), From 424e0b7accd32e84a07b3abbc48d7014e6bb8924 Mon Sep 17 00:00:00 2001 From: Rishabh Chawla Date: Sun, 5 Sep 2021 17:53:21 +0530 Subject: [PATCH 9/9] chore: add newline --- test/build/config/undefined/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/build/config/undefined/src/index.js b/test/build/config/undefined/src/index.js index 9c65d57fa6c..eb334e35b09 100644 --- a/test/build/config/undefined/src/index.js +++ b/test/build/config/undefined/src/index.js @@ -1 +1 @@ -console.log("Percy Weasley") \ No newline at end of file +console.log("Percy Weasley");