Skip to content

Commit 8f31fd1

Browse files
committed
Add more tests for hash and hashWithLength generation
1 parent d9ac043 commit 8f31fd1

File tree

2 files changed

+81
-16
lines changed

2 files changed

+81
-16
lines changed
Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,37 @@
11
var fs = require("fs");
22
require("should");
33

4+
var verifyFilenameLength = function (files, regex, expectedNameLength) {
5+
for(var j = 0, file; j < files.length; j++) {
6+
file = files[j];
7+
if (regex.test(file)) {
8+
file.should.match(new RegExp("^.{" + expectedNameLength + "}$"));
9+
return "./" + file;
10+
}
11+
}
12+
}
13+
414
module.exports = {
515
findBundle: function(i, options) {
616
var files = fs.readdirSync(options.output.path);
17+
718
var expectedNameLength = options.amd.expectedFilenameLength;
8-
var bundleDetect = new RegExp("^bundle" + i, "i");
9-
for(var j = 0, file; j < files.length; j++) {
10-
file = files[j];
11-
if (bundleDetect.test(file)) {
12-
file.should.match(new RegExp("^.{" + expectedNameLength + "}$"));
13-
return "./" + file;
14-
}
19+
var bundleDetects = [{
20+
regex: new RegExp("^bundle" + i, "i"),
21+
expectedNameLength: options.amd.expectedFilenameLength
22+
}, {
23+
regex: new RegExp("^0.bundle" + i, "i"),
24+
expectedNameLenght: options.amd.expectedChunkFilenameLenght
25+
}
26+
]
27+
28+
var bundleDetect;
29+
for (bundleDetect of bundleDetects) {
30+
return verifyFilenameLength(
31+
files,
32+
bundleDetect.regex,
33+
bundleDetect.expectedNameLength
34+
)
1535
}
1636
}
1737
};

test/configCases/hash-length/output-filename/webpack.config.js

Lines changed: 54 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ module.exports = [{
44
output: {
55
publicPath: "/[hash:6]/",
66
filename: "bundle0.[hash:6].js",
7-
chunkFilename: "[id].bundle1.[hash:6].js"
7+
chunkFilename: "[id].bundle0.[hash:6].js"
88
},
99
amd: {
10-
expectedFilenameLength: 17
10+
expectedFilenameLength: 17,
11+
expectedChunkFilenameLength: 19
1112
}
1213
}, {
1314
name: "hash in publicPath",
@@ -17,7 +18,8 @@ module.exports = [{
1718
chunkFilename: "[id].bundle1.[hash].js"
1819
},
1920
amd: {
20-
expectedFilenameLength: 31
21+
expectedFilenameLength: 31,
22+
expectedChunkFilenameLength: 33
2123
}
2224
}, {
2325
name: "chunkhash with length",
@@ -26,7 +28,8 @@ module.exports = [{
2628
chunkFilename: "[id].bundle2.[chunkhash:8].js"
2729
},
2830
amd: {
29-
expectedFilenameLength: 19
31+
expectedFilenameLength: 19,
32+
expectedChunkFilenameLength: 21
3033
}
3134
}, {
3235
name: "chunkhash",
@@ -35,7 +38,8 @@ module.exports = [{
3538
chunkFilename: "[id].bundle3.[chunkhash].js"
3639
},
3740
amd: {
38-
expectedFilenameLength: 31
41+
expectedFilenameLength: 31,
42+
expectedChunkFilenameLength: 33
3943
}
4044
}, {
4145
name: "hash with and without length",
@@ -44,7 +48,8 @@ module.exports = [{
4448
chunkFilename: "[id].bundle4.[hash:8].js"
4549
},
4650
amd: {
47-
expectedFilenameLength: 31
51+
expectedFilenameLength: 31,
52+
expectedChunkFilenameLength: 21
4853
}
4954
}, {
5055
name: "hash with length",
@@ -53,7 +58,8 @@ module.exports = [{
5358
chunkFilename: "[id].bundle5.[hash:8].js"
5459
},
5560
amd: {
56-
expectedFilenameLength: 17
61+
expectedFilenameLength: 17,
62+
expectedChunkFilenameLength: 21
5763
}
5864
}, {
5965
name: "chunkhash in chunkFilename ",
@@ -62,12 +68,51 @@ module.exports = [{
6268
chunkFilename: "[id].bundle6.[chunkhash:7].js"
6369
},
6470
amd: {
65-
expectedFilenameLength: 31
71+
expectedFilenameLength: 31,
72+
expectedChunkFilenameLength: 20
6673
},
6774
plugins: [
6875
new webpack.HotModuleReplacementPlugin()
6976
]
70-
}];
77+
}, {
78+
name: "hash with length and chunkhash with length",
79+
output: {
80+
filename: "bundle7.[hash:7].js",
81+
chunkFilename: "[id].bundle7.[chunkhash:7].js"
82+
},
83+
target: "node",
84+
amd: {
85+
expectedFilenameLength: 18,
86+
expectedChunkFilenameLength: 20
87+
}
88+
}, {
89+
name: "hash with length in chunkFilename",
90+
output: {
91+
filename: "bundle8.[hash].js",
92+
chunkFilename: "[id].bundle8.[hash:7].js"
93+
94+
},
95+
target: "node",
96+
amd: {
97+
expectedFilenameLength: 31,
98+
expectedChunkFilenameLength: 20
99+
}
100+
},
101+
{
102+
name: "chunkhash with length in chunkFilename",
103+
output: {
104+
filename: "bundle9.[hash].js",
105+
chunkFilename: "[id].bundle9.[chunkhash:7].js"
106+
107+
},
108+
target: "node",
109+
amd: {
110+
expectedFilenameLength: 31,
111+
expectedChunkFilenameLength: 20
112+
}
113+
}
114+
];
115+
71116
module.exports.forEach(function(options) {
72117
options.plugins = options.plugins || [];
73118
options.plugins.push(new webpack.DefinePlugin({

0 commit comments

Comments
 (0)