|
@@ -13,6 +13,7 @@
|
|
|
namespace PhpCsFixer\Tests\AutoReview;
|
|
|
|
|
|
use PhpCsFixer\DocBlock\DocBlock;
|
|
|
+use PhpCsFixer\Tokenizer\Tokens;
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
use Symfony\Component\Finder\Finder;
|
|
|
use Symfony\Component\Finder\SplFileInfo;
|
|
@@ -68,7 +69,7 @@ final class ProjectCodeTest extends TestCase
|
|
|
/**
|
|
|
* @param string $className
|
|
|
*
|
|
|
- * @dataProvider provideSrcConcreteClasses
|
|
|
+ * @dataProvider provideSrcConcreteClassCases
|
|
|
*/
|
|
|
public function testThatSrcClassHaveTestClass($className)
|
|
|
{
|
|
@@ -86,7 +87,7 @@ final class ProjectCodeTest extends TestCase
|
|
|
/**
|
|
|
* @param string $className
|
|
|
*
|
|
|
- * @dataProvider provideSrcClassesNotAbuseInterfaces
|
|
|
+ * @dataProvider provideSrcClassesNotAbuseInterfacesCases
|
|
|
* @requires PHP 5.4
|
|
|
*/
|
|
|
public function testThatSrcClassesNotAbuseInterfaces($className)
|
|
@@ -153,7 +154,7 @@ final class ProjectCodeTest extends TestCase
|
|
|
/**
|
|
|
* @param string $className
|
|
|
*
|
|
|
- * @dataProvider provideSrcClasses
|
|
|
+ * @dataProvider provideSrcClassCases
|
|
|
*/
|
|
|
public function testThatSrcClassesNotExposeProperties($className)
|
|
|
{
|
|
@@ -218,7 +219,7 @@ final class ProjectCodeTest extends TestCase
|
|
|
/**
|
|
|
* @param string $className
|
|
|
*
|
|
|
- * @dataProvider provideTestClasses
|
|
|
+ * @dataProvider provideTestClassCases
|
|
|
*/
|
|
|
public function testThatTestClassesAreAbstractOrFinal($className)
|
|
|
{
|
|
@@ -233,7 +234,7 @@ final class ProjectCodeTest extends TestCase
|
|
|
/**
|
|
|
* @param string $className
|
|
|
*
|
|
|
- * @dataProvider provideTestClasses
|
|
|
+ * @dataProvider provideTestClassCases
|
|
|
*/
|
|
|
public function testThatTestClassesAreInternal($className)
|
|
|
{
|
|
@@ -246,7 +247,22 @@ final class ProjectCodeTest extends TestCase
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- public function provideSrcClasses()
|
|
|
+ /**
|
|
|
+ * @dataProvider provideDataProviderMethodNameCases
|
|
|
+ *
|
|
|
+ * @param string $testClassName
|
|
|
+ * @param string $dataProviderMethodName
|
|
|
+ */
|
|
|
+ public function testThatDataProvidersAreCorrectlyNamed($testClassName, $dataProviderMethodName)
|
|
|
+ {
|
|
|
+ $this->assertRegExp('/^provide[A-Z]\S+Cases$/', $dataProviderMethodName, sprintf(
|
|
|
+ 'Data provider in "%s" with name "%s" is not correctly named.',
|
|
|
+ $testClassName,
|
|
|
+ $dataProviderMethodName
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function provideSrcClassCases()
|
|
|
{
|
|
|
return array_map(
|
|
|
function ($item) {
|
|
@@ -256,7 +272,7 @@ final class ProjectCodeTest extends TestCase
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- public function provideSrcClassesNotAbuseInterfaces()
|
|
|
+ public function provideSrcClassesNotAbuseInterfacesCases()
|
|
|
{
|
|
|
return array_map(
|
|
|
function ($item) {
|
|
@@ -288,7 +304,7 @@ final class ProjectCodeTest extends TestCase
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- public function provideSrcConcreteClasses()
|
|
|
+ public function provideSrcConcreteClassCases()
|
|
|
{
|
|
|
return array_map(
|
|
|
function ($item) { return array($item); },
|
|
@@ -303,7 +319,7 @@ final class ProjectCodeTest extends TestCase
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- public function provideTestClasses()
|
|
|
+ public function provideTestClassCases()
|
|
|
{
|
|
|
return array_map(
|
|
|
function ($item) {
|
|
@@ -313,6 +329,44 @@ final class ProjectCodeTest extends TestCase
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ public function provideDataProviderMethodNameCases()
|
|
|
+ {
|
|
|
+ $data = array();
|
|
|
+
|
|
|
+ $testClassNames = $this->getTestClasses();
|
|
|
+
|
|
|
+ foreach ($testClassNames as $testClassName) {
|
|
|
+ $dataProviderMethodNames = array();
|
|
|
+ $tokens = Tokens::fromCode(file_get_contents(
|
|
|
+ str_replace('\\', DIRECTORY_SEPARATOR, preg_replace('#^PhpCsFixer\\\Tests#', 'tests', $testClassName)).'.php'
|
|
|
+ ));
|
|
|
+
|
|
|
+ foreach ($tokens as $token) {
|
|
|
+ if ($token->isGivenKind(T_DOC_COMMENT)) {
|
|
|
+ $docBlock = new DocBlock($token->getContent());
|
|
|
+ $dataProviderAnnotations = $docBlock->getAnnotationsOfType('dataProvider');
|
|
|
+
|
|
|
+ foreach ($dataProviderAnnotations as $dataProviderAnnotation) {
|
|
|
+ if (1 === preg_match('/@dataProvider\s+(?P<methodName>\w+)/', $dataProviderAnnotation->getContent(), $matches)) {
|
|
|
+ $dataProviderMethodNames[] = $matches['methodName'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $dataProviderMethodNames = array_unique($dataProviderMethodNames);
|
|
|
+
|
|
|
+ foreach ($dataProviderMethodNames as $dataProviderMethodName) {
|
|
|
+ $data[] = array(
|
|
|
+ $testClassName,
|
|
|
+ $dataProviderMethodName,
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
private function getSrcClasses()
|
|
|
{
|
|
|
static $files;
|