Skip a font face named in a comment when trimming the fallback
Found while doing plan step 46: withoutFontFace() searched the raw bundle, so the `@font-face` that foundation/base.css's and error-page.css's header comments mention read as the rule. Each cut from inside its comment to the end of the next block and left the comment open, so the no-build fallback lost base.css's html rule and icon.css's rules. The search and the brace count now read Stylesheets::mask(), and only tokens/font.css's real block leaves. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
70c983b7bb
commit
0a028b158f
@@ -406,3 +406,25 @@ it('inlines beside a build the error layout\'s bundle, which holds no font face,
|
||||
->not->toMatch('/\burl\(/i')
|
||||
->toContain('@layer material.reset, material.tokens, material.base, material.layout, material.components, material.text, material.visibility;');
|
||||
});
|
||||
|
||||
/**
|
||||
* The bundle's comments name `@font-face` too (foundation/base.css's and error-page.css's headers).
|
||||
* Read as the rule, each mention cut from inside its comment to the end of the next balanced block
|
||||
* and left the comment open, so base.css's `html` rule and icon.css's rules went missing from the
|
||||
* fallback. Only the real block may leave: what remains is the bundle, rule for rule, without it.
|
||||
*/
|
||||
it('drops only the real font face from the fallback, not the rules after a comment that names one', function () {
|
||||
$files = [
|
||||
realpath(__DIR__.'/../../resources/css/foundation.css'),
|
||||
realpath(__DIR__.'/../../resources/css/components/error-page.css'),
|
||||
];
|
||||
$withoutComments = fn (string $css): string => (string) preg_replace('~/\*.*?\*/~s', '', $css);
|
||||
$bundle = Stylesheets::bundle($files);
|
||||
|
||||
expect(substr_count($withoutComments($bundle), '@font-face'))->toBe(1)
|
||||
->and(substr_count($bundle, '@font-face'))->toBeGreaterThan(1)
|
||||
->and($withoutComments((string) ErrorPage::fallbackStyles()))
|
||||
->toStartWith($withoutComments((string) preg_replace('/@font-face\s*\{[^{}]*\}/', '', $bundle)))
|
||||
->toMatch('/html \{\s*background-color: var\(--md-sys-color-surface\);/')
|
||||
->toContain('[data-md-icon] {');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user