Skip to content

Commit

Permalink
[TASK] Add some more tests for parsing comments (#739)
Browse files Browse the repository at this point in the history
Also add a skipped test for the broken behavior that currently
is blocking Emogrifier.

This is the 8.x backport of #738.
  • Loading branch information
oliverklee authored Oct 23, 2024
1 parent df0ac7c commit 404aff3
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions tests/RuleSet/DeclarationBlockTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
namespace Sabberworm\CSS\Tests\RuleSet;

use PHPUnit\Framework\TestCase;
use Sabberworm\CSS\OutputFormat;
use Sabberworm\CSS\Parser;
use Sabberworm\CSS\Rule\Rule;
use Sabberworm\CSS\Settings as ParserSettings;
use Sabberworm\CSS\Value\Size;

/**
Expand Down Expand Up @@ -450,4 +452,59 @@ public function orderOfElementsMatchingOriginalOrderAfterExpandingShorthands()
array_map('strval', $oDeclaration->getRulesAssoc())
);
}

/**
* @return array<string, array{0: non-empty-string, 1: non-empty-string}>
*/
public static function declarationBlocksWithCommentsProvider()
{
return [
'CSS comments with one asterisk' => ['p {color: #000;/* black */}', 'p {color: #000;}'],
'CSS comments with two asterisks' => ['p {color: #000;/** black */}', 'p {color: #000;}'],
];
}

/**
* @test
*
* @param string $cssWithComments
* @param string $cssWithoutComments
*
* @dataProvider declarationBlocksWithCommentsProvider
*/
public function canRemoveCommentsFromRulesUsingLenientParsing(
$cssWithComments,
$cssWithoutComments
) {
$parserSettings = ParserSettings::create()->withLenientParsing(true);
$document = (new Parser($cssWithComments, $parserSettings))->parse();

$outputFormat = (new OutputFormat())->setRenderComments(false);
$renderedDocument = $document->render($outputFormat);

self::assertSame($cssWithoutComments, $renderedDocument);
}

/**
* @test
*
* @param string $cssWithComments
* @param string $cssWithoutComments
*
* @dataProvider declarationBlocksWithCommentsProvider
*/
public function canRemoveCommentsFromRulesUsingStrictParsing(
$cssWithComments,
$cssWithoutComments
) {
self::markTestSkipped('This currently crashes, and we need to fix it.');

$parserSettings = ParserSettings::create()->withLenientParsing(false);
$document = (new Parser($cssWithComments, $parserSettings))->parse();

$outputFormat = (new OutputFormat())->setRenderComments(false);
$renderedDocument = $document->render($outputFormat);

self::assertSame($cssWithoutComments, $renderedDocument);
}
}

0 comments on commit 404aff3

Please sign in to comment.