- Notifications
You must be signed in to change notification settings - Fork 50
Open
Description
So, I am overriding tearDown() and as the rule suggests i need to call the parent::teardown() inside it , the only problem here is that i want to call it from a try-catch block which phpstan-phpunit
doesn't recognise as a valid call to the parent method.
/** {@inheritdoc} */ protected function tearDown(): void { try { parent::tearDown(); } catch (\Exception $exception) { if (!(get_class($exception) === get_class($this->expectedTearDownException) && $exception->getMessage() === $this->expectedTearDownException->getMessage())) { throw $exception; } } }
phpstan doesn't have this bug i checked in independently https://phpstan.org/r/1a212fa2-3cba-4c82-80db-7c75a8346f50
The main issue seems to be in
$hasParentCall = $this->hasParentClassCall($node->getOriginalNode()->getStmts(), strtolower($methodName));
if (!$hasParentCall) { return [ RuleErrorBuilder::message( sprintf('Missing call to parent::%s() method.', $methodName) )->build(), ]; }
Mainly \PHPStan\Rules\PHPUnit\ShouldCallParentMethodsRule::hasParentClassCall
I think this lacks the logic to detect parent class calls inside a try-catch block.
Metadata
Metadata
Assignees
Labels
No labels