1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-26 20:34:47 +01:00

Skip callable tests for PHP 7

This commit is contained in:
Matthew Brown 2019-01-21 18:01:15 -05:00
parent ea137fc20c
commit 1c5f6963a6
3 changed files with 24 additions and 6 deletions

View File

@ -88,10 +88,16 @@ class MethodAnalyzer extends FunctionLikeAnalyzer
) {
$codebase_methods = $codebase->methods;
if ($method_id === 'Closure::fromcallable') {
return true;
}
$original_method_id = $method_id;
$method_id = $codebase_methods->getDeclaringMethodId($method_id);
if (!$method_id) {
throw new \LogicException('Method id should not be null');
throw new \LogicException('Declaring method for ' . $original_method_id . ' should not be null');
}
$storage = $codebase_methods->getStorage($method_id);

View File

@ -631,7 +631,7 @@ class CallableTest extends TestCase
);
}'
],
'closureFromCallableInvokableNamedClass' => [
'PHP71-closureFromCallableInvokableNamedClass' => [
'<?php
namespace NS;
use Closure;
@ -647,7 +647,7 @@ class CallableTest extends TestCase
acceptsIntToBool(Closure::fromCallable(new NamedInvokable));'
],
'closureFromCallableInvokableAnonymousClass' => [
'PHP71-closureFromCallableInvokableAnonymousClass' => [
'<?php
namespace NS;
use Closure;
@ -1049,7 +1049,7 @@ class CallableTest extends TestCase
f([C::class, "m"]);',
'error_message' => 'InvalidScalarArgument',
],
'closureFromCallableInvokableNamedClassWrongArgs' => [
'PHP71-closureFromCallableInvokableNamedClassWrongArgs' => [
'<?php
namespace NS;
use Closure;

View File

@ -24,8 +24,20 @@ trait InvalidCodeAnalysisTestTrait
*/
public function testInvalidCode($code, $error_message, $error_levels = [], $strict_mode = false)
{
if (strpos($this->getTestName(), 'SKIPPED-') !== false) {
$this->markTestSkipped();
if (strpos($test_name, 'PHP7-') !== false) {
if (version_compare(PHP_VERSION, '7.0.0dev', '<')) {
$this->markTestSkipped('Test case requires PHP 7.');
return;
}
} elseif (strpos($test_name, 'PHP71-') !== false) {
if (version_compare(PHP_VERSION, '7.1.0', '<')) {
$this->markTestSkipped('Test case requires PHP 7.1.');
return;
}
} elseif (strpos($test_name, 'SKIPPED-') !== false) {
$this->markTestSkipped('Skipped due to a bug.');
}
if ($strict_mode) {