nodeTypeResolver = $nodeTypeResolver; $this->nodeNameResolver = $nodeNameResolver; $this->phpDocInfoFactory = $phpDocInfoFactory; $this->reflectionResolver = $reflectionResolver; } public function isInTestClass(Node $node) : bool { $classReflection = $this->reflectionResolver->resolveClassReflection($node); if (!$classReflection instanceof ClassReflection) { return \false; } foreach (self::TEST_CASE_OBJECT_CLASSES as $testCaseObjectClass) { if ($classReflection->isSubclassOf($testCaseObjectClass)) { return \true; } } return \false; } public function isTestClassMethod(ClassMethod $classMethod) : bool { if (!$classMethod->isPublic()) { return \false; } if (\strncmp($classMethod->name->toString(), 'test', \strlen('test')) === 0) { return \true; } $phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($classMethod); return $phpDocInfo->hasByName('test'); } public function isAssertMethodCallName(Node $node, string $name) : bool { if ($node instanceof StaticCall) { $callerType = $this->nodeTypeResolver->getType($node->class); } elseif ($node instanceof MethodCall) { $callerType = $this->nodeTypeResolver->getType($node->var); } else { return \false; } $assertObjectType = new ObjectType('PHPUnit\\Framework\\Assert'); if (!$assertObjectType->isSuperTypeOf($callerType)->yes()) { return \false; } /** @var StaticCall|MethodCall $node */ return $this->nodeNameResolver->isName($node->name, $name); } /** * @param string[] $names */ public function isPHPUnitMethodCallNames(Node $node, array $names) : bool { if (!$this->isPHPUnitTestCaseCall($node)) { return \false; } /** @var MethodCall|StaticCall $node */ return $this->nodeNameResolver->isNames($node->name, $names); } public function isPHPUnitTestCaseCall(Node $node) : bool { if (!$this->isInTestClass($node)) { return \false; } return $node instanceof MethodCall || $node instanceof StaticCall; } }