diff --git a/spec/HtmlWebpackPluginSpec.js b/spec/HtmlWebpackPluginSpec.js index 873952a..58b5167 100644 --- a/spec/HtmlWebpackPluginSpec.js +++ b/spec/HtmlWebpackPluginSpec.js @@ -38,11 +38,19 @@ function testHtmlPlugin (webpackConfig, expectedResults, outputFile, done, expec return done(); } var htmlContent = fs.readFileSync(path.join(OUTPUT_DIR, outputFile)).toString(); - + var chunksInfo; for (var i = 0; i < expectedResults.length; i++) { var expectedResult = expectedResults[i]; if (expectedResult instanceof RegExp) { expect(htmlContent).toMatch(expectedResult); + } else if (typeof expectedResult === 'object') { + if (expectedResult.type === 'chunkhash') { + if (!chunksInfo) { + chunksInfo = getChunksInfoFromStats(stats); + } + var chunkhash = chunksInfo[expectedResult.chunkName].hash; + expect(htmlContent).toContain(expectedResult.containStr.replace('%chunkhash%', chunkhash)); + } } else { expect(htmlContent).toContain(expectedResult.replace('%hash%', stats.hash)); } @@ -51,6 +59,19 @@ function testHtmlPlugin (webpackConfig, expectedResults, outputFile, done, expec }); } +function getChunksInfoFromStats (stats) { + var chunks = stats.compilation.getStats().toJson().chunks; + var chunksInfo = {}; + for (var i = 0; i < chunks.length; i++) { + var chunk = chunks[i]; + var chunkName = chunk.names[0]; + if (chunkName) { + chunksInfo[chunkName] = chunk; + } + } + return chunksInfo; +} + describe('HtmlWebpackPlugin', function () { beforeEach(function (done) { rm_rf(OUTPUT_DIR, done); @@ -258,6 +279,26 @@ describe('HtmlWebpackPlugin', function () { }, [' +