Skip to content
This repository was archived by the owner on Jan 30, 2020. It is now read-only.

Commit 484e5c8

Browse files
committed
Enhancement: Assert that locator ignores anonymous classes
1 parent 6f07480 commit 484e5c8

File tree

3 files changed

+63
-0
lines changed

3 files changed

+63
-0
lines changed

test/ClassFileLocatorTest.php

+26
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
namespace ZendTest\File;
1111

1212
use Zend\File\ClassFileLocator;
13+
use Zend\File\PhpClassFile;
1314

1415
/**
1516
* Test class for Zend\File\ClassFileLocator
@@ -150,4 +151,29 @@ public function testIterationShouldNotCountFQCNScalarResolutionConstantAsClass()
150151
$this->assertCount(1, $file->getClasses());
151152
}
152153
}
154+
155+
/**
156+
* @requires PHP 7.1
157+
*/
158+
public function testIgnoresAnonymousClasses()
159+
{
160+
$classFileLocator = new ClassFileLocator(__DIR__ . '/TestAsset/Anonymous');
161+
162+
$classFiles = \iterator_to_array($classFileLocator);
163+
164+
$this->assertCount(1, $classFiles);
165+
166+
$classNames = \array_reduce($classFiles, function (array $classNames, PhpClassFile $classFile) {
167+
return \array_merge(
168+
$classNames,
169+
$classFile->getClasses()
170+
);
171+
}, []);
172+
173+
$expected = [
174+
TestAsset\Anonymous\WithAnonymousClass::class,
175+
];
176+
177+
$this->assertEquals($expected, $classNames);
178+
}
153179
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
/**
4+
* Zend Framework (http://framework.zend.com/)
5+
*
6+
* @link http://github.com/zendframework/zf2 for the canonical source repository
7+
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
8+
* @license http://framework.zend.com/license/new-bsd New BSD License
9+
*/
10+
11+
namespace ZendTest\File\TestAsset\Anonymous;
12+
13+
final class WithAnonymousClass
14+
{
15+
private $anonymous;
16+
17+
public function __construct()
18+
{
19+
$this->anonymous = new class extends \stdClass {
20+
21+
};
22+
}
23+
}
24+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
/**
4+
* Zend Framework (http://framework.zend.com/)
5+
*
6+
* @link http://github.com/zendframework/zf2 for the canonical source repository
7+
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
8+
* @license http://framework.zend.com/license/new-bsd New BSD License
9+
*/
10+
11+
$anonymous = new class extends \stdClass {
12+
13+
};

0 commit comments

Comments
 (0)