mirror of https://github.com/webpack/webpack.git
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
"use strict";
|
|
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
const createHash = require("../../../lib/util/createHash");
|
|
|
|
const hashedFiles = {
|
|
"file.jpg": (a) => a.name.endsWith(".jpg"),
|
|
"file.png": (a) => a.name.endsWith(".png")
|
|
};
|
|
|
|
module.exports = {
|
|
validate(stats) {
|
|
for (let i = 0; i < 4; i += 2) {
|
|
const a = stats.stats[i + 0].toJson({
|
|
assets: true
|
|
});
|
|
const b = stats.stats[i + 1].toJson({
|
|
assets: true
|
|
});
|
|
expect(Object.keys(a.assetsByChunkName)).toHaveLength(5);
|
|
expect(a.assetsByChunkName.main).toEqual(b.assetsByChunkName.main);
|
|
expect(a.assetsByChunkName.lazy).toEqual(b.assetsByChunkName.lazy);
|
|
expect(a.assetsByChunkName.a).toEqual(b.assetsByChunkName.a);
|
|
expect(a.assetsByChunkName.b).toEqual(b.assetsByChunkName.b);
|
|
expect(a.assetsByChunkName.a).toEqual(a.assetsByChunkName.b);
|
|
}
|
|
for (let i = 0; i < 4; i++) {
|
|
const statsData = stats.stats[i].toJson({
|
|
assets: true
|
|
});
|
|
for (const name of Object.keys(hashedFiles)) {
|
|
const asset = statsData.assets.find(hashedFiles[name]);
|
|
expect(asset).toBeDefined();
|
|
const content = fs.readFileSync(path.resolve(__dirname, "a", name));
|
|
const hash = createHash("md4")
|
|
.update(content)
|
|
.digest("hex")
|
|
.slice(0, 20);
|
|
expect(asset.name.slice(0, 20)).toBe(hash);
|
|
}
|
|
}
|
|
}
|
|
};
|