class ComponentTestDoesNotExtendCoreTest

Ensures that no component tests are extending a core test base class.

@implements Rule<\PHPStan\Node\InClassNode>

@internal

Hierarchy

Expanded class hierarchy of ComponentTestDoesNotExtendCoreTest

1 file declares its use of ComponentTestDoesNotExtendCoreTest
ComponentTestDoesNotExtendCoreTestTest.php in core/tests/PHPStan/tests/ComponentTestDoesNotExtendCoreTestTest.php

File

core/tests/PHPStan/Rules/ComponentTestDoesNotExtendCoreTest.php, line 25

Namespace

Drupal\PHPStan\Rules
View source
final class ComponentTestDoesNotExtendCoreTest implements Rule {
    
    /**
     * {@inheritdoc}
     */
    public function getNodeType() : string {
        return InClassNode::class;
    }
    
    /**
     * {@inheritdoc}
     */
    public function processNode(Node $node, Scope $scope) : array {
        $class = $node->getClassReflection();
        if (!str_starts_with($class->getName(), 'Drupal\\Tests\\Component')) {
            return [];
        }
        $invalidParents = [
            UnitTestCase::class,
            BuildTestBase::class,
            KernelTestBase::class,
            BrowserTestBase::class,
        ];
        foreach ($invalidParents as $invalidParent) {
            if ($class->isSubclassOf($invalidParent)) {
                return [
                    RuleErrorBuilder::message("Component tests should not extend {$invalidParent}.")->line($node->getStartLine())
                        ->build(),
                ];
            }
        }
        return [];
    }

}

Members


Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.