/
ExceptionCodeTest.php
65 lines (60 loc) · 1.83 KB
/
ExceptionCodeTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
namespace Psalm\Tests\ReturnTypeProvider;
use Psalm\Tests\TestCase;
use Psalm\Tests\Traits\ValidCodeAnalysisTestTrait;
class ExceptionCodeTest extends TestCase
{
use ValidCodeAnalysisTestTrait;
/**
* @return iterable<string,array{code:string,assertions?:array<string,string>,ignored_issues?:list<string>,php_version?:string}>
*/
public function providerValidCodeParse(): iterable
{
yield 'RuntimeException' => [
'code' => '<?php
function f(\RuntimeException $e): int {
return $e->getCode();
}
',
'assertions' => [],
];
yield 'LogicException' => [
'code' => '<?php
function f(\LogicException $e): int {
return $e->getCode();
}
',
'assertions' => [],
];
yield 'PDOException' => [
'code' => '<?php
function f(\PDOException $e): string {
return $e->getCode();
}
',
'assertions' => [],
];
yield 'CustomThrowable' => [
'code' => '<?php
interface CustomThrowable extends \Throwable {}
/** @var CustomThrowable $e */
$code = $e->getCode();
',
'assertions' => ['$code' => 'int'],
];
yield 'Throwable' => [
'code' => '<?php
/** @var \Throwable $e */
$code = $e->getCode();
',
'assertions' => ['$code' => 'int|string'],
];
yield 'Exception' => [
'code' => '<?php
/** @var \Exception $e */
$code = $e->getCode();
',
'assertions' => ['$code' => 'int|string'],
];
}
}