Skip to content

Commit ed83c67

Browse files
committed
Tests for autoloader class name detection
1 parent 95e69ac commit ed83c67

File tree

7 files changed

+156
-1
lines changed

7 files changed

+156
-1
lines changed

package.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,17 @@ http://pear.php.net/dtd/package-2.0.xsd">
102102
</dir>
103103
<dir name="tests">
104104
<dir name="Core">
105+
<dir name="Autoloader">
106+
<dir name="TestFiles">
107+
<dir name="Sub">
108+
<file baseinstalldir="" name="C.inc" role="test" />
109+
</dir>
110+
<file baseinstalldir="" name="A.inc" role="test" />
111+
<file baseinstalldir="" name="B.inc" role="test" />
112+
<file baseinstalldir="" name="C.inc" role="test" />
113+
</dir>
114+
<file baseinstalldir="" name="DetermineLoadedClassTest.php" role="test" />
115+
</dir>
105116
<dir name="File">
106117
<file baseinstalldir="" name="FindEndOfStatementTest.inc" role="test" />
107118
<file baseinstalldir="" name="FindEndOfStatementTest.php" role="test" />
@@ -1993,6 +2004,11 @@ http://pear.php.net/dtd/package-2.0.xsd">
19932004
<install as="CodeSniffer/Core/AllTests.php" name="tests/Core/AllTests.php" />
19942005
<install as="CodeSniffer/Core/IsCamelCapsTest.php" name="tests/Core/IsCamelCapsTest.php" />
19952006
<install as="CodeSniffer/Core/ErrorSuppressionTest.php" name="tests/Core/ErrorSuppressionTest.php" />
2007+
<install as="CodeSniffer/Core/Autoloader/DetermineLoadedClassTest.php" name="tests/Core/Autoloader/DetermineLoadedClassTest.php" />
2008+
<install as="CodeSniffer/Core/Autoloader/TestFiles/A.inc" name="tests/Core/Autoloader/TestFiles/A.inc" />
2009+
<install as="CodeSniffer/Core/Autoloader/TestFiles/B.inc" name="tests/Core/Autoloader/TestFiles/B.inc" />
2010+
<install as="CodeSniffer/Core/Autoloader/TestFiles/C.inc" name="tests/Core/Autoloader/TestFiles/C.inc" />
2011+
<install as="CodeSniffer/Core/Autoloader/TestFiles/Sub/C.inc" name="tests/Core/Autoloader/TestFiles/Sub/C.inc" />
19962012
<install as="CodeSniffer/Core/File/FindEndOfStatementTest.php" name="tests/Core/File/FindEndOfStatementTest.php" />
19972013
<install as="CodeSniffer/Core/File/FindEndOfStatementTest.inc" name="tests/Core/File/FindEndOfStatementTest.inc" />
19982014
<install as="CodeSniffer/Core/File/FindExtendedClassNameTest.php" name="tests/Core/File/FindExtendedClassNameTest.php" />
@@ -2058,6 +2074,11 @@ http://pear.php.net/dtd/package-2.0.xsd">
20582074
<install as="CodeSniffer/Core/AllTests.php" name="tests/Core/AllTests.php" />
20592075
<install as="CodeSniffer/Core/IsCamelCapsTest.php" name="tests/Core/IsCamelCapsTest.php" />
20602076
<install as="CodeSniffer/Core/ErrorSuppressionTest.php" name="tests/Core/ErrorSuppressionTest.php" />
2077+
<install as="CodeSniffer/Core/Autoloader/DetermineLoadedClassTest.php" name="tests/Core/Autoloader/DetermineLoadedClassTest.php" />
2078+
<install as="CodeSniffer/Core/Autoloader/TestFiles/A.inc" name="tests/Core/Autoloader/TestFiles/A.inc" />
2079+
<install as="CodeSniffer/Core/Autoloader/TestFiles/B.inc" name="tests/Core/Autoloader/TestFiles/B.inc" />
2080+
<install as="CodeSniffer/Core/Autoloader/TestFiles/C.inc" name="tests/Core/Autoloader/TestFiles/C.inc" />
2081+
<install as="CodeSniffer/Core/Autoloader/TestFiles/Sub/C.inc" name="tests/Core/Autoloader/TestFiles/Sub/C.inc" />
20612082
<install as="CodeSniffer/Core/File/FindEndOfStatementTest.php" name="tests/Core/File/FindEndOfStatementTest.php" />
20622083
<install as="CodeSniffer/Core/File/FindEndOfStatementTest.inc" name="tests/Core/File/FindEndOfStatementTest.inc" />
20632084
<install as="CodeSniffer/Core/File/FindExtendedClassNameTest.php" name="tests/Core/File/FindExtendedClassNameTest.php" />

phpcs.xml.dist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<file>tests</file>
1010

