Skip to content

Commit 2374b60

Browse files
Use separate test fixture for #797 test
1 parent 8769cf0 commit 2374b60

4 files changed

+47
-3
lines changed

tests/_files/ClassThatUsesAnonymousClass.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?php declare(strict_types=1);
2-
namespace SebastianBergmann\CodeCoverage\ClassThatUsesAnonymousClass\TestFixture;
2+
namespace SebastianBergmann\CodeCoverage\TestFixture;
33

44
final class ClassThatUsesAnonymousClass
55
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php declare(strict_types=1);
2+
namespace SebastianBergmann\CodeCoverage\TestFixture\ClassWithNameThatIsPartOfItsNamespacesName;
3+
4+
final class ClassWithNameThatIsPartOfItsNamespacesName
5+
{
6+
}

tests/tests/FilterTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ protected function setUp(): void
3737
TEST_FILES_PATH . 'BankAccount.php',
3838
TEST_FILES_PATH . 'BankAccountTest.php',
3939
TEST_FILES_PATH . 'ClassThatUsesAnonymousClass.php',
40+
TEST_FILES_PATH . 'ClassWithNameThatIsPartOfItsNamespacesName.php',
4041
TEST_FILES_PATH . 'CoverageClassExtendedTest.php',
4142
TEST_FILES_PATH . 'CoverageClassTest.php',
4243
TEST_FILES_PATH . 'CoverageFunctionParenthesesTest.php',

tests/tests/StaticAnalysis/CodeUnitFindingVisitorTest.php

+39-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
use PhpParser\NodeVisitor\ParentConnectingVisitor;
1616
use PhpParser\ParserFactory;
1717
use PHPUnit\Framework\TestCase;
18-
use SebastianBergmann\CodeCoverage\ClassThatUsesAnonymousClass\TestFixture\ClassThatUsesAnonymousClass;
18+
use SebastianBergmann\CodeCoverage\TestFixture\ClassThatUsesAnonymousClass;
19+
use SebastianBergmann\CodeCoverage\TestFixture\ClassWithNameThatIsPartOfItsNamespacesName\ClassWithNameThatIsPartOfItsNamespacesName;
1920

2021
/**
2122
* @covers \SebastianBergmann\CodeCoverage\StaticAnalysis\CodeUnitFindingVisitor
@@ -55,7 +56,7 @@ public function testDoesNotFindAnonymousClass(): void
5556

5657
$this->assertSame('ClassThatUsesAnonymousClass', $class['name']);
5758
$this->assertSame(ClassThatUsesAnonymousClass::class, $class['namespacedName']);
58-
$this->assertSame('SebastianBergmann\CodeCoverage\ClassThatUsesAnonymousClass\TestFixture', $class['namespace']);
59+
$this->assertSame('SebastianBergmann\CodeCoverage\TestFixture', $class['namespace']);
5960
$this->assertSame(4, $class['startLine']);
6061
$this->assertSame(17, $class['endLine']);
6162

@@ -71,4 +72,40 @@ public function testDoesNotFindAnonymousClass(): void
7172
$this->assertSame(16, $method['endLine']);
7273
$this->assertSame(1, $method['ccn']);
7374
}
75+
76+
/**
77+
* @ticket https://github.com/sebastianbergmann/php-code-coverage/pull/797
78+
*/
79+
public function testHandlesClassWithNameThatIsPartOfItsNamespacesName(): void
80+
{
81+
$nodes = (new ParserFactory)->create(ParserFactory::PREFER_PHP7)->parse(
82+
file_get_contents(__DIR__ . '/../../_files/ClassWithNameThatIsPartOfItsNamespacesName.php')
83+
);
84+
85+
assert($nodes !== null);
86+
87+
$traverser = new NodeTraverser;
88+
$codeUnitFindingVisitor = new CodeUnitFindingVisitor;
89+
90+
$traverser->addVisitor(new NameResolver);
91+
$traverser->addVisitor(new ParentConnectingVisitor);
92+
$traverser->addVisitor($codeUnitFindingVisitor);
93+
94+
/* @noinspection UnusedFunctionResultInspection */
95+
$traverser->traverse($nodes);
96+
97+
$this->assertEmpty($codeUnitFindingVisitor->functions());
98+
$this->assertEmpty($codeUnitFindingVisitor->traits());
99+
100+
$classes = $codeUnitFindingVisitor->classes();
101+
102+
$this->assertCount(1, $classes);
103+
$this->assertArrayHasKey(ClassWithNameThatIsPartOfItsNamespacesName::class, $classes);
104+
105+
$class = $classes[ClassWithNameThatIsPartOfItsNamespacesName::class];
106+
107+
$this->assertSame('ClassWithNameThatIsPartOfItsNamespacesName', $class['name']);
108+
$this->assertSame(ClassWithNameThatIsPartOfItsNamespacesName::class, $class['namespacedName']);
109+
$this->assertSame('SebastianBergmann\CodeCoverage\TestFixture\ClassWithNameThatIsPartOfItsNamespacesName', $class['namespace']);
110+
}
74111
}

0 commit comments

Comments
 (0)