function ComponentTestDoesNotExtendCoreTest::processNode

File

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

Class

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

Namespace

Drupal\PHPStan\Rules

Code

public function processNode(Node $node, Scope $scope) : array {
  $class = $node->getClassReflection();
  if (!str_starts_with($class->getName(), 'Drupal\\Tests\\Component')) {
    return [];
  }
  $invalidParents = [
    $this->reflectionProvider
      ->getClass(UnitTestCase::class),
    $this->reflectionProvider
      ->getClass(BuildTestBase::class),
    $this->reflectionProvider
      ->getClass(KernelTestBase::class),
    $this->reflectionProvider
      ->getClass(BrowserTestBase::class),
  ];
  foreach ($invalidParents as $invalidParent) {
    if ($class->isSubclassOfClass($invalidParent)) {
      return [
        RuleErrorBuilder::message("Component tests should not extend {$invalidParent->getName()}.")
          ->line($node->getStartLine())
          ->build(),
      ];
    }
  }
  return [];
}

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