2 declare(strict_types = 1);
18 use PhpParser\NodeTraverser;
19 use PhpParser\NodeVisitor\NameResolver;
20 use PhpParser\ParserFactory;
23 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
28 class ConstantMatcherTest
extends UnitTestCase
33 public function hitsFromFixtureAreFound()
35 $parser = (
new ParserFactory())->create(ParserFactory::PREFER_PHP7);
36 $fixtureFile = __DIR__ .
'/Fixtures/ConstantMatcherFixture.php';
37 $statements =
$parser->parse(file_get_contents($fixtureFile));
39 $traverser =
new NodeTraverser();
40 $traverser->addVisitor(
new NameResolver());
41 $traverser->addVisitor(
new GeneratorClassesResolver());
46 'Breaking-82162-GlobalErrorConstantsRemoved.rst',
50 $subject =
new ConstantMatcher($configuration);
51 $traverser->addVisitor($subject);
52 $traverser->traverse($statements);
53 $expectedHitLineNumbers = [
56 $actualHitLineNumbers = [];
57 foreach ($subject->getMatches() as $hit) {
58 $actualHitLineNumbers[] = $hit[
'line'];
60 $this->assertEquals($expectedHitLineNumbers, $actualHitLineNumbers);
66 public function matchesReturnsExpectedRestFilesDataProvider()
69 'a straight match' => [
96 public function matchesReturnsExpectedRestFiles(array $configuration,
string $phpCode, array $expected)
98 $parser = (
new ParserFactory())->create(ParserFactory::ONLY_PHP7);
99 $statements =
$parser->parse($phpCode);
101 $subject =
new ConstantMatcher($configuration);
103 $traverser =
new NodeTraverser();
104 $traverser->addVisitor(
new NameResolver());
105 $traverser->addVisitor($subject);
106 $traverser->traverse($statements);
108 $result = $subject->getMatches();
109 $this->assertSame($expected[0][
'restFiles'], $result[0][
'restFiles']);