From cc952e684d100a1d97c09d3f47722e1edee1c774 Mon Sep 17 00:00:00 2001 From: Andreas Lind Date: Sun, 26 Jul 2020 22:18:34 +0200 Subject: [PATCH] Don't crash in the reporting code when some pages don't make use of a font that's used on others --- lib/subsetFonts.js | 4 +--- test/subfont.js | 22 +++++++++++++++++++++ testdata/noFontUsageOnOnePage/OpenSans.ttf | Bin 0 -> 26488 bytes testdata/noFontUsageOnOnePage/first.html | 21 ++++++++++++++++++++ testdata/noFontUsageOnOnePage/second.html | 21 ++++++++++++++++++++ 5 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 testdata/noFontUsageOnOnePage/OpenSans.ttf create mode 100644 testdata/noFontUsageOnOnePage/first.html create mode 100644 testdata/noFontUsageOnOnePage/second.html diff --git a/lib/subsetFonts.js b/lib/subsetFonts.js index 7515d654..bc3f368d 100644 --- a/lib/subsetFonts.js +++ b/lib/subsetFonts.js @@ -865,9 +865,7 @@ async function subsetFonts( original: originalCodepoints, used: usedCodepoints, unused: unusedCodepoints, - page: fontUsage.pageText - ? getCodepoints(fontUsage.pageText) - : undefined, + page: getCodepoints(fontUsage.pageText), }; } } diff --git a/test/subfont.js b/test/subfont.js index 2aa2c57c..0efe05ea 100644 --- a/test/subfont.js +++ b/test/subfont.js @@ -468,6 +468,28 @@ describe('subfont', function () { ); }); }); + + // Regression test for https://gitter.im/assetgraph/assetgraph?at=5f1ddc1afe6ecd2888764496 + it('should not crash in the reporting code when a font has no text on a given page', async function () { + const root = encodeURI( + `file://${pathModule.resolve( + __dirname, + '..', + 'testdata', + 'noFontUsageOnOnePage' + )}` + ); + + await subfont( + { + silent: true, + dryRun: true, + root, + inputFiles: [`${root}/first.html`, `${root}/second.html`], + }, + mockConsole + ); + }); }); describe('when subsetPerPage is true', function () { diff --git a/testdata/noFontUsageOnOnePage/OpenSans.ttf b/testdata/noFontUsageOnOnePage/OpenSans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9d4e8e526d7ebe3630d019a88c53ad2a86b8d74b GIT binary patch literal 26488 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 Iuw(WA0f + + + + + + +

Foo

+ + diff --git a/testdata/noFontUsageOnOnePage/second.html b/testdata/noFontUsageOnOnePage/second.html new file mode 100644 index 00000000..46a94294 --- /dev/null +++ b/testdata/noFontUsageOnOnePage/second.html @@ -0,0 +1,21 @@ + + + + + + + +

+ +