From c8847ecf0c0c7a2b6ff85e49b65d70643221f133 Mon Sep 17 00:00:00 2001 From: Rishabh Chawla Date: Wed, 22 Sep 2021 16:57:35 +0530 Subject: [PATCH] refactor: config tests (#2939) * fix: absent config test * chore: basic config description * chore: update default js config test * chore: update dot webpack config test * chore: update dot webpack webpackfile test * chore: fix description of cjs config * chore: update mjs config * chore: default config with mode * chore: fix empty test * chore: update empty array * chore: update empty function descriptions * chore: update empty promise * chore: update config array error * chore: update no config * chore: update invalid path file * chore: update config error test * chore: fix funtional config test * chore: invalid export * chore: update multiple config test * chore: update config test * chore: update no code test * chore: update no config array test * chore: update no config object test --- test/build/config/absent/config-absent.test.js | 4 ++-- test/build/config/absent/webpack.config-absent.js | 9 --------- test/build/config/basic/basic-config.test.js | 2 +- .../defaults/basic-config/default-js-config.test.js | 4 ++-- .../defaults/cjs-config/default-cjs-config.test.js | 4 ++-- ...on-config.test.js => dot-webpack-webpackfile.test.js} | 4 ++-- ...ev-none-config.test.js => dot-webpack-config.test.js} | 4 ++-- .../defaults/mjs-config/default-mjs-config.test.js | 4 ++-- ...e-config.test.js => default-config-with-mode.test.js} | 4 ++-- test/build/config/empty-array/empty-array.test.js | 4 ++-- test/build/config/empty-function/empty-function.test.js | 4 ++-- test/build/config/empty-promise/empty-promise.test.js | 4 ++-- test/build/config/empty/empty.test.js | 2 +- test/build/config/error-array/config-array-error.test.js | 2 +- test/build/config/error-commonjs/config-error.test.js | 2 +- test/build/config/function/functional-config.test.js | 4 ++-- test/build/config/invalid-export/invalid-export.test.js | 4 ++-- test/build/config/invalid-path/a.js | 1 - test/build/config/invalid-path/invalid-path.test.js | 4 ++-- test/build/config/invalid-path/webpack.config.js | 9 --------- .../multiple-with-one-compilation.test.js | 4 ++-- test/build/config/multiple/multiple-config.test.js | 4 ++-- test/build/config/no-code/no-code.test.js | 2 +- .../build/config/no-config-array/no-config-array.test.js | 4 ++-- .../config/no-config-object/no-config-object.test.js | 2 +- 25 files changed, 38 insertions(+), 57 deletions(-) delete mode 100644 test/build/config/absent/webpack.config-absent.js rename test/build/config/defaults/dot-webpack-directory-webpackfile/{multiple-location-config.test.js => dot-webpack-webpackfile.test.js} (76%) rename test/build/config/defaults/dot-webpack-directory/{dev-none-config.test.js => dot-webpack-config.test.js} (74%) rename test/build/config/defaults/with-mode/{multiple-config.test.js => default-config-with-mode.test.js} (75%) delete mode 100644 test/build/config/invalid-path/a.js delete mode 100644 test/build/config/invalid-path/webpack.config.js diff --git a/test/build/config/absent/config-absent.test.js b/test/build/config/absent/config-absent.test.js index d79d5f7ddfe..11887430263 100644 --- a/test/build/config/absent/config-absent.test.js +++ b/test/build/config/absent/config-absent.test.js @@ -3,8 +3,8 @@ const path = require("path"); const { run } = require("../../../utils/test-utils"); -describe("Config:", () => { - it("supplied config file is absent", async () => { +describe("config flag with non existent file", () => { + it("should throw error with non-existent configuration file", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "-c", path.resolve(__dirname, "webpack.config.js"), diff --git a/test/build/config/absent/webpack.config-absent.js b/test/build/config/absent/webpack.config-absent.js deleted file mode 100644 index 9043cafbd4b..00000000000 --- a/test/build/config/absent/webpack.config-absent.js +++ /dev/null @@ -1,9 +0,0 @@ -const { resolve } = require("path"); - -module.exports = { - entry: "./a.js", - output: { - path: resolve(__dirname, "binary"), - filename: "a.bundle.js", - }, -}; diff --git a/test/build/config/basic/basic-config.test.js b/test/build/config/basic/basic-config.test.js index 180041bdce4..0b294f2466d 100644 --- a/test/build/config/basic/basic-config.test.js +++ b/test/build/config/basic/basic-config.test.js @@ -4,7 +4,7 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); describe("basic config file", () => { - it("is able to understand and parse a very basic configuration file", async () => { + it("should build and not throw error with a basic configuration file", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "-c", resolve(__dirname, "webpack.config.js"), diff --git a/test/build/config/defaults/basic-config/default-js-config.test.js b/test/build/config/defaults/basic-config/default-js-config.test.js index 6613c24f019..159999fe4b5 100644 --- a/test/build/config/defaults/basic-config/default-js-config.test.js +++ b/test/build/config/defaults/basic-config/default-js-config.test.js @@ -2,8 +2,8 @@ const fs = require("fs"); const path = require("path"); const { run } = require("../../../../utils/test-utils"); -describe("Zero Config", () => { - it("runs when config is present but not supplied via flag", async () => { +describe("default config", () => { + it("should build and not throw error when config is present but not supplied via flag", async () => { const { exitCode, stderr, stdout } = await run(__dirname, []); expect(exitCode).toEqual(0); diff --git a/test/build/config/defaults/cjs-config/default-cjs-config.test.js b/test/build/config/defaults/cjs-config/default-cjs-config.test.js index c5009fadc4b..d69f808547e 100644 --- a/test/build/config/defaults/cjs-config/default-cjs-config.test.js +++ b/test/build/config/defaults/cjs-config/default-cjs-config.test.js @@ -2,8 +2,8 @@ const fs = require("fs"); const path = require("path"); const { run } = require("../../../../utils/test-utils"); -describe("Default Config:", () => { - it("Should be able to pick cjs config by default", async () => { +describe("default config with cjs extention", () => { + it("should build and not throw error with cjs config by default", async () => { const { exitCode, stderr, stdout } = await run(__dirname, []); expect(exitCode).toEqual(0); diff --git a/test/build/config/defaults/dot-webpack-directory-webpackfile/multiple-location-config.test.js b/test/build/config/defaults/dot-webpack-directory-webpackfile/dot-webpack-webpackfile.test.js similarity index 76% rename from test/build/config/defaults/dot-webpack-directory-webpackfile/multiple-location-config.test.js rename to test/build/config/defaults/dot-webpack-directory-webpackfile/dot-webpack-webpackfile.test.js index 9a4960a5928..267c53daea9 100644 --- a/test/build/config/defaults/dot-webpack-directory-webpackfile/multiple-location-config.test.js +++ b/test/build/config/defaults/dot-webpack-directory-webpackfile/dot-webpack-webpackfile.test.js @@ -3,8 +3,8 @@ const { existsSync } = require("fs"); const { resolve } = require("path"); const { run } = require("../../../../utils/test-utils"); -describe("multiple dev config files with webpack.config.js", () => { - it("Uses webpack.config.development.js", async () => { +describe(".webpack webpackfile", () => { + it("should build and not throw with .webpack webpackfile", async () => { const { stdout, stderr, exitCode } = await run(__dirname, []); expect(exitCode).toEqual(0); expect(stderr).toBeFalsy(); diff --git a/test/build/config/defaults/dot-webpack-directory/dev-none-config.test.js b/test/build/config/defaults/dot-webpack-directory/dot-webpack-config.test.js similarity index 74% rename from test/build/config/defaults/dot-webpack-directory/dev-none-config.test.js rename to test/build/config/defaults/dot-webpack-directory/dot-webpack-config.test.js index 466ba729d2e..0b210a6d268 100644 --- a/test/build/config/defaults/dot-webpack-directory/dev-none-config.test.js +++ b/test/build/config/defaults/dot-webpack-directory/dot-webpack-config.test.js @@ -3,8 +3,8 @@ const { existsSync } = require("fs"); const { resolve } = require("path"); const { run } = require("../../../../utils/test-utils"); -describe("multiple config files", () => { - it("Uses dev config when both dev and none are present", async () => { +describe(".webpack configuration file", () => { + it("should build and not throw error when config is present in .webpack", async () => { const { stdout, stderr, exitCode } = await run(__dirname, []); expect(exitCode).toEqual(0); expect(stderr).toBeFalsy(); diff --git a/test/build/config/defaults/mjs-config/default-mjs-config.test.js b/test/build/config/defaults/mjs-config/default-mjs-config.test.js index 883c29ae7b5..ff3558d04cb 100644 --- a/test/build/config/defaults/mjs-config/default-mjs-config.test.js +++ b/test/build/config/defaults/mjs-config/default-mjs-config.test.js @@ -2,8 +2,8 @@ const fs = require("fs"); const path = require("path"); const { run } = require("../../../../utils/test-utils"); -describe("Default Config:", () => { - it("Should be able to pick mjs config by default", async () => { +describe("default config with mjs extention", () => { + it("should build and not throw error with mjs config by default", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [], { env: { WEBPACK_CLI_FORCE_LOAD_ESM_CONFIG: true }, }); diff --git a/test/build/config/defaults/with-mode/multiple-config.test.js b/test/build/config/defaults/with-mode/default-config-with-mode.test.js similarity index 75% rename from test/build/config/defaults/with-mode/multiple-config.test.js rename to test/build/config/defaults/with-mode/default-config-with-mode.test.js index 189ca39770b..e93b2912638 100644 --- a/test/build/config/defaults/with-mode/multiple-config.test.js +++ b/test/build/config/defaults/with-mode/default-config-with-mode.test.js @@ -3,8 +3,8 @@ const { existsSync } = require("fs"); const { resolve } = require("path"); const { run } = require("../../../../utils/test-utils"); -describe("multiple config files", () => { - it("Uses dev config when development mode is supplied", async () => { +describe("default config with mode from cli", () => { + it("should build and not throw error with development mode supplied", async () => { const { stdout, stderr, exitCode } = await run(__dirname, ["--mode", "development"]); expect(exitCode).toEqual(0); expect(stderr).toBeFalsy(); diff --git a/test/build/config/empty-array/empty-array.test.js b/test/build/config/empty-array/empty-array.test.js index eb87fab2587..18143e32245 100644 --- a/test/build/config/empty-array/empty-array.test.js +++ b/test/build/config/empty-array/empty-array.test.js @@ -2,8 +2,8 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); -describe("config flag with empty config file", () => { - it("should throw error with no configuration or index file", async () => { +describe("config flag with config file returning empty array", () => { + it("should build and 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/empty-function/empty-function.test.js b/test/build/config/empty-function/empty-function.test.js index eb87fab2587..b5033346ef2 100644 --- a/test/build/config/empty-function/empty-function.test.js +++ b/test/build/config/empty-function/empty-function.test.js @@ -2,8 +2,8 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); -describe("config flag with empty config file", () => { - it("should throw error with no configuration or index file", async () => { +describe("config file with function returning empty object", () => { + it("should build and 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/empty-promise/empty-promise.test.js b/test/build/config/empty-promise/empty-promise.test.js index eb87fab2587..1f841389596 100644 --- a/test/build/config/empty-promise/empty-promise.test.js +++ b/test/build/config/empty-promise/empty-promise.test.js @@ -2,8 +2,8 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); -describe("config flag with empty config file", () => { - it("should throw error with no configuration or index file", async () => { +describe("config file with promise resolving empty object", () => { + it("should build and 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/empty/empty.test.js b/test/build/config/empty/empty.test.js index eb87fab2587..48cc8d287a3 100644 --- a/test/build/config/empty/empty.test.js +++ b/test/build/config/empty/empty.test.js @@ -3,7 +3,7 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); describe("config flag with empty config file", () => { - it("should throw error with no configuration or index file", async () => { + it("should build and 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/error-array/config-array-error.test.js b/test/build/config/error-array/config-array-error.test.js index a16f4e4f507..1db01c95366 100644 --- a/test/build/config/error-array/config-array-error.test.js +++ b/test/build/config/error-array/config-array-error.test.js @@ -1,7 +1,7 @@ "use strict"; const { run } = require("../../../utils/test-utils"); -describe("array config error", () => { +describe("config with invalid array syntax", () => { it("should throw syntax error and exit with non-zero exit code when even 1 object has syntax error", async () => { const { exitCode, stderr, stdout } = await run(__dirname, ["-c", "./webpack.config.js"]); expect(exitCode).toBe(2); diff --git a/test/build/config/error-commonjs/config-error.test.js b/test/build/config/error-commonjs/config-error.test.js index e5baa11acde..4abf26ab8f1 100644 --- a/test/build/config/error-commonjs/config-error.test.js +++ b/test/build/config/error-commonjs/config-error.test.js @@ -2,7 +2,7 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); -describe("config error", () => { +describe("config with errors", () => { it("should throw error with invalid configuration", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "-c", diff --git a/test/build/config/function/functional-config.test.js b/test/build/config/function/functional-config.test.js index d657588d99a..913d6c442c7 100644 --- a/test/build/config/function/functional-config.test.js +++ b/test/build/config/function/functional-config.test.js @@ -5,7 +5,7 @@ const { existsSync } = require("fs"); const { run } = require("../../../utils/test-utils"); describe("functional config", () => { - it("should work as expected in case of single config", async () => { + it("should build and not throw error with single configuration", async () => { const { stderr, stdout, exitCode } = await run(__dirname, [ "--config", resolve(__dirname, "single-webpack.config.js"), @@ -17,7 +17,7 @@ describe("functional config", () => { expect(existsSync(resolve(__dirname, "./dist/dist-single.js"))).toBeTruthy(); }); - it("should work as expected in case of multiple config", async () => { + it("should build and not throw errors with multiple configurations", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "--config", resolve(__dirname, "multi-webpack.config.js"), diff --git a/test/build/config/invalid-export/invalid-export.test.js b/test/build/config/invalid-export/invalid-export.test.js index e47054e71df..7ebab784945 100644 --- a/test/build/config/invalid-export/invalid-export.test.js +++ b/test/build/config/invalid-export/invalid-export.test.js @@ -2,8 +2,8 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); -describe("invalid export", () => { - it("should throw error with no configuration or index file", async () => { +describe("config with invalid export", () => { + it("should throw error with configuration exporting invalid configuration", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "-c", resolve(__dirname, "webpack.config.js"), diff --git a/test/build/config/invalid-path/a.js b/test/build/config/invalid-path/a.js deleted file mode 100644 index 0e9a8dc5145..00000000000 --- a/test/build/config/invalid-path/a.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = "a.js"; diff --git a/test/build/config/invalid-path/invalid-path.test.js b/test/build/config/invalid-path/invalid-path.test.js index d54df8c455e..4b9287e0532 100644 --- a/test/build/config/invalid-path/invalid-path.test.js +++ b/test/build/config/invalid-path/invalid-path.test.js @@ -2,8 +2,8 @@ const path = require("path"); const { run } = require("../../../utils/test-utils"); -describe("basic config file", () => { - it("is able to understand and parse a very basic configuration file", async () => { +describe("config with invalid path supplied by CLI", () => { + it("should throw error when invalid configuration path is passed to cli", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "-c", path.resolve(__dirname, "invalid-webpack.config.js"), diff --git a/test/build/config/invalid-path/webpack.config.js b/test/build/config/invalid-path/webpack.config.js deleted file mode 100644 index 9043cafbd4b..00000000000 --- a/test/build/config/invalid-path/webpack.config.js +++ /dev/null @@ -1,9 +0,0 @@ -const { resolve } = require("path"); - -module.exports = { - entry: "./a.js", - output: { - path: resolve(__dirname, "binary"), - filename: "a.bundle.js", - }, -}; diff --git a/test/build/config/multiple-with-one-compilation/multiple-with-one-compilation.test.js b/test/build/config/multiple-with-one-compilation/multiple-with-one-compilation.test.js index 180041bdce4..a15c12f5864 100644 --- a/test/build/config/multiple-with-one-compilation/multiple-with-one-compilation.test.js +++ b/test/build/config/multiple-with-one-compilation/multiple-with-one-compilation.test.js @@ -3,8 +3,8 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); -describe("basic config file", () => { - it("is able to understand and parse a very basic configuration file", async () => { +describe("config with single config in array", () => { + it("should build and not throw error with configuration file exporting single configuration in array", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "-c", resolve(__dirname, "webpack.config.js"), diff --git a/test/build/config/multiple/multiple-config.test.js b/test/build/config/multiple/multiple-config.test.js index c63293b0641..2ebe537929e 100644 --- a/test/build/config/multiple/multiple-config.test.js +++ b/test/build/config/multiple/multiple-config.test.js @@ -2,8 +2,8 @@ const { run } = require("../../../utils/test-utils"); -describe("Multiple config flag: ", () => { - it("spawns multiple compilers for multiple configs", async () => { +describe("multiple configuration files", () => { + it("should not throw error and spawn compilers for each configuration file", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "--config", "webpack1.config.js", diff --git a/test/build/config/no-code/no-code.test.js b/test/build/config/no-code/no-code.test.js index e9515123b1c..a38c2986c7b 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 not throw error with no configuration or index file", async () => { + it("should build and 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/no-config-array/no-config-array.test.js b/test/build/config/no-config-array/no-config-array.test.js index aa56ae7267c..bbbeb4209c2 100644 --- a/test/build/config/no-config-array/no-config-array.test.js +++ b/test/build/config/no-config-array/no-config-array.test.js @@ -3,8 +3,8 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); -describe("no configs in array", () => { - it("is able to understand and parse a very basic configuration file", async () => { +describe("config with empty array", () => { + it("should build and not throw error with empty configuration", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "-c", resolve(__dirname, "webpack.config.js"), diff --git a/test/build/config/no-config-object/no-config-object.test.js b/test/build/config/no-config-object/no-config-object.test.js index e88b1339d03..663117d8f00 100644 --- a/test/build/config/no-config-object/no-config-object.test.js +++ b/test/build/config/no-config-object/no-config-object.test.js @@ -4,7 +4,7 @@ const { resolve } = require("path"); const { run } = require("../../../utils/test-utils"); describe("empty config", () => { - it("should work", async () => { + it("should build and not throw error with empty object as configuration", async () => { const { exitCode, stderr, stdout } = await run(__dirname, [ "-c", resolve(__dirname, "webpack.config.js"),