From 200ab0e3bdb6959908ffb6a3b425a375d3272e3f Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Sat, 20 Nov 2021 10:47:28 +0100 Subject: [PATCH] add test case --- test/Watch.test.js | 61 +++++++++++++++++++ .../watch/node_modules/inline-loader/index.js | 3 + .../node_modules/inline-loader/package.json | 4 ++ .../node_modules/nested-package1/index.js | 0 .../node_modules/nested-package1/package.json | 4 ++ .../watch/node_modules/package/index.js | 4 ++ .../node_modules/nested-package2/index.js | 0 .../node_modules/nested-package2/package.json | 4 ++ .../watch/node_modules/package/package.json | 4 ++ .../watch/node_modules/some-loader/index.js | 3 + .../node_modules/some-loader/package.json | 4 ++ test/fixtures/watch/src/index.js | 5 ++ test/fixtures/watch/src/local.js | 2 + 13 files changed, 98 insertions(+) create mode 100644 test/Watch.test.js create mode 100644 test/fixtures/watch/node_modules/inline-loader/index.js create mode 100644 test/fixtures/watch/node_modules/inline-loader/package.json create mode 100644 test/fixtures/watch/node_modules/nested-package1/index.js create mode 100644 test/fixtures/watch/node_modules/nested-package1/package.json create mode 100644 test/fixtures/watch/node_modules/package/index.js create mode 100644 test/fixtures/watch/node_modules/package/node_modules/nested-package2/index.js create mode 100644 test/fixtures/watch/node_modules/package/node_modules/nested-package2/package.json create mode 100644 test/fixtures/watch/node_modules/package/package.json create mode 100644 test/fixtures/watch/node_modules/some-loader/index.js create mode 100644 test/fixtures/watch/node_modules/some-loader/package.json create mode 100644 test/fixtures/watch/src/index.js create mode 100644 test/fixtures/watch/src/local.js diff --git a/test/Watch.test.js b/test/Watch.test.js new file mode 100644 index 00000000000..cba04e35eab --- /dev/null +++ b/test/Watch.test.js @@ -0,0 +1,61 @@ +"use strict"; + +require("./helpers/warmup-webpack"); + +const path = require("path"); +const webpack = require(".."); +const { createFsFromVolume, Volume } = require("memfs"); + +describe("Watch", () => { + jest.setTimeout(10000); + + it("should only compile a single time", done => { + let counterBeforeCompile = 0; + let counterDone = 0; + let counterHandler = 0; + const compiler = webpack( + { + context: path.resolve(__dirname, "fixtures/watch"), + watch: true, + mode: "development", + snapshot: { + managedPaths: [/^(.+?[\\/]node_modules[\\/])/] + }, + experiments: { + futureDefaults: true + }, + module: { + // unsafeCache: false, + rules: [ + { + test: /\.js$/, + use: "some-loader" + } + ] + }, + plugins: [ + c => { + c.hooks.beforeCompile.tap("test", () => { + counterBeforeCompile++; + }); + c.hooks.done.tap("test", () => { + counterDone++; + }); + } + ] + }, + (err, stats) => { + if (err) return done(err); + if (stats.hasErrors()) return done(new Error(stats.toString())); + counterHandler++; + } + ); + compiler.outputFileSystem = createFsFromVolume(new Volume()); + setTimeout(() => { + expect(counterBeforeCompile).toBe(1); + expect(counterDone).toBe(1); + expect(counterHandler).toBe(1); + compiler.close(done); + }, 5000); + }); +}); diff --git a/test/fixtures/watch/node_modules/inline-loader/index.js b/test/fixtures/watch/node_modules/inline-loader/index.js new file mode 100644 index 00000000000..d444337558e --- /dev/null +++ b/test/fixtures/watch/node_modules/inline-loader/index.js @@ -0,0 +1,3 @@ +module.exports = function(x) { + return x; +} diff --git a/test/fixtures/watch/node_modules/inline-loader/package.json b/test/fixtures/watch/node_modules/inline-loader/package.json new file mode 100644 index 00000000000..4f747245710 --- /dev/null +++ b/test/fixtures/watch/node_modules/inline-loader/package.json @@ -0,0 +1,4 @@ +{ + "name": "inline-loader", + "version": "1.0.0" +} diff --git a/test/fixtures/watch/node_modules/nested-package1/index.js b/test/fixtures/watch/node_modules/nested-package1/index.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/fixtures/watch/node_modules/nested-package1/package.json b/test/fixtures/watch/node_modules/nested-package1/package.json new file mode 100644 index 00000000000..77e1c5ddfea --- /dev/null +++ b/test/fixtures/watch/node_modules/nested-package1/package.json @@ -0,0 +1,4 @@ +{ + "name": "nested-package1", + "version": "1.0.0" +} diff --git a/test/fixtures/watch/node_modules/package/index.js b/test/fixtures/watch/node_modules/package/index.js new file mode 100644 index 00000000000..e1e724de532 --- /dev/null +++ b/test/fixtures/watch/node_modules/package/index.js @@ -0,0 +1,4 @@ +import "nested-package1"; +import "nested-package2"; +import "inline-loader!nested-package1"; +import "inline-loader!nested-package2"; diff --git a/test/fixtures/watch/node_modules/package/node_modules/nested-package2/index.js b/test/fixtures/watch/node_modules/package/node_modules/nested-package2/index.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/fixtures/watch/node_modules/package/node_modules/nested-package2/package.json b/test/fixtures/watch/node_modules/package/node_modules/nested-package2/package.json new file mode 100644 index 00000000000..99b7bef613e --- /dev/null +++ b/test/fixtures/watch/node_modules/package/node_modules/nested-package2/package.json @@ -0,0 +1,4 @@ +{ + "name": "nested-package2", + "version": "1.0.0" +} diff --git a/test/fixtures/watch/node_modules/package/package.json b/test/fixtures/watch/node_modules/package/package.json new file mode 100644 index 00000000000..75b93e3b25a --- /dev/null +++ b/test/fixtures/watch/node_modules/package/package.json @@ -0,0 +1,4 @@ +{ + "name": "package", + "version": "1.0.0" +} diff --git a/test/fixtures/watch/node_modules/some-loader/index.js b/test/fixtures/watch/node_modules/some-loader/index.js new file mode 100644 index 00000000000..d444337558e --- /dev/null +++ b/test/fixtures/watch/node_modules/some-loader/index.js @@ -0,0 +1,3 @@ +module.exports = function(x) { + return x; +} diff --git a/test/fixtures/watch/node_modules/some-loader/package.json b/test/fixtures/watch/node_modules/some-loader/package.json new file mode 100644 index 00000000000..f05476029b9 --- /dev/null +++ b/test/fixtures/watch/node_modules/some-loader/package.json @@ -0,0 +1,4 @@ +{ + "name": "some-loader", + "version": "1.0.0" +} diff --git a/test/fixtures/watch/src/index.js b/test/fixtures/watch/src/index.js new file mode 100644 index 00000000000..b79b14a3a0e --- /dev/null +++ b/test/fixtures/watch/src/index.js @@ -0,0 +1,5 @@ +import "package"; +import "inline-loader!package"; + +import "./local"; +import "inline-loader!./local"; diff --git a/test/fixtures/watch/src/local.js b/test/fixtures/watch/src/local.js new file mode 100644 index 00000000000..67d46e2b228 --- /dev/null +++ b/test/fixtures/watch/src/local.js @@ -0,0 +1,2 @@ +import "package"; +import "inline-loader!package";