diff --git a/test/configCases/hash-length/output-filename/test.config.js b/test/configCases/hash-length/output-filename/test.config.js index e4ebd7f25..3f33a8337 100644 --- a/test/configCases/hash-length/output-filename/test.config.js +++ b/test/configCases/hash-length/output-filename/test.config.js @@ -1,17 +1,37 @@ var fs = require("fs"); require("should"); +var verifyFilenameLength = function (files, regex, expectedNameLength) { + for(var j = 0, file; j < files.length; j++) { + file = files[j]; + if (regex.test(file)) { + file.should.match(new RegExp("^.{" + expectedNameLength + "}$")); + return "./" + file; + } + } +} + module.exports = { findBundle: function(i, options) { var files = fs.readdirSync(options.output.path); + var expectedNameLength = options.amd.expectedFilenameLength; - var bundleDetect = new RegExp("^bundle" + i, "i"); - for(var j = 0, file; j < files.length; j++) { - file = files[j]; - if (bundleDetect.test(file)) { - file.should.match(new RegExp("^.{" + expectedNameLength + "}$")); - return "./" + file; - } + var bundleDetects = [{ + regex: new RegExp("^bundle" + i, "i"), + expectedNameLength: options.amd.expectedFilenameLength + }, { + regex: new RegExp("^0.bundle" + i, "i"), + expectedNameLenght: options.amd.expectedChunkFilenameLenght + } + ] + + var bundleDetect; + for (bundleDetect of bundleDetects) { + return verifyFilenameLength( + files, + bundleDetect.regex, + bundleDetect.expectedNameLength + ) } } }; diff --git a/test/configCases/hash-length/output-filename/webpack.config.js b/test/configCases/hash-length/output-filename/webpack.config.js index 52d580e5c..88df5451e 100644 --- a/test/configCases/hash-length/output-filename/webpack.config.js +++ b/test/configCases/hash-length/output-filename/webpack.config.js @@ -4,10 +4,11 @@ module.exports = [{ output: { publicPath: "/[hash:6]/", filename: "bundle0.[hash:6].js", - chunkFilename: "[id].bundle1.[hash:6].js" + chunkFilename: "[id].bundle0.[hash:6].js" }, amd: { - expectedFilenameLength: 17 + expectedFilenameLength: 17, + expectedChunkFilenameLength: 19 } }, { name: "hash in publicPath", @@ -17,7 +18,8 @@ module.exports = [{ chunkFilename: "[id].bundle1.[hash].js" }, amd: { - expectedFilenameLength: 31 + expectedFilenameLength: 31, + expectedChunkFilenameLength: 33 } }, { name: "chunkhash with length", @@ -26,7 +28,8 @@ module.exports = [{ chunkFilename: "[id].bundle2.[chunkhash:8].js" }, amd: { - expectedFilenameLength: 19 + expectedFilenameLength: 19, + expectedChunkFilenameLength: 21 } }, { name: "chunkhash", @@ -35,7 +38,8 @@ module.exports = [{ chunkFilename: "[id].bundle3.[chunkhash].js" }, amd: { - expectedFilenameLength: 31 + expectedFilenameLength: 31, + expectedChunkFilenameLength: 33 } }, { name: "hash with and without length", @@ -44,7 +48,8 @@ module.exports = [{ chunkFilename: "[id].bundle4.[hash:8].js" }, amd: { - expectedFilenameLength: 31 + expectedFilenameLength: 31, + expectedChunkFilenameLength: 21 } }, { name: "hash with length", @@ -53,7 +58,8 @@ module.exports = [{ chunkFilename: "[id].bundle5.[hash:8].js" }, amd: { - expectedFilenameLength: 17 + expectedFilenameLength: 17, + expectedChunkFilenameLength: 21 } }, { name: "chunkhash in chunkFilename ", @@ -62,12 +68,51 @@ module.exports = [{ chunkFilename: "[id].bundle6.[chunkhash:7].js" }, amd: { - expectedFilenameLength: 31 + expectedFilenameLength: 31, + expectedChunkFilenameLength: 20 }, plugins: [ new webpack.HotModuleReplacementPlugin() ] -}]; +}, { + name: "hash with length and chunkhash with length", + output: { + filename: "bundle7.[hash:7].js", + chunkFilename: "[id].bundle7.[chunkhash:7].js" + }, + target: "node", + amd: { + expectedFilenameLength: 18, + expectedChunkFilenameLength: 20 + } +}, { + name: "hash with length in chunkFilename", + output: { + filename: "bundle8.[hash].js", + chunkFilename: "[id].bundle8.[hash:7].js" + + }, + target: "node", + amd: { + expectedFilenameLength: 31, + expectedChunkFilenameLength: 20 + } +}, +{ + name: "chunkhash with length in chunkFilename", + output: { + filename: "bundle9.[hash].js", + chunkFilename: "[id].bundle9.[chunkhash:7].js" + + }, + target: "node", + amd: { + expectedFilenameLength: 31, + expectedChunkFilenameLength: 20 + } +} +]; + module.exports.forEach(function(options) { options.plugins = options.plugins || []; options.plugins.push(new webpack.DefinePlugin({