diff --git a/composer.json b/composer.json index d1f5a22..e1d578e 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,8 @@ "autoload-dev": { "psr-4": { "My\\Integration\\": "tests/integration/src", - "AdrianSuter\\Autoload\\Override\\": "tests/integration/src-override" + "AdrianSuter\\Autoload\\Override\\": "tests/integration/src-override", + "AdrianSuter\\Autoload\\Override\\Tests\\": "tests" }, "classmap": [ "tests/integration/src/TestClassMapOverride" @@ -37,12 +38,15 @@ "nikic/php-parser": "^4.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^7.0", + "squizlabs/php_codesniffer": "^3.5" }, "scripts": { "test": [ - "@phpunit" + "@phpunit", + "@phpcs" ], - "phpunit": "phpunit" + "phpunit": "phpunit", + "phpcs": "phpcs" } } diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..ab3382e --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,17 @@ + + + PHP Autoload Override coding standard + + + + + + + + + + + + src + tests + diff --git a/src/AutoloadCollection.php b/src/AutoloadCollection.php index 291dddb..f7fde6a 100644 --- a/src/AutoloadCollection.php +++ b/src/AutoloadCollection.php @@ -1,4 +1,5 @@ lexer = $lexer ?? new Emulative( - [ + [ 'usedAttributes' => ['comments', 'startLine', 'endLine', 'startTokenPos', 'endTokenPos'], ] - ); + ); $this->parser = $parser ?? new Php7($this->lexer); diff --git a/src/FileStreamWrapper.php b/src/FileStreamWrapper.php index 1703854..afc6201 100644 --- a/src/FileStreamWrapper.php +++ b/src/FileStreamWrapper.php @@ -1,4 +1,5 @@ overrideApplied) { $this->overrideApplied = true; Override::apply(self::$classLoader, $this->getOverrideDeclarations()); diff --git a/tests/AutoloadCollectionTest.php b/tests/AutoloadCollectionTest.php index f7b8579..a9dc9e8 100644 --- a/tests/AutoloadCollectionTest.php +++ b/tests/AutoloadCollectionTest.php @@ -1,4 +1,5 @@ assertEquals( 'convert(' 'foo\rand']) diff --git a/tests/FileStreamWrapperTest.php b/tests/FileStreamWrapperTest.php index ac81fa9..3080f74 100644 --- a/tests/FileStreamWrapperTest.php +++ b/tests/FileStreamWrapperTest.php @@ -1,4 +1,5 @@ [ 'cos' => function (float $arg): float { + return \sin($arg); }, ], 'My\\Integration\\TestClassMapOverride\\' => [ 'cos' => function (float $arg): float { + return $arg * 2; }, ] @@ -28,24 +33,21 @@ protected function getOverrideDeclarations(): array public function testCalculator() { $calculator = new \My\Integration\TestClassMapOverride\Calculator(); - - // Calls \cos() > Overridden by FQCN-declaration. +// Calls \cos() > Overridden by FQCN-declaration. $this->assertEquals(\sin(\pi() / 2), $calculator->cos(\pi() / 2)); } public function testGeometry() { $geometry = new \My\Integration\TestClassMapOverride\SubNamespace\Geometry(); - - // Calls \cos() > Overridden by FQNS-declaration. +// Calls \cos() > Overridden by FQNS-declaration. $this->assertEquals(1, $geometry->cos(0.5)); } public function testOtherCalculator() { $otherCalculator = new \My\Integration\TestClassMapOverride\OtherCalculator(); - - // Calls \cos() > Overridden by FQNS-declaration. +// Calls \cos() > Overridden by FQNS-declaration. $this->assertEquals(2, $otherCalculator->cos(1)); } } diff --git a/tests/IntegrationClosureTest.php b/tests/IntegrationClosureTest.php index 6a3ddbf..0d0747b 100644 --- a/tests/IntegrationClosureTest.php +++ b/tests/IntegrationClosureTest.php @@ -1,4 +1,5 @@ [ 'time' => function () { + return 100; }, 'rand' => function (int $min, int $max): int { + return $min + $max; } ], \My\Integration\TestClosureOverride\SubSpace\Digital::class => [ 'rand' => function (int $min, int $max): int { + return 2 * ($min + $max); } ], @@ -30,6 +36,7 @@ protected function getOverrideDeclarations(): array // directory to the "TestClosureOverride" sub namespace. 'My\\Integration\\TestClosureOverride\\' => [ 'rand' => function (int $min, int $max): int { + return 3 * ($min + $max); } ], @@ -37,11 +44,13 @@ protected function getOverrideDeclarations(): array // directory to the "TestClosureOverride\SubSpace" sub namespace. 'My\\Integration\\TestClosureOverride\\SubSpace\\' => [ 'time' => function () { + return 101; } ], \My\Integration\TestClosureOverride\OtherSpace\Other::class => [ 'time' => function (): int { + return 102; } ] @@ -51,67 +60,53 @@ protected function getOverrideDeclarations(): array public function testClock() { $clock = new \My\Integration\TestClosureOverride\Clock(); - - // Calls \time() > Overridden by FQCN-declaration. +// Calls \time() > Overridden by FQCN-declaration. $this->assertEquals(100, $clock->time()); - - // Calls \time()-alias > Overridden by FQCN-declaration. +// Calls \time()-alias > Overridden by FQCN-declaration. $this->assertEquals(100, $clock->timeWithAlias()); - - // Calls \rand() > Overridden by FQCN-declaration. +// Calls \rand() > Overridden by FQCN-declaration. $this->assertEquals(11, $clock->rand(1, 10)); } public function testSubClock() { $subClock = new \My\Integration\TestClosureOverride\SubClock(); - - // Calls \time() > No override. +// Calls \time() > No override. $this->assertGreaterThanOrEqual(\time(), $subClock->time()); - - // Parent > Calls \time()-alias > Overridden by FQCN-declaration. +// Parent > Calls \time()-alias > Overridden by FQCN-declaration. $this->assertEquals(100, $subClock->timeWithAlias()); - - // Calls parent > Calls \rand() > Overridden by FQCN-declaration. +// Calls parent > Calls \rand() > Overridden by FQCN-declaration. $this->assertEquals(9, $subClock->rand(3, 6)); } public function testDigital() { $digital = new \My\Integration\TestClosureOverride\SubSpace\Digital(); - - // Calls \time() > Overridden by FQNS-declaration. +// Calls \time() > Overridden by FQNS-declaration. $this->assertEquals(101, $digital->time()); - - // Calls \rand() > Overridden by FQCN-declaration. +// Calls \rand() > Overridden by FQCN-declaration. $this->assertEquals(22, $digital->rand(1, 10)); } public function testSubDigital() { $subDigital = new \My\Integration\TestClosureOverride\SubDigital(); - - // Parent > Calls \time() > Overridden by FQNS-declaration. +// Parent > Calls \time() > Overridden by FQNS-declaration. $this->assertEquals(101, $subDigital->time()); - - // Calls \time() > No override. +// Calls \time() > No override. $this->assertGreaterThanOrEqual(\time(), $subDigital->subTime()); - - // Calls \rand() > Overridden by FQNS. +// Calls \rand() > Overridden by FQNS. $this->assertEquals(33, $subDigital->rand(1, 10)); } public function testSubSpaceClock() { $subSpaceClock = new \My\Integration\TestClosureOverride\SubSpace\SubSpaceClock(); - - // Calls \time() > Overridden by FQNS. +// Calls \time() > Overridden by FQNS. $this->assertEquals(101, $subSpaceClock->time()); - - // Parent > Calls \time()-alias > Overridden by FQCN-declaration. +// Parent > Calls \time()-alias > Overridden by FQCN-declaration. $this->assertEquals(100, $subSpaceClock->timeWithAlias()); - - // Calls \rand() > No override. +// Calls \rand() > No override. $rand = $subSpaceClock->rand(1, 10); $this->assertGreaterThanOrEqual(1, $rand); $this->assertLessThanOrEqual(10, $rand); @@ -120,11 +115,9 @@ public function testSubSpaceClock() public function testOther() { $other = new \My\Integration\TestClosureOverride\OtherSpace\Other(); - - // Calls \time() > Overridden by FQCN-declaration. +// Calls \time() > Overridden by FQCN-declaration. $this->assertEquals(102, $other->time()); - - // Calls \rand() > No override. +// Calls \rand() > No override. $rand = $other->rand(1, 10); $this->assertGreaterThanOrEqual(1, $rand); $this->assertLessThanOrEqual(10, $rand); @@ -133,11 +126,9 @@ public function testOther() public function testSpace() { $space = new \My\Integration\TestClosureOverride\OtherSpace\Space(); - - // Calls \time() > No override. +// Calls \time() > No override. $this->assertGreaterThanOrEqual(\time(), $space->time()); - - // Calls time() which is a local function in the namespace. +// Calls time() which is a local function in the namespace. $this->assertEquals(105, $space->timeLocal()); } } diff --git a/tests/IntegrationCustomNamespaceTest.php b/tests/IntegrationCustomNamespaceTest.php index aab1517..828ca13 100644 --- a/tests/IntegrationCustomNamespaceTest.php +++ b/tests/IntegrationCustomNamespaceTest.php @@ -1,4 +1,5 @@ Overridden by FQCN-declaration. +// Calls \md5() > Overridden by FQCN-declaration. $GLOBALS['md5_return'] = '---'; $this->assertEquals('---', $hash->hash('1')); } diff --git a/tests/IntegrationNamespaceTest.php b/tests/IntegrationNamespaceTest.php index 4f16c3a..f0ef0f0 100644 --- a/tests/IntegrationNamespaceTest.php +++ b/tests/IntegrationNamespaceTest.php @@ -1,4 +1,5 @@ assertEquals('GFE', $earth->substrLocal()); - - // Calls \substr() > Overridden by FQNS-declaration. +// Calls \substr() > Overridden by FQNS-declaration. $GLOBALS['substr_return'] = 'XYZ'; $this->assertEquals('XYZ', $earth->substrGlobal()); - - // Calls \time() > No override. +// Calls \time() > No override. $GLOBALS['time_return'] = 3; $this->assertGreaterThanOrEqual(\time(), $earth->time()); } @@ -45,16 +45,13 @@ public function testEarth() public function testMoon() { $moon = new \My\Integration\TestNamespaceOverride\Moon(); - - // Calls \time() > Overridden by FQCN. +// Calls \time() > Overridden by FQCN. $GLOBALS['time_return'] = 1; $this->assertEquals(1, $moon->time()); - - // Calls \time()-alias > Overridden by FQCN. +// Calls \time()-alias > Overridden by FQCN. $GLOBALS['time_return'] = 2; $this->assertEquals(2, $moon->timeUseAlias()); - - // Calls \substr() > Overridden by FQNS-declaration. +// Calls \substr() > Overridden by FQNS-declaration. $GLOBALS['substr_return'] = 'ZZZ'; $this->assertEquals('ZZZ', $moon->substr('AAA', 0, 2)); } diff --git a/tests/IntegrationPsr4MultiDirTest.php b/tests/IntegrationPsr4MultiDirTest.php index 8965d76..d7ea185 100644 --- a/tests/IntegrationPsr4MultiDirTest.php +++ b/tests/IntegrationPsr4MultiDirTest.php @@ -1,4 +1,5 @@ [ 'str_repeat' => function ($str, $multiplier) { + return \str_repeat($str, 2 * $multiplier); } ], 'AdrianSuter\\Autoload\\Override\\SubSpace\\' => [ 'str_repeat' => function ($input, $multiplier) { + return ':'; } ], @@ -28,16 +33,14 @@ protected function getOverrideDeclarations(): array public function testScience() { $science = new \AdrianSuter\Autoload\Override\Science(); - - // Calls \str_repeat() > Overridden by FQCN-declaration. +// Calls \str_repeat() > Overridden by FQCN-declaration. $this->assertEquals('xxxx', $science->crosses(2)); } public function testSpeech() { $speech = new \AdrianSuter\Autoload\Override\SubSpace\Speech(); - - // Calls \str_repeat() > Overridden by FQNS-declaration. +// Calls \str_repeat() > Overridden by FQNS-declaration. $this->assertEquals(':', $speech->whisper(2)); } } diff --git a/tests/OverrideTest.php b/tests/OverrideTest.php index 3ee847f..f63d785 100644 --- a/tests/OverrideTest.php +++ b/tests/OverrideTest.php @@ -1,4 +1,5 @@ assertInstanceOf( - CodeConverter::class, Override::getCodeConverter() + CodeConverter::class, + Override::getCodeConverter() ); } diff --git a/tests/assets/PHPAutoloadOverride.php b/tests/assets/PHPAutoloadOverride.php index 3fdecbc..6bdee86 100644 --- a/tests/assets/PHPAutoloadOverride.php +++ b/tests/assets/PHPAutoloadOverride.php @@ -1,4 +1,5 @@