1111
<exclude-pattern>*/src/Standards/*/Tests/*\.(inc|css|js)$</exclude-pattern>
12-
<exclude-pattern>*/tests/Core/*/*Test\.(inc|css|js)$</exclude-pattern>
12+
<exclude-pattern>*/tests/Core/*/*\.(inc|css|js)$</exclude-pattern>
1313

1414
<arg name="basepath" value="."/>
1515
<arg name="colors"/>
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
<?php
2+
/**
3+
* Tests for the \PHP_CodeSniffer\Util\Common::isCamelCaps method.
4+
*
5+
* @author Greg Sherwood <[email protected]>
6+
* @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
7+
* @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
8+
*/
9+
10+
namespace PHP_CodeSniffer\Tests\Core\Autoloader;
11+
12+
use PHPUnit\Framework\TestCase;
13+
14+
class DetermineLoadedClassTest extends TestCase
15+
{
16+
17+
18+
/**
19+
* Load the test files.
20+
*
21+
* @return void
22+
*/
23+
public static function setUpBeforeClass()
24+
{
25+
include __DIR__.'/TestFiles/Sub/C.inc';
26+
27+
}//end setUpBeforeClass()
28+
29+
30+
/**
31+
* Test for when class list is ordered.
32+
*
33+
* @return void
34+
*/
35+
public function testOrdered()
36+
{
37+
$classesBeforeLoad = [
38+
'classes' => [],
39+
'interfaces' => [],
40+
'traits' => [],
41+
];
42+
43+
$classesAfterLoad = [
44+
'classes' => [
45+
'PHP_CodeSniffer\Tests\Core\Autoloader\A',
46+
'PHP_CodeSniffer\Tests\Core\Autoloader\B',
47+
'PHP_CodeSniffer\Tests\Core\Autoloader\C',
48+
'PHP_CodeSniffer\Tests\Core\Autoloader\Sub\C',
49+
],
50+
'interfaces' => [],
51+
'traits' => [],
52+
];
53+
54+
$className = \PHP_CodeSniffer\Autoload::determineLoadedClass($classesBeforeLoad, $classesAfterLoad);
55+
$this->assertEquals('PHP_CodeSniffer\Tests\Core\Autoloader\Sub\C', $className);
56+
57+
}//end testOrdered()
58+
59+
60+
/**
61+
* Test for when class list is out of order.
62+
*
63+
* @return void
64+
*/
65+
public function testUnordered()
66+
{
67+
$classesBeforeLoad = [
68+
'classes' => [],
69+
'interfaces' => [],
70+
'traits' => [],
71+
];
72+
73+
$classesAfterLoad = [
74+
'classes' => [
75+
'PHP_CodeSniffer\Tests\Core\Autoloader\A',
76+
'PHP_CodeSniffer\Tests\Core\Autoloader\Sub\C',
77+
'PHP_CodeSniffer\Tests\Core\Autoloader\C',
78+
'PHP_CodeSniffer\Tests\Core\Autoloader\B',
79+
],
80+
'interfaces' => [],
81+
'traits' => [],
82+
];
83+
84+
$className = \PHP_CodeSniffer\Autoload::determineLoadedClass($classesBeforeLoad, $classesAfterLoad);
85+
$this->assertEquals('PHP_CodeSniffer\Tests\Core\Autoloader\Sub\C', $className);
86+
87+
$classesAfterLoad = [
88+
'classes' => [
89+
'PHP_CodeSniffer\Tests\Core\Autoloader\A',
90+
'PHP_CodeSniffer\Tests\Core\Autoloader\C',
91+
'PHP_CodeSniffer\Tests\Core\Autoloader\Sub\C',
92+
'PHP_CodeSniffer\Tests\Core\Autoloader\B',
93+
],
94+
'interfaces' => [],
95+
'traits' => [],
96+
];
97+
98+
$className = \PHP_CodeSniffer\Autoload::determineLoadedClass($classesBeforeLoad, $classesAfterLoad);
99+
$this->assertEquals('PHP_CodeSniffer\Tests\Core\Autoloader\Sub\C', $className);
100+
101+
$classesAfterLoad = [
102+
'classes' => [
103+
'PHP_CodeSniffer\Tests\Core\Autoloader\Sub\C',
104+
'PHP_CodeSniffer\Tests\Core\Autoloader\A',
105+
'PHP_CodeSniffer\Tests\Core\Autoloader\C',
106+
'PHP_CodeSniffer\Tests\Core\Autoloader\B',
107+
],
108+
'interfaces' => [],
109+
'traits' => [],
110+
];
111+
112+
$className = \PHP_CodeSniffer\Autoload::determineLoadedClass($classesBeforeLoad, $classesAfterLoad);
113+
$this->assertEquals('PHP_CodeSniffer\Tests\Core\Autoloader\Sub\C', $className);
114+
115+
}//end testUnordered()
116+
117+
118+
}//end class

tests/Core/Autoloader/TestFiles/A.inc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<?php
2+
namespace PHP_CodeSniffer\Tests\Core\Autoloader;
3+
class A {}

tests/Core/Autoloader/TestFiles/B.inc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?php
2+
namespace PHP_CodeSniffer\Tests\Core\Autoloader;
3+
require 'A.inc';
4+
class B extends A {}

tests/Core/Autoloader/TestFiles/C.inc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?php
2+
namespace PHP_CodeSniffer\Tests\Core\Autoloader;
3+
require 'B.inc';
4+
class C extends B {}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?php
2+
namespace PHP_CodeSniffer\Tests\Core\Autoloader\Sub;
3+
require __DIR__.'/../C.inc';
4+
use PHP_CodeSniffer\Tests\Core\Autoloader\C as ParentC;
5+
class C extends ParentC {}

0 commit comments

Comments
 (0)