From 17211ffa4e1b0cd3bfe4af5907fb2f92f024b58e Mon Sep 17 00:00:00 2001 From: "alexander.akait" Date: Thu, 15 Jun 2023 19:48:55 +0300 Subject: [PATCH 1/5] fix: require.context and layer --- lib/ContextModule.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/ContextModule.js b/lib/ContextModule.js index 5209d340ac2..e2e277955e5 100644 --- a/lib/ContextModule.js +++ b/lib/ContextModule.js @@ -231,6 +231,9 @@ class ContextModule extends Module { } else if (this.options.namespaceObject) { identifier += "|namespace object"; } + if (this.options.layer) { + identifier += `|layer: ${this.options.layer}`; + } return identifier; } @@ -300,6 +303,9 @@ class ContextModule extends Module { } else if (this.options.namespaceObject) { identifier += " namespace object"; } + if (this.options.layer) { + identifier += ` layer: ${this.options.layer}`; + } return identifier; } From bf28e94eac3230f8c6132cb7bcb6acb0bc808b86 Mon Sep 17 00:00:00 2001 From: "alexander.akait" Date: Thu, 15 Jun 2023 20:56:55 +0300 Subject: [PATCH 2/5] test: update --- lib/ContextModule.js | 7 +- .../StatsTestCases.basictest.js.snap | 92 +++++++++---------- .../context-independence/webpack.config.js | 2 +- 3 files changed, 49 insertions(+), 52 deletions(-) diff --git a/lib/ContextModule.js b/lib/ContextModule.js index e2e277955e5..d99b1cec5c7 100644 --- a/lib/ContextModule.js +++ b/lib/ContextModule.js @@ -231,8 +231,8 @@ class ContextModule extends Module { } else if (this.options.namespaceObject) { identifier += "|namespace object"; } - if (this.options.layer) { - identifier += `|layer: ${this.options.layer}`; + if (this.layer) { + identifier += `|layer: ${this.layer}`; } return identifier; @@ -303,9 +303,6 @@ class ContextModule extends Module { } else if (this.options.namespaceObject) { identifier += " namespace object"; } - if (this.options.layer) { - identifier += ` layer: ${this.options.layer}`; - } return identifier; } diff --git a/test/__snapshots__/StatsTestCases.basictest.js.snap b/test/__snapshots__/StatsTestCases.basictest.js.snap index 43e8177af99..68d694bc891 100644 --- a/test/__snapshots__/StatsTestCases.basictest.js.snap +++ b/test/__snapshots__/StatsTestCases.basictest.js.snap @@ -751,92 +751,92 @@ exports[`StatsTestCases should print correct stats for concat-and-sideeffects 1` `; exports[`StatsTestCases should print correct stats for context-independence 1`] = ` -"asset main-300a2543aac9d526a381.js 12.8 KiB [emitted] [immutable] (name: main) - sourceMap main-300a2543aac9d526a381.js.map 11.1 KiB [emitted] [dev] (auxiliary name: main) -asset 695-d9846ea7920868a759cd.js 455 bytes [emitted] [immutable] - sourceMap 695-d9846ea7920868a759cd.js.map 347 bytes [emitted] [dev] +"asset main-ecc9d576a3029cd740b4.js 12.8 KiB [emitted] [immutable] (name: main) + sourceMap main-ecc9d576a3029cd740b4.js.map 11.1 KiB [emitted] [dev] (auxiliary name: main) +asset 401-13c47112ce7932f2d2da.js 455 bytes [emitted] [immutable] + sourceMap 401-13c47112ce7932f2d2da.js.map 347 bytes [emitted] [dev] runtime modules 6.61 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by path ./a/*.js 266 bytes - ./a/index.js (in Xdir/context-independence/a) 200 bytes [built] [code generated] - ./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated] + ./a/index.js (in my-layer) 200 bytes [built] [code generated] + ./a/chunk.js + 1 modules (in my-layer) 66 bytes [built] [code generated] modules by path ./a/c/ 216 bytes - ./a/c/ ./a/cc/ eager ^\\\\.\\\\/.*$ namespace object (in Xdir/context-independence/a) 198 bytes [built] [code generated] - ./a/c/a.js (in Xdir/context-independence/a) 18 bytes [optional] [built] [code generated] - ./a/cc/b.js (in Xdir/context-independence/a) 18 bytes [optional] [built] [code generated] + ./a/c/ ./a/cc/ eager ^\\\\.\\\\/.*$ namespace object (in my-layer) 198 bytes [built] [code generated] + ./a/c/a.js (in my-layer) 18 bytes [optional] [built] [code generated] + ./a/cc/b.js (in my-layer) 18 bytes [optional] [built] [code generated] webpack x.x.x compiled successfully in X ms -asset main-300a2543aac9d526a381.js 12.8 KiB [emitted] [immutable] (name: main) - sourceMap main-300a2543aac9d526a381.js.map 11.1 KiB [emitted] [dev] (auxiliary name: main) -asset 695-d9846ea7920868a759cd.js 455 bytes [emitted] [immutable] - sourceMap 695-d9846ea7920868a759cd.js.map 347 bytes [emitted] [dev] +asset main-ecc9d576a3029cd740b4.js 12.8 KiB [emitted] [immutable] (name: main) + sourceMap main-ecc9d576a3029cd740b4.js.map 11.1 KiB [emitted] [dev] (auxiliary name: main) +asset 401-13c47112ce7932f2d2da.js 455 bytes [emitted] [immutable] + sourceMap 401-13c47112ce7932f2d2da.js.map 347 bytes [emitted] [dev] runtime modules 6.61 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by path ./b/*.js 266 bytes - ./b/index.js (in Xdir/context-independence/b) 200 bytes [built] [code generated] - ./b/chunk.js + 1 modules (in Xdir/context-independence/b) 66 bytes [built] [code generated] + ./b/index.js (in my-layer) 200 bytes [built] [code generated] + ./b/chunk.js + 1 modules (in my-layer) 66 bytes [built] [code generated] modules by path ./b/c/ 216 bytes - ./b/c/ ./b/cc/ eager ^\\\\.\\\\/.*$ namespace object (in Xdir/context-independence/b) 198 bytes [built] [code generated] - ./b/c/a.js (in Xdir/context-independence/b) 18 bytes [optional] [built] [code generated] - ./b/cc/b.js (in Xdir/context-independence/b) 18 bytes [optional] [built] [code generated] + ./b/c/ ./b/cc/ eager ^\\\\.\\\\/.*$ namespace object (in my-layer) 198 bytes [built] [code generated] + ./b/c/a.js (in my-layer) 18 bytes [optional] [built] [code generated] + ./b/cc/b.js (in my-layer) 18 bytes [optional] [built] [code generated] webpack x.x.x compiled successfully in X ms -asset main-28a424a328c5fd8fe5bc.js 14.9 KiB [emitted] [immutable] (name: main) -asset 695-3a54289b6e0375f1e753.js 1.51 KiB [emitted] [immutable] +asset main-3758721949997d4d6c27.js 14.9 KiB [emitted] [immutable] (name: main) +asset 401-b6ce7fcc3598f30709fb.js 1.51 KiB [emitted] [immutable] runtime modules 6.61 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by path ./a/*.js 266 bytes - ./a/index.js (in Xdir/context-independence/a) 200 bytes [built] [code generated] - ./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated] + ./a/index.js (in my-layer) 200 bytes [built] [code generated] + ./a/chunk.js + 1 modules (in my-layer) 66 bytes [built] [code generated] modules by path ./a/c/ 216 bytes - ./a/c/ ./a/cc/ eager ^\\\\.\\\\/.*$ namespace object (in Xdir/context-independence/a) 198 bytes [built] [code generated] - ./a/c/a.js (in Xdir/context-independence/a) 18 bytes [optional] [built] [code generated] - ./a/cc/b.js (in Xdir/context-independence/a) 18 bytes [optional] [built] [code generated] + ./a/c/ ./a/cc/ eager ^\\\\.\\\\/.*$ namespace object (in my-layer) 198 bytes [built] [code generated] + ./a/c/a.js (in my-layer) 18 bytes [optional] [built] [code generated] + ./a/cc/b.js (in my-layer) 18 bytes [optional] [built] [code generated] webpack x.x.x compiled successfully in X ms -asset main-28a424a328c5fd8fe5bc.js 14.9 KiB [emitted] [immutable] (name: main) -asset 695-3a54289b6e0375f1e753.js 1.51 KiB [emitted] [immutable] +asset main-3758721949997d4d6c27.js 14.9 KiB [emitted] [immutable] (name: main) +asset 401-b6ce7fcc3598f30709fb.js 1.51 KiB [emitted] [immutable] runtime modules 6.61 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by path ./b/*.js 266 bytes - ./b/index.js (in Xdir/context-independence/b) 200 bytes [built] [code generated] - ./b/chunk.js + 1 modules (in Xdir/context-independence/b) 66 bytes [built] [code generated] + ./b/index.js (in my-layer) 200 bytes [built] [code generated] + ./b/chunk.js + 1 modules (in my-layer) 66 bytes [built] [code generated] modules by path ./b/c/ 216 bytes - ./b/c/ ./b/cc/ eager ^\\\\.\\\\/.*$ namespace object (in Xdir/context-independence/b) 198 bytes [built] [code generated] - ./b/c/a.js (in Xdir/context-independence/b) 18 bytes [optional] [built] [code generated] - ./b/cc/b.js (in Xdir/context-independence/b) 18 bytes [optional] [built] [code generated] + ./b/c/ ./b/cc/ eager ^\\\\.\\\\/.*$ namespace object (in my-layer) 198 bytes [built] [code generated] + ./b/c/a.js (in my-layer) 18 bytes [optional] [built] [code generated] + ./b/cc/b.js (in my-layer) 18 bytes [optional] [built] [code generated] webpack x.x.x compiled successfully in X ms -asset main-4a6f8afd60ce404bbe3a.js 13.8 KiB [emitted] [immutable] (name: main) -asset 695-ace208366ce0ce2556ef.js 1.01 KiB [emitted] [immutable] +asset main-5863fe93a8f1642e8b5f.js 13.8 KiB [emitted] [immutable] (name: main) +asset 401-663e81b0f603cec214a5.js 1.01 KiB [emitted] [immutable] runtime modules 6.61 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by path ./a/*.js 266 bytes - ./a/index.js (in Xdir/context-independence/a) 200 bytes [built] [code generated] - ./a/chunk.js + 1 modules (in Xdir/context-independence/a) 66 bytes [built] [code generated] + ./a/index.js (in my-layer) 200 bytes [built] [code generated] + ./a/chunk.js + 1 modules (in my-layer) 66 bytes [built] [code generated] modules by path ./a/c/ 216 bytes - ./a/c/ ./a/cc/ eager ^\\\\.\\\\/.*$ namespace object (in Xdir/context-independence/a) 198 bytes [built] [code generated] - ./a/c/a.js (in Xdir/context-independence/a) 18 bytes [optional] [built] [code generated] - ./a/cc/b.js (in Xdir/context-independence/a) 18 bytes [optional] [built] [code generated] + ./a/c/ ./a/cc/ eager ^\\\\.\\\\/.*$ namespace object (in my-layer) 198 bytes [built] [code generated] + ./a/c/a.js (in my-layer) 18 bytes [optional] [built] [code generated] + ./a/cc/b.js (in my-layer) 18 bytes [optional] [built] [code generated] webpack x.x.x compiled successfully in X ms -asset main-4a6f8afd60ce404bbe3a.js 13.8 KiB [emitted] [immutable] (name: main) -asset 695-ace208366ce0ce2556ef.js 1.01 KiB [emitted] [immutable] +asset main-5863fe93a8f1642e8b5f.js 13.8 KiB [emitted] [immutable] (name: main) +asset 401-663e81b0f603cec214a5.js 1.01 KiB [emitted] [immutable] runtime modules 6.61 KiB 9 modules orphan modules 19 bytes [orphan] 1 module built modules 500 bytes [built] modules by path ./b/*.js 266 bytes - ./b/index.js (in Xdir/context-independence/b) 200 bytes [built] [code generated] - ./b/chunk.js + 1 modules (in Xdir/context-independence/b) 66 bytes [built] [code generated] + ./b/index.js (in my-layer) 200 bytes [built] [code generated] + ./b/chunk.js + 1 modules (in my-layer) 66 bytes [built] [code generated] modules by path ./b/c/ 216 bytes - ./b/c/ ./b/cc/ eager ^\\\\.\\\\/.*$ namespace object (in Xdir/context-independence/b) 198 bytes [built] [code generated] - ./b/c/a.js (in Xdir/context-independence/b) 18 bytes [optional] [built] [code generated] - ./b/cc/b.js (in Xdir/context-independence/b) 18 bytes [optional] [built] [code generated] + ./b/c/ ./b/cc/ eager ^\\\\.\\\\/.*$ namespace object (in my-layer) 198 bytes [built] [code generated] + ./b/c/a.js (in my-layer) 18 bytes [optional] [built] [code generated] + ./b/cc/b.js (in my-layer) 18 bytes [optional] [built] [code generated] webpack x.x.x compiled successfully in X ms" `; diff --git a/test/statsCases/context-independence/webpack.config.js b/test/statsCases/context-independence/webpack.config.js index 4d1b9a68b6d..87a0ba0fe9f 100644 --- a/test/statsCases/context-independence/webpack.config.js +++ b/test/statsCases/context-independence/webpack.config.js @@ -26,7 +26,7 @@ const base = (name, devtool) => ({ entry: { main: { import: "./index", - layer: path.resolve(__dirname, name) + layer: "my-layer" } }, context: path.resolve(__dirname, name), From c24eb04d140ea731dc12ff55a994692fe618a2ee Mon Sep 17 00:00:00 2001 From: "alexander.akait" Date: Thu, 15 Jun 2023 23:19:32 +0300 Subject: [PATCH 3/5] test: added --- .../configCases/layer/context-and-css/dark.js | 8 +++ .../layer/context-and-css/light.js | 9 +++ .../layer/context-and-css/test.config.js | 11 ++++ .../layer/context-and-css/test1/shared.less | 3 + .../layer/context-and-css/test2/shared.less | 3 + .../layer/context-and-css/webpack.config.js | 47 ++++++++++++++++ test/configCases/layer/context/dark.js | 12 ++++ test/configCases/layer/context/light.js | 12 ++++ test/configCases/layer/context/test.config.js | 5 ++ .../layer/context/test1/shared.less | 3 + .../layer/context/test2/shared.less | 3 + .../layer/context/webpack.config.js | 55 +++++++++++++++++++ 12 files changed, 171 insertions(+) create mode 100644 test/configCases/layer/context-and-css/dark.js create mode 100644 test/configCases/layer/context-and-css/light.js create mode 100644 test/configCases/layer/context-and-css/test.config.js create mode 100644 test/configCases/layer/context-and-css/test1/shared.less create mode 100644 test/configCases/layer/context-and-css/test2/shared.less create mode 100644 test/configCases/layer/context-and-css/webpack.config.js create mode 100644 test/configCases/layer/context/dark.js create mode 100644 test/configCases/layer/context/light.js create mode 100644 test/configCases/layer/context/test.config.js create mode 100644 test/configCases/layer/context/test1/shared.less create mode 100644 test/configCases/layer/context/test2/shared.less create mode 100644 test/configCases/layer/context/webpack.config.js diff --git a/test/configCases/layer/context-and-css/dark.js b/test/configCases/layer/context-and-css/dark.js new file mode 100644 index 00000000000..a5b2b132375 --- /dev/null +++ b/test/configCases/layer/context-and-css/dark.js @@ -0,0 +1,8 @@ +it("should contain only black", function() { + require.context('./test1', true, /\.less$/); + require('./test2/shared.less'); + /*const style = getComputedStyle(document.body); + + expect(style.color).toBe(" black"); + expect(style.background).toBe(" black");*/ +}); diff --git a/test/configCases/layer/context-and-css/light.js b/test/configCases/layer/context-and-css/light.js new file mode 100644 index 00000000000..f06f28d7b9d --- /dev/null +++ b/test/configCases/layer/context-and-css/light.js @@ -0,0 +1,9 @@ +require.context('./test1', true, /\.less$/); +require('./test2/shared.less'); + +it("should contain only white", function() { + const style = getComputedStyle(document.body); + + expect(style.color).toBe(" white"); + expect(style.background).toBe(" white"); +}); diff --git a/test/configCases/layer/context-and-css/test.config.js b/test/configCases/layer/context-and-css/test.config.js new file mode 100644 index 00000000000..c8e482d9552 --- /dev/null +++ b/test/configCases/layer/context-and-css/test.config.js @@ -0,0 +1,11 @@ +module.exports = { + moduleScope(scope) { + const light = scope.window.document.createElement("link"); + light.rel = "stylesheet"; + light.href = "light.css"; + scope.window.document.head.appendChild(light); + }, + findBundle: function () { + return ["./light.js"]; + } +}; diff --git a/test/configCases/layer/context-and-css/test1/shared.less b/test/configCases/layer/context-and-css/test1/shared.less new file mode 100644 index 00000000000..64b2437783c --- /dev/null +++ b/test/configCases/layer/context-and-css/test1/shared.less @@ -0,0 +1,3 @@ +body { + color: @color; +} diff --git a/test/configCases/layer/context-and-css/test2/shared.less b/test/configCases/layer/context-and-css/test2/shared.less new file mode 100644 index 00000000000..ecfb8e74245 --- /dev/null +++ b/test/configCases/layer/context-and-css/test2/shared.less @@ -0,0 +1,3 @@ +body { + background: @color; +} diff --git a/test/configCases/layer/context-and-css/webpack.config.js b/test/configCases/layer/context-and-css/webpack.config.js new file mode 100644 index 00000000000..d9fa8a79b0c --- /dev/null +++ b/test/configCases/layer/context-and-css/webpack.config.js @@ -0,0 +1,47 @@ +/** @type {import("../../../../").Configuration} */ +module.exports = { + target: "web", + entry: { + light: { import: "./light.js", layer: "light" }, + dark: { import: "./dark.js", layer: "dark" } + }, + experiments: { + layers: true, + css: true + }, + output: { + filename: "[name].js" + }, + module: { + rules: [ + { + test: /\.less$/i, + type: "css/auto", + oneOf: [ + { + issuerLayer: "light", + use: [ + { + loader: "less-loader", + options: { + additionalData: "@color: white;" + } + } + ] + }, + { + issuerLayer: "dark", + use: [ + { + loader: "less-loader", + options: { + additionalData: "@color: black;" + } + } + ] + } + ] + } + ] + } +}; diff --git a/test/configCases/layer/context/dark.js b/test/configCases/layer/context/dark.js new file mode 100644 index 00000000000..f2975a25f24 --- /dev/null +++ b/test/configCases/layer/context/dark.js @@ -0,0 +1,12 @@ +require.context('./test1', true, /\.less$/); +require('./test2/shared.less'); + +it("should contain only black", function() { + const fs = require("fs"); + const path = require("path"); + + const source = fs.readFileSync(path.join(__dirname, "dark.css"), "utf-8"); + + expect(source.match(/black/g)).toHaveLength(2); + expect(source).not.toContain("white"); +}); diff --git a/test/configCases/layer/context/light.js b/test/configCases/layer/context/light.js new file mode 100644 index 00000000000..e3c9335a95b --- /dev/null +++ b/test/configCases/layer/context/light.js @@ -0,0 +1,12 @@ +require.context('./test1', true, /\.less$/); +require('./test2/shared.less'); + +it("should contain only white", function() { + const fs = require("fs"); + const path = require("path"); + + const source = fs.readFileSync(path.join(__dirname, "light.css"), "utf-8"); + + expect(source.match(/white/g)).toHaveLength(2); + expect(source).not.toContain("black"); +}); diff --git a/test/configCases/layer/context/test.config.js b/test/configCases/layer/context/test.config.js new file mode 100644 index 00000000000..5cb963d9e0f --- /dev/null +++ b/test/configCases/layer/context/test.config.js @@ -0,0 +1,5 @@ +module.exports = { + findBundle: function () { + return ["./light.js", "./dark.js"]; + } +}; diff --git a/test/configCases/layer/context/test1/shared.less b/test/configCases/layer/context/test1/shared.less new file mode 100644 index 00000000000..aeef901bc65 --- /dev/null +++ b/test/configCases/layer/context/test1/shared.less @@ -0,0 +1,3 @@ +.test1 { + color: @color; +} diff --git a/test/configCases/layer/context/test2/shared.less b/test/configCases/layer/context/test2/shared.less new file mode 100644 index 00000000000..2cbc230e5a1 --- /dev/null +++ b/test/configCases/layer/context/test2/shared.less @@ -0,0 +1,3 @@ +.test2 { + color: @color; +} diff --git a/test/configCases/layer/context/webpack.config.js b/test/configCases/layer/context/webpack.config.js new file mode 100644 index 00000000000..41ed5eb13ee --- /dev/null +++ b/test/configCases/layer/context/webpack.config.js @@ -0,0 +1,55 @@ +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); + +/** @type {import("../../../../").Configuration} */ +module.exports = { + entry: { + light: { import: "./light.js", layer: "light" }, + dark: { import: "./dark.js", layer: "dark" } + }, + experiments: { + layers: true + }, + output: { + filename: "[name].js" + }, + plugins: [ + new MiniCssExtractPlugin({ + filename: "[name].css" + }) + ], + module: { + rules: [ + { + test: /\.less$/i, + oneOf: [ + { + issuerLayer: "light", + use: [ + MiniCssExtractPlugin.loader, + "css-loader", + { + loader: "less-loader", + options: { + additionalData: "@color: white;" + } + } + ] + }, + { + issuerLayer: "dark", + use: [ + MiniCssExtractPlugin.loader, + "css-loader", + { + loader: "less-loader", + options: { + additionalData: "@color: black;" + } + } + ] + } + ] + } + ] + } +}; From 39b883ec4fafb9f190514fc68d3f7cbcc0cc5066 Mon Sep 17 00:00:00 2001 From: "alexander.akait" Date: Fri, 16 Jun 2023 00:39:16 +0300 Subject: [PATCH 4/5] test: fixed --- test/configCases/layer/context-and-css/dark.js | 11 ++++++----- test/configCases/layer/context-and-css/light.js | 4 ++-- .../configCases/layer/context-and-css/test.config.js | 6 +++++- .../layer/context-and-css/test1/shared.less | 2 +- .../layer/context-and-css/test2/shared.less | 2 +- .../layer/context-and-css/webpack.config.js | 9 +++++++-- test/helpers/FakeDocument.js | 12 ++++++++++-- 7 files changed, 32 insertions(+), 14 deletions(-) diff --git a/test/configCases/layer/context-and-css/dark.js b/test/configCases/layer/context-and-css/dark.js index a5b2b132375..fa2ef56f2c3 100644 --- a/test/configCases/layer/context-and-css/dark.js +++ b/test/configCases/layer/context-and-css/dark.js @@ -1,8 +1,9 @@ +require.context('./test1', true, /\.less$/); +require('./test2/shared.less'); + it("should contain only black", function() { - require.context('./test1', true, /\.less$/); - require('./test2/shared.less'); - /*const style = getComputedStyle(document.body); + const style = getComputedStyle(document.body); - expect(style.color).toBe(" black"); - expect(style.background).toBe(" black");*/ + expect(style["color-dark"]).toBe(" black"); + expect(style["background-dark"]).toBe(" black"); }); diff --git a/test/configCases/layer/context-and-css/light.js b/test/configCases/layer/context-and-css/light.js index f06f28d7b9d..2f10430cf7d 100644 --- a/test/configCases/layer/context-and-css/light.js +++ b/test/configCases/layer/context-and-css/light.js @@ -4,6 +4,6 @@ require('./test2/shared.less'); it("should contain only white", function() { const style = getComputedStyle(document.body); - expect(style.color).toBe(" white"); - expect(style.background).toBe(" white"); + expect(style["color-light"]).toBe(" white"); + expect(style["background-light"]).toBe(" white"); }); diff --git a/test/configCases/layer/context-and-css/test.config.js b/test/configCases/layer/context-and-css/test.config.js index c8e482d9552..19e44b49d42 100644 --- a/test/configCases/layer/context-and-css/test.config.js +++ b/test/configCases/layer/context-and-css/test.config.js @@ -4,8 +4,12 @@ module.exports = { light.rel = "stylesheet"; light.href = "light.css"; scope.window.document.head.appendChild(light); + const dark = scope.window.document.createElement("link"); + dark.rel = "stylesheet"; + dark.href = "dark.css"; + scope.window.document.head.appendChild(dark); }, findBundle: function () { - return ["./light.js"]; + return ["./runtime.js", "./light.js", "./dark.js"]; } }; diff --git a/test/configCases/layer/context-and-css/test1/shared.less b/test/configCases/layer/context-and-css/test1/shared.less index 64b2437783c..c1e0175c929 100644 --- a/test/configCases/layer/context-and-css/test1/shared.less +++ b/test/configCases/layer/context-and-css/test1/shared.less @@ -1,3 +1,3 @@ body { - color: @color; + @{property-color}: @color; } diff --git a/test/configCases/layer/context-and-css/test2/shared.less b/test/configCases/layer/context-and-css/test2/shared.less index ecfb8e74245..4c32372804b 100644 --- a/test/configCases/layer/context-and-css/test2/shared.less +++ b/test/configCases/layer/context-and-css/test2/shared.less @@ -1,3 +1,3 @@ body { - background: @color; + @{property-background}: @color; } diff --git a/test/configCases/layer/context-and-css/webpack.config.js b/test/configCases/layer/context-and-css/webpack.config.js index d9fa8a79b0c..838b847cc99 100644 --- a/test/configCases/layer/context-and-css/webpack.config.js +++ b/test/configCases/layer/context-and-css/webpack.config.js @@ -9,6 +9,9 @@ module.exports = { layers: true, css: true }, + optimization: { + runtimeChunk: "single" + }, output: { filename: "[name].js" }, @@ -24,7 +27,8 @@ module.exports = { { loader: "less-loader", options: { - additionalData: "@color: white;" + additionalData: + "@color: white; @property-color: color-light; @property-background: background-light;" } } ] @@ -35,7 +39,8 @@ module.exports = { { loader: "less-loader", options: { - additionalData: "@color: black;" + additionalData: + "@color: black; @property-color: color-dark; @property-background: background-dark;" } } ] diff --git a/test/helpers/FakeDocument.js b/test/helpers/FakeDocument.js index c74b9f5779a..9efb22e78ca 100644 --- a/test/helpers/FakeDocument.js +++ b/test/helpers/FakeDocument.js @@ -89,7 +89,11 @@ class FakeElement { } setAttribute(name, value) { - this._attributes[name] = value; + if (this._type === "link" && name === "href") { + this.href(value); + } else { + this._attributes[name] = value; + } } removeAttribute(name) { @@ -97,7 +101,11 @@ class FakeElement { } getAttribute(name) { - return this._attributes[name]; + if (this._type === "link" && name === "href") { + return this.href; + } else { + return this._attributes[name]; + } } _toRealUrl(value) { From 1af62939a2d8a63729611f78158e62a66bb40760 Mon Sep 17 00:00:00 2001 From: "alexander.akait" Date: Fri, 16 Jun 2023 00:46:39 +0300 Subject: [PATCH 5/5] test: fix name and bug in test --- .../{runtimeissue => runtime-issue}/asyncChunk.js | 0 .../{runtimeissue => runtime-issue}/asyncChunk2.js | 0 .../css/{runtimeissue => runtime-issue}/entry1.js | 0 .../css/{runtimeissue => runtime-issue}/entry2.js | 0 .../css/{runtimeissue => runtime-issue}/img.png | Bin .../css/{runtimeissue => runtime-issue}/share.js | 0 .../css/{runtimeissue => runtime-issue}/styles.js | 0 .../{runtimeissue => runtime-issue}/test.config.js | 2 +- .../{runtimeissue => runtime-issue}/test.module.css | 0 .../webpack.config.js | 0 10 files changed, 1 insertion(+), 1 deletion(-) rename test/configCases/css/{runtimeissue => runtime-issue}/asyncChunk.js (100%) rename test/configCases/css/{runtimeissue => runtime-issue}/asyncChunk2.js (100%) rename test/configCases/css/{runtimeissue => runtime-issue}/entry1.js (100%) rename test/configCases/css/{runtimeissue => runtime-issue}/entry2.js (100%) rename test/configCases/css/{runtimeissue => runtime-issue}/img.png (100%) rename test/configCases/css/{runtimeissue => runtime-issue}/share.js (100%) rename test/configCases/css/{runtimeissue => runtime-issue}/styles.js (100%) rename test/configCases/css/{runtimeissue => runtime-issue}/test.config.js (93%) rename test/configCases/css/{runtimeissue => runtime-issue}/test.module.css (100%) rename test/configCases/css/{runtimeissue => runtime-issue}/webpack.config.js (100%) diff --git a/test/configCases/css/runtimeissue/asyncChunk.js b/test/configCases/css/runtime-issue/asyncChunk.js similarity index 100% rename from test/configCases/css/runtimeissue/asyncChunk.js rename to test/configCases/css/runtime-issue/asyncChunk.js diff --git a/test/configCases/css/runtimeissue/asyncChunk2.js b/test/configCases/css/runtime-issue/asyncChunk2.js similarity index 100% rename from test/configCases/css/runtimeissue/asyncChunk2.js rename to test/configCases/css/runtime-issue/asyncChunk2.js diff --git a/test/configCases/css/runtimeissue/entry1.js b/test/configCases/css/runtime-issue/entry1.js similarity index 100% rename from test/configCases/css/runtimeissue/entry1.js rename to test/configCases/css/runtime-issue/entry1.js diff --git a/test/configCases/css/runtimeissue/entry2.js b/test/configCases/css/runtime-issue/entry2.js similarity index 100% rename from test/configCases/css/runtimeissue/entry2.js rename to test/configCases/css/runtime-issue/entry2.js diff --git a/test/configCases/css/runtimeissue/img.png b/test/configCases/css/runtime-issue/img.png similarity index 100% rename from test/configCases/css/runtimeissue/img.png rename to test/configCases/css/runtime-issue/img.png diff --git a/test/configCases/css/runtimeissue/share.js b/test/configCases/css/runtime-issue/share.js similarity index 100% rename from test/configCases/css/runtimeissue/share.js rename to test/configCases/css/runtime-issue/share.js diff --git a/test/configCases/css/runtimeissue/styles.js b/test/configCases/css/runtime-issue/styles.js similarity index 100% rename from test/configCases/css/runtimeissue/styles.js rename to test/configCases/css/runtime-issue/styles.js diff --git a/test/configCases/css/runtimeissue/test.config.js b/test/configCases/css/runtime-issue/test.config.js similarity index 93% rename from test/configCases/css/runtimeissue/test.config.js rename to test/configCases/css/runtime-issue/test.config.js index b38305b5fc3..e5f431241af 100644 --- a/test/configCases/css/runtimeissue/test.config.js +++ b/test/configCases/css/runtime-issue/test.config.js @@ -6,7 +6,7 @@ module.exports = { scope.window.document.head.appendChild(link1); const link2 = scope.window.document.createElement("link"); link2.rel = "stylesheet"; - link2.href = "asyncChunk_js2.css"; + link2.href = "asyncChunk2_js.css"; scope.window.document.head.appendChild(link2); }, findBundle: function (i, options) { diff --git a/test/configCases/css/runtimeissue/test.module.css b/test/configCases/css/runtime-issue/test.module.css similarity index 100% rename from test/configCases/css/runtimeissue/test.module.css rename to test/configCases/css/runtime-issue/test.module.css diff --git a/test/configCases/css/runtimeissue/webpack.config.js b/test/configCases/css/runtime-issue/webpack.config.js similarity index 100% rename from test/configCases/css/runtimeissue/webpack.config.js rename to test/configCases/css/runtime-issue/webpack.config.js