diff --git a/package-lock.json b/package-lock.json index 8af4e953..56c42306 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2763,16 +2763,16 @@ } }, "browserify-sign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", - "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, "requires": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.2", + "elliptic": "^6.5.3", "inherits": "^2.0.4", "parse-asn1": "^5.1.5", "readable-stream": "^3.6.0", @@ -5300,9 +5300,9 @@ "dev": true }, "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -5349,9 +5349,9 @@ } }, "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -5994,9 +5994,9 @@ "dev": true }, "events": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", "dev": true }, "eventsource": { @@ -13367,9 +13367,9 @@ } }, "terser": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", - "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -14072,12 +14072,12 @@ } }, "watchpack": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", - "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", "dev": true, "requires": { - "chokidar": "^3.4.0", + "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0", "watchpack-chokidar2": "^2.0.0" @@ -14095,9 +14095,9 @@ } }, "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true, "optional": true }, @@ -14112,9 +14112,9 @@ } }, "chokidar": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", - "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", + "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", "dev": true, "optional": true, "requires": { @@ -14220,9 +14220,9 @@ "dev": true }, "webpack": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", - "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz", + "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==", "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", @@ -14233,7 +14233,7 @@ "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", + "enhanced-resolve": "^4.3.0", "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.4.0", @@ -14246,7 +14246,7 @@ "schema-utils": "^1.0.0", "tapable": "^1.1.3", "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.1", + "watchpack": "^1.7.4", "webpack-sources": "^1.4.1" }, "dependencies": { diff --git a/package.json b/package.json index e82590f2..1b01b390 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "npm-run-all": "^4.1.5", "prettier": "^1.19.1", "standard-version": "^7.0.1", - "webpack": "^4.41.4", + "webpack": "^4.44.1", "webpack-cli": "^3.3.6", "webpack-dev-server": "^3.7.2" }, diff --git a/test/TestCases.test.js b/test/TestCases.test.js index 2a991dc5..246a792c 100644 --- a/test/TestCases.test.js +++ b/test/TestCases.test.js @@ -28,8 +28,23 @@ function compareDirectory(actual, expected) { describe('TestCases', () => { const casesDirectory = path.resolve(__dirname, 'cases'); const outputDirectory = path.resolve(__dirname, 'js'); + const tests = fs.readdirSync(casesDirectory).filter((test) => { + const testDirectory = path.join(casesDirectory, test); + const filterPath = path.join(testDirectory, 'test.filter.js'); - for (const directory of fs.readdirSync(casesDirectory)) { + // eslint-disable-next-line global-require, import/no-dynamic-require + if (fs.existsSync(filterPath) && !require(filterPath)()) { + describe.skip(test, () => { + it('filtered', () => {}); + }); + + return false; + } + + return true; + }); + + for (const directory of tests) { if (!/^(\.|_)/.test(directory)) { // eslint-disable-next-line no-loop-func it(`${directory} should compile to the expected result`, (done) => { diff --git a/test/cases/chunkFilename/expected/1.async.css b/test/cases/chunkFilename/expected/webpack-4/1.async.css similarity index 100% rename from test/cases/chunkFilename/expected/1.async.css rename to test/cases/chunkFilename/expected/webpack-4/1.async.css diff --git a/test/cases/chunkFilename/expected/main.css b/test/cases/chunkFilename/expected/webpack-4/main.css similarity index 100% rename from test/cases/chunkFilename/expected/main.css rename to test/cases/chunkFilename/expected/webpack-4/main.css diff --git a/test/cases/filename-without-template/expected/1.main.css b/test/cases/chunkFilename/expected/webpack-5/0.async.css similarity index 100% rename from test/cases/filename-without-template/expected/1.main.css rename to test/cases/chunkFilename/expected/webpack-5/0.async.css diff --git a/test/cases/filename-without-template/expected/main.css b/test/cases/chunkFilename/expected/webpack-5/main.css similarity index 100% rename from test/cases/filename-without-template/expected/main.css rename to test/cases/chunkFilename/expected/webpack-5/main.css diff --git a/test/cases/contenthash-multiple-entries/expected/96236f7f51b351aabd20.css b/test/cases/contenthash-multiple-entries/expected/webpack-4/96236f7f51b351aabd20.css similarity index 100% rename from test/cases/contenthash-multiple-entries/expected/96236f7f51b351aabd20.css rename to test/cases/contenthash-multiple-entries/expected/webpack-4/96236f7f51b351aabd20.css diff --git a/test/cases/contenthash-multiple-entries/expected/f22bc5a793a5a86ad253.css b/test/cases/contenthash-multiple-entries/expected/webpack-4/f22bc5a793a5a86ad253.css similarity index 100% rename from test/cases/contenthash-multiple-entries/expected/f22bc5a793a5a86ad253.css rename to test/cases/contenthash-multiple-entries/expected/webpack-4/f22bc5a793a5a86ad253.css diff --git a/test/cases/contenthash-multiple-entries/expected/webpack-5/4142dd862d1c904808b1.css b/test/cases/contenthash-multiple-entries/expected/webpack-5/4142dd862d1c904808b1.css new file mode 100644 index 00000000..95d70a8e --- /dev/null +++ b/test/cases/contenthash-multiple-entries/expected/webpack-5/4142dd862d1c904808b1.css @@ -0,0 +1,4 @@ +.styleA { + background: red; +} + diff --git a/test/cases/contenthash-multiple-entries/expected/webpack-5/79a7e1831f7f75662492.css b/test/cases/contenthash-multiple-entries/expected/webpack-5/79a7e1831f7f75662492.css new file mode 100644 index 00000000..c6856116 --- /dev/null +++ b/test/cases/contenthash-multiple-entries/expected/webpack-5/79a7e1831f7f75662492.css @@ -0,0 +1,8 @@ +.styleA { + background: red; +} + +.styleB { + background: blue; +} + diff --git a/test/cases/contenthash/expected/1.main.c4d90d38e7a606ae4d4c.css b/test/cases/contenthash/expected/webpack-4/1.main.c4d90d38e7a606ae4d4c.css similarity index 100% rename from test/cases/contenthash/expected/1.main.c4d90d38e7a606ae4d4c.css rename to test/cases/contenthash/expected/webpack-4/1.main.c4d90d38e7a606ae4d4c.css diff --git a/test/cases/contenthash/expected/2.main.64d1032b1547f22458a7.css b/test/cases/contenthash/expected/webpack-4/2.main.64d1032b1547f22458a7.css similarity index 100% rename from test/cases/contenthash/expected/2.main.64d1032b1547f22458a7.css rename to test/cases/contenthash/expected/webpack-4/2.main.64d1032b1547f22458a7.css diff --git a/test/cases/contenthash/expected/webpack-5/1.main.d229600830e975496c76.css b/test/cases/contenthash/expected/webpack-5/1.main.d229600830e975496c76.css new file mode 100644 index 00000000..cebc5c1c --- /dev/null +++ b/test/cases/contenthash/expected/webpack-5/1.main.d229600830e975496c76.css @@ -0,0 +1,4 @@ +body { + background: red; +} + diff --git a/test/cases/contenthash/expected/webpack-5/2.main.9ec449318971cd8286d6.css b/test/cases/contenthash/expected/webpack-5/2.main.9ec449318971cd8286d6.css new file mode 100644 index 00000000..ec3b88b5 --- /dev/null +++ b/test/cases/contenthash/expected/webpack-5/2.main.9ec449318971cd8286d6.css @@ -0,0 +1,4 @@ +body { + background: green; +} + diff --git a/test/cases/dependOn-multiple-files-per-entry/test.filter.js b/test/cases/dependOn-multiple-files-per-entry/test.filter.js new file mode 100644 index 00000000..6b2915e0 --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/test.filter.js @@ -0,0 +1,5 @@ +const webpack = require('webpack'); + +module.exports = () => { + return webpack.version[0] !== '4'; +}; diff --git a/test/cases/dependOn/test.filter.js b/test/cases/dependOn/test.filter.js new file mode 100644 index 00000000..6b2915e0 --- /dev/null +++ b/test/cases/dependOn/test.filter.js @@ -0,0 +1,5 @@ +const webpack = require('webpack'); + +module.exports = () => { + return webpack.version[0] !== '4'; +}; diff --git a/test/cases/filename-without-template/expected/webpack-4/1.main.css b/test/cases/filename-without-template/expected/webpack-4/1.main.css new file mode 100644 index 00000000..e665100a --- /dev/null +++ b/test/cases/filename-without-template/expected/webpack-4/1.main.css @@ -0,0 +1,4 @@ +.async { + color: red; +} + diff --git a/test/cases/filename-without-template/expected/webpack-4/main.css b/test/cases/filename-without-template/expected/webpack-4/main.css new file mode 100644 index 00000000..cebc5c1c --- /dev/null +++ b/test/cases/filename-without-template/expected/webpack-4/main.css @@ -0,0 +1,4 @@ +body { + background: red; +} + diff --git a/test/cases/filename-without-template/expected/webpack-5/0.main.css b/test/cases/filename-without-template/expected/webpack-5/0.main.css new file mode 100644 index 00000000..e665100a --- /dev/null +++ b/test/cases/filename-without-template/expected/webpack-5/0.main.css @@ -0,0 +1,4 @@ +.async { + color: red; +} + diff --git a/test/cases/filename-without-template/expected/webpack-5/main.css b/test/cases/filename-without-template/expected/webpack-5/main.css new file mode 100644 index 00000000..cebc5c1c --- /dev/null +++ b/test/cases/filename-without-template/expected/webpack-5/main.css @@ -0,0 +1,4 @@ +body { + background: red; +} + diff --git a/test/cases/js-hash/expected/style.922798e08e96756adb4a.1.css b/test/cases/js-hash/expected/webpack-4/style.922798e08e96756adb4a.1.css similarity index 100% rename from test/cases/js-hash/expected/style.922798e08e96756adb4a.1.css rename to test/cases/js-hash/expected/webpack-4/style.922798e08e96756adb4a.1.css diff --git a/test/cases/js-hash/expected/style.fe78b7a6c50df391f00c.2.css b/test/cases/js-hash/expected/webpack-4/style.fe78b7a6c50df391f00c.2.css similarity index 100% rename from test/cases/js-hash/expected/style.fe78b7a6c50df391f00c.2.css rename to test/cases/js-hash/expected/webpack-4/style.fe78b7a6c50df391f00c.2.css diff --git a/test/cases/js-hash/expected/webpack-5/style.0cf46bc14c48177dafbd.1.css b/test/cases/js-hash/expected/webpack-5/style.0cf46bc14c48177dafbd.1.css new file mode 100644 index 00000000..cc0888c4 --- /dev/null +++ b/test/cases/js-hash/expected/webpack-5/style.0cf46bc14c48177dafbd.1.css @@ -0,0 +1,4 @@ +.wX52cuPepLZcpDx5S3yYO { + background: red; +} + diff --git a/test/cases/js-hash/expected/webpack-5/style.be9f170641b100c5282b.2.css b/test/cases/js-hash/expected/webpack-5/style.be9f170641b100c5282b.2.css new file mode 100644 index 00000000..c6cd45a0 --- /dev/null +++ b/test/cases/js-hash/expected/webpack-5/style.be9f170641b100c5282b.2.css @@ -0,0 +1,5 @@ + +.wX52cuPepLZcpDx5S3yYO { + background: green; +} +