Add more tests for hash and hashWithLength generation

This commit is contained in:
Jure Triglav 2017-01-18 14:16:11 +01:00
parent d9ac04380e
commit 8f31fd18cc
2 changed files with 81 additions and 16 deletions

View File

@ -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
)
}
}
};

View File

@ -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({