Skip to content

Commit 1d2d5b7

Browse files
Migrate legacy tests
1 parent 74b909a commit 1d2d5b7

7 files changed

+395
-222
lines changed

tests/PHPStan/Analyser/LegacyNodeScopeResolverTest.php

Lines changed: 0 additions & 176 deletions
Original file line numberDiff line numberDiff line change
@@ -5273,14 +5273,6 @@ public function testArrayFunctions(
52735273

52745274
public function dataFunctions(): array
52755275
{
5276-
$strSplitDefaultReturnType = 'non-empty-list<string>|false';
5277-
if (PHP_VERSION_ID >= 80000) {
5278-
$strSplitDefaultReturnType = 'non-empty-list<string>';
5279-
}
5280-
if (PHP_VERSION_ID >= 80200) {
5281-
$strSplitDefaultReturnType = 'list<string>';
5282-
}
5283-
52845276
return [
52855277
[
52865278
'string',
@@ -5470,42 +5462,6 @@ public function dataFunctions(): array
54705462
'(array{sec: int, usec: int, minuteswest: int, dsttime: int}|float)',
54715463
'$gettimeofdayBenevolent',
54725464
],
5473-
[
5474-
$strSplitDefaultReturnType,
5475-
'$strSplitConstantStringWithoutDefinedParameters',
5476-
],
5477-
[
5478-
'array{\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'}',
5479-
'$strSplitConstantStringWithoutDefinedSplitLength',
5480-
],
5481-
[
5482-
PHP_VERSION_ID < 80200 ? 'non-empty-list<string>' : 'list<string>',
5483-
'$strSplitStringWithoutDefinedSplitLength',
5484-
],
5485-
[
5486-
'array{\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'}',
5487-
'$strSplitConstantStringWithOneSplitLength',
5488-
],
5489-
[
5490-
'array{\'abcdef\'}',
5491-
'$strSplitConstantStringWithGreaterSplitLengthThanStringLength',
5492-
],
5493-
[
5494-
'false',
5495-
'$strSplitConstantStringWithFailureSplitLength',
5496-
],
5497-
[
5498-
$strSplitDefaultReturnType,
5499-
'$strSplitConstantStringWithInvalidSplitLengthType',
5500-
],
5501-
[
5502-
"array{'a', 'b', 'c', 'd', 'e', 'f'}|array{'g', 'h', 'i', 'j', 'k', 'l'}",
5503-
'$strSplitConstantStringWithVariableStringAndConstantSplitLength',
5504-
],
5505-
[
5506-
$strSplitDefaultReturnType,
5507-
'$strSplitConstantStringWithVariableStringAndVariableSplitLength',
5508-
],
55095465
// parse_url
55105466
[
55115467
'array|int|string|false|null',
@@ -8956,138 +8912,6 @@ public function testPhp73Functions(
89568912
);
89578913
}
89588914

8959-
public function dataPhp74Functions(): array
8960-
{
8961-
return [
8962-
[
8963-
PHP_VERSION_ID < 80000 ? 'list<string>|false' : 'list<string>',
8964-
'$mbStrSplitConstantStringWithoutDefinedParameters',
8965-
],
8966-
[
8967-
'array{\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'}',
8968-
'$mbStrSplitConstantStringWithoutDefinedSplitLength',
8969-
],
8970-
[
8971-
'list<string>',
8972-
'$mbStrSplitStringWithoutDefinedSplitLength',
8973-
],
8974-
[
8975-
'array{\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'}',
8976-
'$mbStrSplitConstantStringWithOneSplitLength',
8977-
],
8978-
[
8979-
'array{\'abcdef\'}',
8980-
'$mbStrSplitConstantStringWithGreaterSplitLengthThanStringLength',
8981-
],
8982-
[
8983-
'false',
8984-
'$mbStrSplitConstantStringWithFailureSplitLength',
8985-
],
8986-
[
8987-
PHP_VERSION_ID < 80000 ? 'list<string>|false' : 'list<string>',
8988-
'$mbStrSplitConstantStringWithInvalidSplitLengthType',
8989-
],
8990-
[
8991-
"array{'a', 'b', 'c', 'd', 'e', 'f'}|array{'g', 'h', 'i', 'j', 'k', 'l'}",
8992-
'$mbStrSplitConstantStringWithVariableStringAndConstantSplitLength',
8993-
],
8994-
[
8995-
PHP_VERSION_ID < 80000 ? 'list<string>|false' : 'list<string>',
8996-
'$mbStrSplitConstantStringWithVariableStringAndVariableSplitLength',
8997-
],
8998-
[
8999-
"array{'a', 'b', 'c', 'd', 'e', 'f'}",
9000-
'$mbStrSplitConstantStringWithOneSplitLengthAndValidEncoding',
9001-
],
9002-
[
9003-
'false',
9004-
'$mbStrSplitConstantStringWithOneSplitLengthAndInvalidEncoding',
9005-
],
9006-
[
9007-
PHP_VERSION_ID < 80000 ? 'list<string>|false' : 'list<string>',
9008-
'$mbStrSplitConstantStringWithOneSplitLengthAndVariableEncoding',
9009-
],
9010-
[
9011-
"array{'abcdef'}",
9012-
'$mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndValidEncoding',
9013-
],
9014-
[
9015-
'false',
9016-
'$mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndInvalidEncoding',
9017-
],
9018-
[
9019-
PHP_VERSION_ID < 80000 ? 'list<string>|false' : 'list<string>',
9020-
'$mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndVariableEncoding',
9021-
],
9022-
[
9023-
'false',
9024-
'$mbStrSplitConstantStringWithFailureSplitLengthAndValidEncoding',
9025-
],
9026-
[
9027-
'false',
9028-
'$mbStrSplitConstantStringWithFailureSplitLengthAndInvalidEncoding',
9029-
],
9030-
[
9031-
'false',
9032-
'$mbStrSplitConstantStringWithFailureSplitLengthAndVariableEncoding',
9033-
],
9034-
[
9035-
PHP_VERSION_ID < 80000 ? 'list<string>|false' : 'list<string>',
9036-
'$mbStrSplitConstantStringWithInvalidSplitLengthTypeAndValidEncoding',
9037-
],
9038-
[
9039-
'false',
9040-
'$mbStrSplitConstantStringWithInvalidSplitLengthTypeAndInvalidEncoding',
9041-
],
9042-
[
9043-
PHP_VERSION_ID < 80000 ? 'list<string>|false' : 'list<string>',
9044-
'$mbStrSplitConstantStringWithInvalidSplitLengthTypeAndVariableEncoding',
9045-
],
9046-
[
9047-
"array{'a', 'b', 'c', 'd', 'e', 'f'}|array{'g', 'h', 'i', 'j', 'k', 'l'}",
9048-
'$mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndValidEncoding',
9049-
],
9050-
[
9051-
'false',
9052-
'$mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndInvalidEncoding',
9053-
],
9054-
[
9055-
PHP_VERSION_ID < 80000 ? 'list<string>|false' : 'list<string>',
9056-
'$mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndVariableEncoding',
9057-
],
9058-
[
9059-
PHP_VERSION_ID < 80000 ? 'list<string>|false' : 'list<string>',
9060-
'$mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndValidEncoding',
9061-
],
9062-
[
9063-
'false',
9064-
'$mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndInvalidEncoding',
9065-
],
9066-
[
9067-
PHP_VERSION_ID < 80000 ? 'list<string>|false' : 'list<string>',
9068-
'$mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndVariableEncoding',
9069-
],
9070-
];
9071-
}
9072-
9073-
/**
9074-
* @dataProvider dataPhp74Functions
9075-
*/
9076-
public function testPhp74Functions(
9077-
string $description,
9078-
string $expression,
9079-
): void
9080-
{
9081-
if (PHP_VERSION_ID < 70400) {
9082-
$this->markTestSkipped('Test requires PHP 7.4');
9083-
}
9084-
$this->assertTypes(
9085-
__DIR__ . '/data/php74_functions.php',
9086-
$description,
9087-
$expression,
9088-
);
9089-
}
9090-
90918915
public function dataUnionMethods(): array
90928916
{
90938917
return [

tests/PHPStan/Analyser/NodeScopeResolverTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@ private static function findTestFiles(): iterable
2929
yield $testFile;
3030
}
3131

32+
if (PHP_VERSION_ID >= 80200) {
33+
yield __DIR__ . '/data/str-split-php82.php';
34+
} elseif (PHP_VERSION_ID >= 80000) {
35+
yield __DIR__ . '/data/str-split-php80.php';
36+
} else {
37+
yield __DIR__ . '/data/str-split-php74.php';
38+
}
39+
3240
if (PHP_VERSION_ID < 80200 && PHP_VERSION_ID >= 80100) {
3341
yield __DIR__ . '/data/enum-reflection-php81.php';
3442
}

tests/PHPStan/Analyser/data/functions.php

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,6 @@
5656
$gettimeofdayDefault = gettimeofday(null);
5757
$gettimeofdayBenevolent = gettimeofday($undefined);
5858

59-
// str_split
60-
/** @var string $string */
61-
$string = doFoo();
62-
$strSplitConstantStringWithoutDefinedParameters = str_split();
63-
$strSplitConstantStringWithoutDefinedSplitLength = str_split('abcdef');
64-
$strSplitStringWithoutDefinedSplitLength = str_split($string);
65-
$strSplitConstantStringWithOneSplitLength = str_split('abcdef', 1);
66-
$strSplitConstantStringWithGreaterSplitLengthThanStringLength = str_split('abcdef', 999);
67-
$strSplitConstantStringWithFailureSplitLength = str_split('abcdef', 0);
68-
$strSplitConstantStringWithInvalidSplitLengthType = str_split('abcdef', []);
69-
$strSplitConstantStringWithVariableStringAndConstantSplitLength = str_split(doFoo() ? 'abcdef' : 'ghijkl', 1);
70-
$strSplitConstantStringWithVariableStringAndVariableSplitLength = str_split(doFoo() ? 'abcdef' : 'ghijkl', doFoo() ? 1 : 2);
71-
7259
// parse_url
7360
/** @var int $integer */
7461
$integer = doFoo();

tests/PHPStan/Analyser/data/php74_functions.php

Lines changed: 0 additions & 33 deletions
This file was deleted.
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
<?php
2+
3+
namespace StrSplitPHP82;
4+
5+
use function PHPStan\Testing\assertType;
6+
7+
class StrSplit {
8+
public function legacyTest() {
9+
/** @var string $string */
10+
$string = doFoo();
11+
12+
$strSplitConstantStringWithoutDefinedParameters = str_split();
13+
assertType('non-empty-list<string>|false', $strSplitConstantStringWithoutDefinedParameters);
14+
15+
$strSplitConstantStringWithoutDefinedSplitLength = str_split('abcdef');
16+
assertType('array{\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'}', $strSplitConstantStringWithoutDefinedSplitLength);
17+
18+
$strSplitStringWithoutDefinedSplitLength = str_split($string);
19+
assertType('non-empty-list<string>', $strSplitStringWithoutDefinedSplitLength);
20+
21+
$strSplitConstantStringWithOneSplitLength = str_split('abcdef', 1);
22+
assertType('array{\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'}', $strSplitConstantStringWithOneSplitLength);
23+
24+
$strSplitConstantStringWithGreaterSplitLengthThanStringLength = str_split('abcdef', 999);
25+
assertType('array{\'abcdef\'}', $strSplitConstantStringWithGreaterSplitLengthThanStringLength);
26+
27+
$strSplitConstantStringWithFailureSplitLength = str_split('abcdef', 0);
28+
assertType('false', $strSplitConstantStringWithFailureSplitLength);
29+
30+
$strSplitConstantStringWithInvalidSplitLengthType = str_split('abcdef', []);
31+
assertType('non-empty-list<string>|false', $strSplitConstantStringWithInvalidSplitLengthType);
32+
33+
$strSplitConstantStringWithVariableStringAndConstantSplitLength = str_split(doFoo() ? 'abcdef' : 'ghijkl', 1);
34+
assertType("array{'a', 'b', 'c', 'd', 'e', 'f'}|array{'g', 'h', 'i', 'j', 'k', 'l'}", $strSplitConstantStringWithVariableStringAndConstantSplitLength);
35+
36+
$strSplitConstantStringWithVariableStringAndVariableSplitLength = str_split(doFoo() ? 'abcdef' : 'ghijkl', doFoo() ? 1 : 2);
37+
assertType('non-empty-list<string>|false', $strSplitConstantStringWithVariableStringAndVariableSplitLength);
38+
39+
}
40+
}
41+
42+
class MbStrSplit {
43+
public function legacyTest(): void
44+
{
45+
/** @var string $string */
46+
$string = doFoo();
47+
48+
$mbStrSplitConstantStringWithoutDefinedParameters = mb_str_split();
49+
assertType('list<string>|false', $mbStrSplitConstantStringWithoutDefinedParameters);
50+
51+
$mbStrSplitConstantStringWithoutDefinedSplitLength = mb_str_split('abcdef');
52+
assertType('array{\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'}', $mbStrSplitConstantStringWithoutDefinedSplitLength);
53+
54+
$mbStrSplitStringWithoutDefinedSplitLength = mb_str_split($string);
55+
assertType('list<string>', $mbStrSplitStringWithoutDefinedSplitLength);
56+
57+
$mbStrSplitConstantStringWithOneSplitLength = mb_str_split('abcdef', 1);
58+
assertType('array{\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'}', $mbStrSplitConstantStringWithOneSplitLength);
59+
60+
$mbStrSplitConstantStringWithGreaterSplitLengthThanStringLength = mb_str_split('abcdef', 999);
61+
assertType('array{\'abcdef\'}', $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLength);
62+
63+
$mbStrSplitConstantStringWithFailureSplitLength = mb_str_split('abcdef', 0);
64+
assertType('false', $mbStrSplitConstantStringWithFailureSplitLength);
65+
66+
$mbStrSplitConstantStringWithInvalidSplitLengthType = mb_str_split('abcdef', []);
67+
assertType('list<string>|false', $mbStrSplitConstantStringWithInvalidSplitLengthType);
68+
69+
$mbStrSplitConstantStringWithVariableStringAndConstantSplitLength = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', 1);
70+
assertType("array{'a', 'b', 'c', 'd', 'e', 'f'}|array{'g', 'h', 'i', 'j', 'k', 'l'}", $mbStrSplitConstantStringWithVariableStringAndConstantSplitLength);
71+
72+
$mbStrSplitConstantStringWithVariableStringAndVariableSplitLength = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', doFoo() ? 1 : 2);
73+
assertType('list<string>|false', $mbStrSplitConstantStringWithVariableStringAndVariableSplitLength);
74+
75+
$mbStrSplitConstantStringWithOneSplitLengthAndValidEncoding = mb_str_split('abcdef', 1, 'UTF-8');
76+
assertType("array{'a', 'b', 'c', 'd', 'e', 'f'}", $mbStrSplitConstantStringWithOneSplitLengthAndValidEncoding);
77+
78+
$mbStrSplitConstantStringWithOneSplitLengthAndInvalidEncoding = mb_str_split('abcdef', 1, 'FAKE');
79+
assertType('false', $mbStrSplitConstantStringWithOneSplitLengthAndInvalidEncoding);
80+
81+
$mbStrSplitConstantStringWithOneSplitLengthAndVariableEncoding = mb_str_split('abcdef', 1, doFoo());
82+
assertType('list<string>|false', $mbStrSplitConstantStringWithOneSplitLengthAndVariableEncoding);
83+
84+
$mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndValidEncoding = mb_str_split('abcdef', 999, 'UTF-8');
85+
assertType("array{'abcdef'}", $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndValidEncoding);
86+
87+
$mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndInvalidEncoding = mb_str_split('abcdef', 999, 'FAKE');
88+
assertType('false', $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndInvalidEncoding);
89+
90+
$mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndVariableEncoding = mb_str_split('abcdef', 999, doFoo());
91+
assertType('list<string>|false', $mbStrSplitConstantStringWithGreaterSplitLengthThanStringLengthAndVariableEncoding);
92+
93+
$mbStrSplitConstantStringWithFailureSplitLengthAndValidEncoding = mb_str_split('abcdef', 0, 'UTF-8');
94+
assertType('false', $mbStrSplitConstantStringWithFailureSplitLengthAndValidEncoding);
95+
96+
$mbStrSplitConstantStringWithFailureSplitLengthAndInvalidEncoding = mb_str_split('abcdef', 0, 'FAKE');
97+
assertType('false', $mbStrSplitConstantStringWithFailureSplitLengthAndInvalidEncoding);
98+
99+
$mbStrSplitConstantStringWithFailureSplitLengthAndVariableEncoding = mb_str_split('abcdef', 0, doFoo());
100+
assertType('false', $mbStrSplitConstantStringWithFailureSplitLengthAndVariableEncoding);
101+
102+
$mbStrSplitConstantStringWithInvalidSplitLengthTypeAndValidEncoding = mb_str_split('abcdef', [], 'UTF-8');
103+
assertType('list<string>|false', $mbStrSplitConstantStringWithInvalidSplitLengthTypeAndValidEncoding);
104+
105+
$mbStrSplitConstantStringWithInvalidSplitLengthTypeAndInvalidEncoding = mb_str_split('abcdef', [], 'FAKE');
106+
assertType('false', $mbStrSplitConstantStringWithInvalidSplitLengthTypeAndInvalidEncoding);
107+
108+
$mbStrSplitConstantStringWithInvalidSplitLengthTypeAndVariableEncoding = mb_str_split('abcdef', [], doFoo());
109+
assertType('list<string>|false', $mbStrSplitConstantStringWithInvalidSplitLengthTypeAndVariableEncoding);
110+
111+
$mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndValidEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', 1, 'UTF-8');
112+
assertType("array{'a', 'b', 'c', 'd', 'e', 'f'}|array{'g', 'h', 'i', 'j', 'k', 'l'}", $mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndValidEncoding);
113+
114+
$mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndInvalidEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', 1, 'FAKE');
115+
assertType('false', $mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndInvalidEncoding);
116+
117+
$mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndVariableEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', 1, doFoo());
118+
assertType('list<string>|false', $mbStrSplitConstantStringWithVariableStringAndConstantSplitLengthAndVariableEncoding);
119+
120+
$mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndValidEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', doFoo() ? 1 : 2, 'UTF-8');
121+
assertType('list<string>|false', $mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndValidEncoding);
122+
123+
$mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndInvalidEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', doFoo() ? 1 : 2, 'FAKE');
124+
assertType('false', $mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndInvalidEncoding);
125+
126+
$mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndVariableEncoding = mb_str_split(doFoo() ? 'abcdef' : 'ghijkl', doFoo() ? 1 : 2, doFoo());
127+
assertType('list<string>|false', $mbStrSplitConstantStringWithVariableStringAndVariableSplitLengthAndVariableEncoding);
128+
}
129+
}

0 commit comments

Comments
 (0)