Skip to content

Commit 3f4b1af

Browse files
committed
[PHPUnit90] Handle crash on different object without second arg on SpecificAssertContainsWithoutIdentityRector
1 parent 0da29d9 commit 3f4b1af

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace Rector\PHPUnit\Tests\PHPUnit90\Rector\MethodCall\SpecificAssertContainsWithoutIdentityRector\Fixture;
4+
5+
use PHPUnit\Framework\TestCase;
6+
use stdClass;
7+
8+
final class SkipNoSecondArg extends TestCase
9+
{
10+
public function test()
11+
{
12+
$objects = [ new stdClass(), new stdClass(), new stdClass() ];
13+
$this->transport()->queue()->assertContains(new stdClass());
14+
}
15+
}

src/NodeAnalyzer/TestsNodeAnalyzer.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use PhpParser\Node;
88
use PhpParser\Node\Expr\MethodCall;
99
use PhpParser\Node\Expr\StaticCall;
10+
use PhpParser\Node\Expr\Variable;
1011
use PhpParser\Node\Stmt\ClassMethod;
1112
use PHPStan\Reflection\ClassReflection;
1213
use PHPStan\Type\ObjectType;
@@ -33,7 +34,11 @@ public function __construct(
3334

3435
public function isInTestClass(Node $node): bool
3536
{
36-
$classReflection = $this->reflectionResolver->resolveClassReflection($node);
37+
if ($node->var instanceof Variable && $this->nodeNameResolver->isNames($node->var, ['this', 'self'])) {
38+
$classReflection = $this->reflectionResolver->resolveClassReflection($node);
39+
} else {
40+
$classReflection = $this->reflectionResolver->resolveClassReflectionSourceObject($node);
41+
}
3742

3843
if (! $classReflection instanceof ClassReflection) {
3944
return false;

0 commit comments

Comments
 (0)