2021-09-08 21:41:23 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Psalm\Tests;
|
|
|
|
|
2022-12-25 06:50:09 +01:00
|
|
|
use Psalm\Tests\Traits\InvalidCodeAnalysisTestTrait;
|
2021-12-04 21:55:53 +01:00
|
|
|
use Psalm\Tests\Traits\ValidCodeAnalysisTestTrait;
|
|
|
|
|
2021-09-08 21:41:23 +02:00
|
|
|
class SuperGlobalsTest extends TestCase
|
|
|
|
{
|
2021-12-04 21:55:53 +01:00
|
|
|
use ValidCodeAnalysisTestTrait;
|
2022-12-25 06:50:09 +01:00
|
|
|
use InvalidCodeAnalysisTestTrait;
|
2021-09-08 21:41:23 +02:00
|
|
|
|
|
|
|
public function providerValidCodeParse(): iterable
|
|
|
|
{
|
|
|
|
yield 'http_response_headerIsList' => [
|
2022-01-13 19:49:37 +01:00
|
|
|
'code' => '<?php
|
2022-12-24 18:28:19 +01:00
|
|
|
/** @return non-empty-list<non-falsy-string> */
|
2021-09-08 21:41:23 +02:00
|
|
|
function returnsList(): array {
|
2022-12-25 06:41:34 +01:00
|
|
|
if (!isset($http_response_header)) {
|
|
|
|
throw new \RuntimeException();
|
|
|
|
}
|
2021-09-08 21:41:23 +02:00
|
|
|
return $http_response_header;
|
|
|
|
}
|
|
|
|
',
|
2022-12-18 17:15:15 +01:00
|
|
|
'assertions' => [],
|
2021-09-08 21:41:23 +02:00
|
|
|
];
|
2022-11-05 20:19:21 +01:00
|
|
|
|
|
|
|
yield 'ENV has scalar entries only' => [
|
2022-11-08 10:45:21 +01:00
|
|
|
'code' => '<?php
|
2022-11-05 20:19:21 +01:00
|
|
|
/** @return array<array-key, scalar> */
|
|
|
|
function f(): array {
|
|
|
|
return $_ENV;
|
|
|
|
}
|
2022-12-18 17:15:15 +01:00
|
|
|
',
|
2022-11-05 20:19:21 +01:00
|
|
|
];
|
2021-09-08 21:41:23 +02:00
|
|
|
}
|
2022-12-25 06:50:09 +01:00
|
|
|
|
|
|
|
public function providerInvalidCodeParse(): iterable
|
|
|
|
{
|
|
|
|
yield 'undefined http_response_header' => [
|
|
|
|
'code' => '<?php
|
|
|
|
/** @return non-empty-list<non-falsy-string> */
|
|
|
|
function returnsList(): array {
|
|
|
|
return $http_response_header;
|
|
|
|
}
|
|
|
|
',
|
|
|
|
'error_message' => 'InvalidReturnStatement',
|
|
|
|
];
|
|
|
|
}
|
2021-09-08 21:41:23 +02:00
|
|
|
}
|