-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ADD implementation for TestTag on a class
- Loading branch information
1 parent
6c5c145
commit 68a2e82
Showing
13 changed files
with
372 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
33 changes: 33 additions & 0 deletions
33
tests/Rules/TestTagClassOnConstructorIngoredOnTestClassTest.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace DaveLiddament\PhpstanPhpLanguageExtensions\Tests\Rules; | ||
|
||
use DaveLiddament\PhpstanPhpLanguageExtensions\Config\TestConfig; | ||
use DaveLiddament\PhpstanPhpLanguageExtensions\Rules\TestTagNewCallRule; | ||
use DaveLiddament\PhpstanRuleTestHelper\AbstractRuleTestCase; | ||
use DaveLiddament\PhpstanRuleTestHelper\ErrorMessageFormatter; | ||
use PHPStan\Rules\Rule; | ||
|
||
/** @extends AbstractRuleTestCase<TestTagNewCallRule> */ | ||
class TestTagClassOnConstructorIngoredOnTestClassTest extends AbstractRuleTestCase | ||
{ | ||
protected function getRule(): Rule | ||
{ | ||
return new TestTagNewCallRule( | ||
$this->createReflectionProvider(), | ||
new TestConfig(TestConfig::CLASS_NAME), | ||
); | ||
} | ||
|
||
public function testMethodCall(): void | ||
{ | ||
$this->assertIssuesReported(__DIR__.'/data/testTag/testTagClassOnConstructorIgnoredInTestClass.php'); | ||
} | ||
|
||
protected function getErrorFormatter(): ErrorMessageFormatter|string | ||
{ | ||
return 'TestTagClassOnConstructorIgnoredOnTestClass\Person::__construct is a test tag and can only be called from test code'; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace DaveLiddament\PhpstanPhpLanguageExtensions\Tests\Rules; | ||
|
||
use DaveLiddament\PhpstanPhpLanguageExtensions\Config\TestConfig; | ||
use DaveLiddament\PhpstanPhpLanguageExtensions\Rules\TestTagNewCallRule; | ||
use DaveLiddament\PhpstanRuleTestHelper\AbstractRuleTestCase; | ||
use DaveLiddament\PhpstanRuleTestHelper\ErrorMessageFormatter; | ||
use PHPStan\Rules\Rule; | ||
|
||
/** @extends AbstractRuleTestCase<TestTagNewCallRule> */ | ||
class TestTagClassOnConstructorTest extends AbstractRuleTestCase | ||
{ | ||
protected function getRule(): Rule | ||
{ | ||
return new TestTagNewCallRule( | ||
$this->createReflectionProvider(), | ||
new TestConfig(TestConfig::CLASS_NAME), | ||
); | ||
} | ||
|
||
public function testMethodCall(): void | ||
{ | ||
$this->assertIssuesReported(__DIR__.'/data/testTag/testTagClassOnConstructor.php'); | ||
} | ||
|
||
protected function getErrorFormatter(): ErrorMessageFormatter|string | ||
{ | ||
return 'TestTagClassOnConstructor\Person::__construct is a test tag and can only be called from test code'; | ||
} | ||
} |
29 changes: 29 additions & 0 deletions
29
tests/Rules/TestTagClassOnMethodIgnoredOnTestClassTest.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace DaveLiddament\PhpstanPhpLanguageExtensions\Tests\Rules; | ||
|
||
use DaveLiddament\PhpstanPhpLanguageExtensions\Config\TestConfig; | ||
use DaveLiddament\PhpstanPhpLanguageExtensions\Rules\TestTagMethodCallRule; | ||
use DaveLiddament\PhpstanRuleTestHelper\AbstractRuleTestCase; | ||
use PHPStan\Rules\Rule; | ||
|
||
/** @extends AbstractRuleTestCase<TestTagMethodCallRule> */ | ||
class TestTagClassOnMethodIgnoredOnTestClassTest extends AbstractRuleTestCase | ||
{ | ||
protected function getRule(): Rule | ||
{ | ||
return new TestTagMethodCallRule( | ||
$this->createReflectionProvider(), | ||
new TestConfig(TestConfig::CLASS_NAME), | ||
); | ||
} | ||
|
||
public function testMethodCall(): void | ||
{ | ||
$this->assertIssuesReported( | ||
__DIR__.'/data/testTag/testTagClassOnMethodIgnoredInTestClass.php', | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace DaveLiddament\PhpstanPhpLanguageExtensions\Tests\Rules; | ||
|
||
use DaveLiddament\PhpstanPhpLanguageExtensions\Config\TestConfig; | ||
use DaveLiddament\PhpstanPhpLanguageExtensions\Rules\TestTagMethodCallRule; | ||
use DaveLiddament\PhpstanRuleTestHelper\AbstractRuleTestCase; | ||
use DaveLiddament\PhpstanRuleTestHelper\ErrorMessageFormatter; | ||
use PHPStan\Rules\Rule; | ||
|
||
/** @extends AbstractRuleTestCase<TestTagMethodCallRule> */ | ||
class TestTagClassOnMethodTest extends AbstractRuleTestCase | ||
{ | ||
protected function getRule(): Rule | ||
{ | ||
return new TestTagMethodCallRule( | ||
$this->createReflectionProvider(), | ||
new TestConfig(TestConfig::CLASS_NAME), | ||
); | ||
} | ||
|
||
public function testMethodCall(): void | ||
{ | ||
$this->assertIssuesReported(__DIR__.'/data/testTag/testTagClassOnMethod.php'); | ||
} | ||
|
||
protected function getErrorFormatter(): ErrorMessageFormatter|string | ||
{ | ||
return 'TestTagClassOnMethod\Person::updateName is a test tag and can only be called from test code'; | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
tests/Rules/TestTagClassOnStaticIgnoredOnTestClassTest.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace DaveLiddament\PhpstanPhpLanguageExtensions\Tests\Rules; | ||
|
||
use DaveLiddament\PhpstanPhpLanguageExtensions\Config\TestConfig; | ||
use DaveLiddament\PhpstanPhpLanguageExtensions\Rules\TestTagStaticCallRule; | ||
use DaveLiddament\PhpstanRuleTestHelper\AbstractRuleTestCase; | ||
use PHPStan\Rules\Rule; | ||
|
||
/** @extends AbstractRuleTestCase<TestTagStaticCallRule> */ | ||
class TestTagClassOnStaticIgnoredOnTestClassTest extends AbstractRuleTestCase | ||
{ | ||
protected function getRule(): Rule | ||
{ | ||
return new TestTagStaticCallRule( | ||
$this->createReflectionProvider(), | ||
new TestConfig(TestConfig::CLASS_NAME), | ||
); | ||
} | ||
|
||
public function testMethodCall(): void | ||
{ | ||
$this->assertIssuesReported(__DIR__.'/data/testTag/testTagClassOnStaticMethodIgnoredInTestClass.php'); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace DaveLiddament\PhpstanPhpLanguageExtensions\Tests\Rules; | ||
|
||
use DaveLiddament\PhpstanPhpLanguageExtensions\Config\TestConfig; | ||
use DaveLiddament\PhpstanPhpLanguageExtensions\Rules\TestTagStaticCallRule; | ||
use DaveLiddament\PhpstanRuleTestHelper\AbstractRuleTestCase; | ||
use PHPStan\Rules\Rule; | ||
|
||
/** @extends AbstractRuleTestCase<TestTagStaticCallRule> */ | ||
final class TestTagClassOnStaticTest extends AbstractRuleTestCase | ||
{ | ||
protected function getRule(): Rule | ||
{ | ||
return new TestTagStaticCallRule( | ||
$this->createReflectionProvider(), | ||
new TestConfig(TestConfig::CLASS_NAME), | ||
); | ||
} | ||
|
||
public function testMethodCall(): void | ||
{ | ||
$this->assertIssuesReported(__DIR__.'/data/testTag/testTagClassOnStaticMethod.php'); | ||
} | ||
|
||
protected function getErrorFormatter(): string | ||
{ | ||
return 'TestTagClassOnStaticMethod\Person::updateName is a test tag and can only be called from test code'; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
<?php | ||
|
||
namespace TestTagClassOnConstructor; | ||
|
||
use DaveLiddament\PhpLanguageExtensions\TestTag; | ||
|
||
#[TestTag] | ||
class Person | ||
{ | ||
public function __construct() | ||
{ | ||
} | ||
|
||
public static function create(): Person | ||
{ | ||
return new Person(); // OK - whole class is marked with TestTag, so OK to call methods within it. | ||
} | ||
|
||
public static function createSelf(): self | ||
{ | ||
return new self(); // OK - whole class is marked with TestTag, so OK to call methods within it. | ||
} | ||
} | ||
|
||
class AnotherClass | ||
{ | ||
public function buildPerson(): Person | ||
{ | ||
return new Person(); // ERROR | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
tests/Rules/data/testTag/testTagClassOnConstructorIgnoredInTestClass.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?php | ||
|
||
namespace TestTagClassOnConstructorIgnoredInTestClass; | ||
|
||
use DaveLiddament\PhpLanguageExtensions\TestTag; | ||
|
||
#[TestTag] | ||
class Person | ||
{ | ||
public function __construct() | ||
{ | ||
} | ||
} | ||
|
||
class PersonTest | ||
{ | ||
public function buildPerson(): Person | ||
{ | ||
return new Person(); // OK TetTag called from a test class | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace TestTagClassOnMethod; | ||
|
||
use DaveLiddament\PhpLanguageExtensions\TestTag; | ||
|
||
#[TestTag] | ||
class Person | ||
{ | ||
public function updateName(): void | ||
{ | ||
} | ||
|
||
public function update(): void | ||
{ | ||
$this->updateName(); // OK - whole class is marked with TestTag, so OK to call methods within it. | ||
} | ||
} | ||
|
||
class Updater | ||
{ | ||
public function updater(Person $person): void | ||
{ | ||
$person->updateName(); // ERROR | ||
} | ||
} | ||
|
||
$person = new Person(); | ||
$person->updateName(); // ERROR | ||
|
25 changes: 25 additions & 0 deletions
25
tests/Rules/data/testTag/testTagClassOnMethodIgnoredInTestClass.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace TestTagClassOnMethodIgnoredInTestClass; | ||
|
||
use DaveLiddament\PhpLanguageExtensions\TestTag; | ||
|
||
#[TestTag] | ||
class Person | ||
{ | ||
public function updateName(): void | ||
{ | ||
} | ||
} | ||
|
||
class PersonTest | ||
{ | ||
public function updater(Person $person): void | ||
{ | ||
$person->updateName(); // OK - Called from Test class | ||
} | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
<?php | ||
|
||
namespace TestTagClassOnStaticMethod; | ||
|
||
|
||
use DaveLiddament\PhpLanguageExtensions\TestTag; | ||
|
||
#[TestTag] | ||
class Person | ||
{ | ||
public static function updateName(): void | ||
{ | ||
} | ||
|
||
public static function update(): void | ||
{ | ||
Person::updateName(); // OK - whole class is marked with TestTag, so OK to call methods within it. | ||
} | ||
|
||
public static function updateSelf(): void | ||
{ | ||
self::updateName(); // OK - whole class is marked with TestTag, so OK to call methods within it. | ||
} | ||
} | ||
|
||
class Updater | ||
{ | ||
public function updater(): void | ||
{ | ||
Person::updateName(); // ERROR | ||
} | ||
} | ||
|
||
Person::updateName(); // ERROR |
Oops, something went wrong.