Update to PHPStan 1.9
parent
7dfe4a38c8
commit
6c85b875f2
|
@ -226,16 +226,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/pcre",
|
"name": "composer/pcre",
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/composer/pcre.git",
|
"url": "https://github.com/composer/pcre.git",
|
||||||
"reference": "c8e9d27cfc5ed22643c19c160455b473ffd8aabe"
|
"reference": "562ca94029b37bb04205e2abb43be5550d2945d7"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/composer/pcre/zipball/c8e9d27cfc5ed22643c19c160455b473ffd8aabe",
|
"url": "https://api.github.com/repos/composer/pcre/zipball/562ca94029b37bb04205e2abb43be5550d2945d7",
|
||||||
"reference": "c8e9d27cfc5ed22643c19c160455b473ffd8aabe",
|
"reference": "562ca94029b37bb04205e2abb43be5550d2945d7",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -277,7 +277,7 @@
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/composer/pcre/issues",
|
"issues": "https://github.com/composer/pcre/issues",
|
||||||
"source": "https://github.com/composer/pcre/tree/2.0.0"
|
"source": "https://github.com/composer/pcre/tree/2.0.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -293,7 +293,7 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-02-25T20:05:29+00:00"
|
"time": "2022-11-03T15:56:01+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/semver",
|
"name": "composer/semver",
|
||||||
|
@ -941,16 +941,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v5.4.14",
|
"version": "v5.4.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/console.git",
|
"url": "https://github.com/symfony/console.git",
|
||||||
"reference": "984ea2c0f45f42dfed01d2f3987b187467c4b16d"
|
"reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/console/zipball/984ea2c0f45f42dfed01d2f3987b187467c4b16d",
|
"url": "https://api.github.com/repos/symfony/console/zipball/ea59bb0edfaf9f28d18d8791410ee0355f317669",
|
||||||
"reference": "984ea2c0f45f42dfed01d2f3987b187467c4b16d",
|
"reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -1020,7 +1020,7 @@
|
||||||
"terminal"
|
"terminal"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/console/tree/v5.4.14"
|
"source": "https://github.com/symfony/console/tree/v5.4.15"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -1036,7 +1036,7 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-10-07T08:01:20+00:00"
|
"time": "2022-10-26T21:41:52+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/deprecation-contracts",
|
"name": "symfony/deprecation-contracts",
|
||||||
|
@ -1950,16 +1950,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/string",
|
"name": "symfony/string",
|
||||||
"version": "v5.4.14",
|
"version": "v5.4.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/string.git",
|
"url": "https://github.com/symfony/string.git",
|
||||||
"reference": "089e7237497fae7a9c404d0c3aeb8db3254733e4"
|
"reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/string/zipball/089e7237497fae7a9c404d0c3aeb8db3254733e4",
|
"url": "https://api.github.com/repos/symfony/string/zipball/571334ce9f687e3e6af72db4d3b2a9431e4fd9ed",
|
||||||
"reference": "089e7237497fae7a9c404d0c3aeb8db3254733e4",
|
"reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -2016,7 +2016,7 @@
|
||||||
"utf8"
|
"utf8"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/string/tree/v5.4.14"
|
"source": "https://github.com/symfony/string/tree/v5.4.15"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -2038,16 +2038,16 @@
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan",
|
"name": "phpstan/phpstan",
|
||||||
"version": "1.8.11",
|
"version": "1.9.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpstan.git",
|
"url": "https://github.com/phpstan/phpstan.git",
|
||||||
"reference": "46e223dd68a620da18855c23046ddb00940b4014"
|
"reference": "e08de53a5eec983de78a787a88e72518cf8fe43a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/46e223dd68a620da18855c23046ddb00940b4014",
|
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/e08de53a5eec983de78a787a88e72518cf8fe43a",
|
||||||
"reference": "46e223dd68a620da18855c23046ddb00940b4014",
|
"reference": "e08de53a5eec983de78a787a88e72518cf8fe43a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -2077,7 +2077,7 @@
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpstan/phpstan/issues",
|
"issues": "https://github.com/phpstan/phpstan/issues",
|
||||||
"source": "https://github.com/phpstan/phpstan/tree/1.8.11"
|
"source": "https://github.com/phpstan/phpstan/tree/1.9.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -2093,7 +2093,7 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-10-24T15:45:13+00:00"
|
"time": "2022-11-03T07:26:48+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan-deprecation-rules",
|
"name": "phpstan/phpstan-deprecation-rules",
|
||||||
|
@ -2147,21 +2147,21 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan-phpunit",
|
"name": "phpstan/phpstan-phpunit",
|
||||||
"version": "1.1.3",
|
"version": "1.2.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpstan-phpunit.git",
|
"url": "https://github.com/phpstan/phpstan-phpunit.git",
|
||||||
"reference": "6b93db7fae6d6f3e81a5b4297f93af6fe4146785"
|
"reference": "dea1f87344c6964c607d9076dee42d891f3923f0"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/6b93db7fae6d6f3e81a5b4297f93af6fe4146785",
|
"url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/dea1f87344c6964c607d9076dee42d891f3923f0",
|
||||||
"reference": "6b93db7fae6d6f3e81a5b4297f93af6fe4146785",
|
"reference": "dea1f87344c6964c607d9076dee42d891f3923f0",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.2 || ^8.0",
|
"php": "^7.2 || ^8.0",
|
||||||
"phpstan/phpstan": "^1.8.0"
|
"phpstan/phpstan": "^1.8.11"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"phpunit/phpunit": "<7.0"
|
"phpunit/phpunit": "<7.0"
|
||||||
|
@ -2193,9 +2193,9 @@
|
||||||
"description": "PHPUnit extensions and rules for PHPStan",
|
"description": "PHPUnit extensions and rules for PHPStan",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpstan/phpstan-phpunit/issues",
|
"issues": "https://github.com/phpstan/phpstan-phpunit/issues",
|
||||||
"source": "https://github.com/phpstan/phpstan-phpunit/tree/1.1.3"
|
"source": "https://github.com/phpstan/phpstan-phpunit/tree/1.2.2"
|
||||||
},
|
},
|
||||||
"time": "2022-10-24T11:38:17+00:00"
|
"time": "2022-10-28T10:23:07+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan-strict-rules",
|
"name": "phpstan/phpstan-strict-rules",
|
||||||
|
@ -2247,16 +2247,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan-symfony",
|
"name": "phpstan/phpstan-symfony",
|
||||||
"version": "1.2.14",
|
"version": "1.2.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpstan-symfony.git",
|
"url": "https://github.com/phpstan/phpstan-symfony.git",
|
||||||
"reference": "f7dd737329504115adaa987697a759a66dd2ee8a"
|
"reference": "7210072b7fd83bf62eb5f889d4da70b80c07f04c"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/f7dd737329504115adaa987697a759a66dd2ee8a",
|
"url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/7210072b7fd83bf62eb5f889d4da70b80c07f04c",
|
||||||
"reference": "f7dd737329504115adaa987697a759a66dd2ee8a",
|
"reference": "7210072b7fd83bf62eb5f889d4da70b80c07f04c",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -2312,9 +2312,9 @@
|
||||||
"description": "Symfony Framework extensions and rules for PHPStan",
|
"description": "Symfony Framework extensions and rules for PHPStan",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpstan/phpstan-symfony/issues",
|
"issues": "https://github.com/phpstan/phpstan-symfony/issues",
|
||||||
"source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.14"
|
"source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.15"
|
||||||
},
|
},
|
||||||
"time": "2022-10-05T11:19:29+00:00"
|
"time": "2022-11-03T15:03:30+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/phpunit-bridge",
|
"name": "symfony/phpunit-bridge",
|
||||||
|
|
|
@ -10,11 +10,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Autoload/ClassLoader.php
|
path: ../src/Composer/Autoload/ClassLoader.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$value of function count expects array\\|Countable, array\\<string\\>\\|null given\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: ../src/Composer/Command/BaseDependencyCommand.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in an if condition, string\\|false given\\.$#"
|
message: "#^Only booleans are allowed in an if condition, string\\|false given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
|
|
@ -5,11 +5,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Advisory/Auditor.php
|
path: ../src/Composer/Advisory/Auditor.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Binary operation \"\\.\" between non\\-falsy\\-string and array\\|string\\|null results in an error\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Autoload/AutoloadGenerator.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#"
|
message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#"
|
||||||
count: 10
|
count: 10
|
||||||
|
@ -215,11 +210,6 @@ parameters:
|
||||||
count: 3
|
count: 3
|
||||||
path: ../src/Composer/Command/BaseDependencyCommand.php
|
path: ../src/Composer/Command/BaseDependencyCommand.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset int does not exist on array\\<string\\>\\|null\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: ../src/Composer/Command/BaseDependencyCommand.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in a negated boolean, Composer\\\\Package\\\\BasePackage\\|null given\\.$#"
|
message: "#^Only booleans are allowed in a negated boolean, Composer\\\\Package\\\\BasePackage\\|null given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -245,11 +235,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Command/BaseDependencyCommand.php
|
path: ../src/Composer/Command/BaseDependencyCommand.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$var of function count expects array\\|Countable, array\\<string\\>\\|null given\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: ../src/Composer/Command/BaseDependencyCommand.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#2 \\$commandName of class Composer\\\\Plugin\\\\CommandEvent constructor expects string, string\\|null given\\.$#"
|
message: "#^Parameter \\#2 \\$commandName of class Composer\\\\Plugin\\\\CommandEvent constructor expects string, string\\|null given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -640,11 +625,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Command/RunScriptCommand.php
|
path: ../src/Composer/Command/RunScriptCommand.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Only booleans are allowed in a negated boolean, int\\<0, max\\> given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Command/RunScriptCommand.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in a negated boolean, mixed given\\.$#"
|
message: "#^Only booleans are allowed in a negated boolean, mixed given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -670,11 +650,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Command/SearchCommand.php
|
path: ../src/Composer/Command/SearchCommand.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Only booleans are allowed in &&, array\\<int, array\\<string, string\\|true\\|null\\>\\> given on the left side\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Command/SearchCommand.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in a negated boolean, Composer\\\\Composer\\|null given\\.$#"
|
message: "#^Only booleans are allowed in a negated boolean, Composer\\\\Composer\\|null given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -755,16 +730,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Command/ShowCommand.php
|
path: ../src/Composer/Command/ShowCommand.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Method Composer\\\\Command\\\\ShowCommand\\:\\:appendAutoload\\(\\) should return array\\<string, array\\<string\\>\\|string\\|null\\> but returns array\\<string, array\\<array\\<int\\|string, array\\<string\\>\\|string\\>\\|string\\>\\|string\\|null\\>\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Command/ShowCommand.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Method Composer\\\\Command\\\\ShowCommand\\:\\:appendLicenses\\(\\) should return array\\<string, array\\<string\\>\\|string\\|null\\> but returns array\\<string, array\\<array\\<string, string\\>\\|string\\>\\|string\\|null\\>\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Command/ShowCommand.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Method Composer\\\\Command\\\\ShowCommand\\:\\:getPackage\\(\\) should return array\\{Composer\\\\Package\\\\CompletePackageInterface\\|null, array\\<string, string\\>\\} but returns array\\{Composer\\\\Package\\\\BasePackage\\|int\\|null, array\\<string, string\\>\\}\\.$#"
|
message: "#^Method Composer\\\\Command\\\\ShowCommand\\:\\:getPackage\\(\\) should return array\\{Composer\\\\Package\\\\CompletePackageInterface\\|null, array\\<string, string\\>\\} but returns array\\{Composer\\\\Package\\\\BasePackage\\|int\\|null, array\\<string, string\\>\\}\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -865,11 +830,6 @@ parameters:
|
||||||
count: 2
|
count: 2
|
||||||
path: ../src/Composer/Command/ShowCommand.php
|
path: ../src/Composer/Command/ShowCommand.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Only booleans are allowed in an if condition, array\\<string, array\\<int\\|string, array\\<string\\>\\|string\\>\\> given\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: ../src/Composer/Command/ShowCommand.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in an if condition, array\\<string, string\\> given\\.$#"
|
message: "#^Only booleans are allowed in an if condition, array\\<string, string\\> given\\.$#"
|
||||||
count: 4
|
count: 4
|
||||||
|
@ -900,11 +860,6 @@ parameters:
|
||||||
count: 2
|
count: 2
|
||||||
path: ../src/Composer/Command/ShowCommand.php
|
path: ../src/Composer/Command/ShowCommand.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$json of method Composer\\\\Command\\\\ShowCommand\\:\\:appendAutoload\\(\\) expects array\\<string, array\\<string\\>\\|string\\|null\\>, array\\<string, array\\<string\\|null\\>\\|string\\|false\\|null\\> given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Command/ShowCommand.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$package of method Composer\\\\Repository\\\\CompositeRepository\\:\\:hasPackage\\(\\) expects Composer\\\\Package\\\\PackageInterface, Composer\\\\Package\\\\BasePackage\\|int given\\.$#"
|
message: "#^Parameter \\#1 \\$package of method Composer\\\\Repository\\\\CompositeRepository\\:\\:hasPackage\\(\\) expects Composer\\\\Package\\\\PackageInterface, Composer\\\\Package\\\\BasePackage\\|int given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -1275,11 +1230,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/DependencyResolver/Decisions.php
|
path: ../src/Composer/DependencyResolver/Decisions.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 0 does not exist on array\\{int, Composer\\\\DependencyResolver\\\\Rule\\}\\|null\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/DependencyResolver/Decisions.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in a ternary operator condition, Composer\\\\DependencyResolver\\\\Pool\\|null given\\.$#"
|
message: "#^Only booleans are allowed in a ternary operator condition, Composer\\\\DependencyResolver\\\\Pool\\|null given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -1490,11 +1440,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/DependencyResolver/Rule.php
|
path: ../src/Composer/DependencyResolver/Rule.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Method Composer\\\\DependencyResolver\\\\RuleSet\\:\\:getTypes\\(\\) should return array\\{0, 1, 4\\} but returns array\\<int, 0\\|1\\|4\\>\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/DependencyResolver/RuleSet.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in &&, Composer\\\\DependencyResolver\\\\Pool\\|null given on the right side\\.$#"
|
message: "#^Only booleans are allowed in &&, Composer\\\\DependencyResolver\\\\Pool\\|null given on the right side\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -1575,11 +1520,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/DependencyResolver/Solver.php
|
path: ../src/Composer/DependencyResolver/Solver.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Only booleans are allowed in a negated boolean, int\\|null given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/DependencyResolver/Solver.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in an if condition, Composer\\\\DependencyResolver\\\\Rule\\|null given\\.$#"
|
message: "#^Only booleans are allowed in an if condition, Composer\\\\DependencyResolver\\\\Rule\\|null given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -1611,7 +1551,7 @@ parameters:
|
||||||
path: ../src/Composer/DependencyResolver/Solver.php
|
path: ../src/Composer/DependencyResolver/Solver.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$literals of class Composer\\\\DependencyResolver\\\\GenericRule constructor expects array\\<int, int\\>, array\\<int, int\\|null\\> given\\.$#"
|
message: "#^Parameter \\#1 \\$literals of class Composer\\\\DependencyResolver\\\\GenericRule constructor expects list\\<int\\>, non\\-empty\\-list\\<int\\|null\\> given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/DependencyResolver/Solver.php
|
path: ../src/Composer/DependencyResolver/Solver.php
|
||||||
|
|
||||||
|
@ -2382,7 +2322,7 @@ parameters:
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in a negated boolean, array\\<Composer\\\\DependencyResolver\\\\Operation\\\\OperationInterface\\> given\\.$#"
|
message: "#^Only booleans are allowed in a negated boolean, array\\<Composer\\\\DependencyResolver\\\\Operation\\\\OperationInterface\\> given\\.$#"
|
||||||
count: 2
|
count: 1
|
||||||
path: ../src/Composer/Installer.php
|
path: ../src/Composer/Installer.php
|
||||||
|
|
||||||
-
|
-
|
||||||
|
@ -2402,7 +2342,7 @@ parameters:
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in an if condition, array\\<Composer\\\\DependencyResolver\\\\Operation\\\\OperationInterface\\> given\\.$#"
|
message: "#^Only booleans are allowed in an if condition, array\\<Composer\\\\DependencyResolver\\\\Operation\\\\OperationInterface\\> given\\.$#"
|
||||||
count: 2
|
count: 1
|
||||||
path: ../src/Composer/Installer.php
|
path: ../src/Composer/Installer.php
|
||||||
|
|
||||||
-
|
-
|
||||||
|
@ -2555,26 +2495,11 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Installer/InstallationManager.php
|
path: ../src/Composer/Installer/InstallationManager.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$onFulfilled of method React\\\\Promise\\\\PromiseInterface\\:\\:then\\(\\) expects \\(callable\\(\\)\\: mixed\\)\\|null, React\\\\Promise\\\\PromiseInterface given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Installer/InstallationManager.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#2 \\$offset of function array_splice expects int, int\\|string given\\.$#"
|
message: "#^Parameter \\#2 \\$offset of function array_splice expects int, int\\|string given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Installer/InstallationManager.php
|
path: ../src/Composer/Installer/InstallationManager.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#3 \\$cleanupPromises of method Composer\\\\Installer\\\\InstallationManager\\:\\:executeBatch\\(\\) expects array\\<React\\\\Promise\\\\PromiseInterface\\>, array\\<\\(Closure\\)\\|React\\\\Promise\\\\PromiseInterface\\> given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Installer/InstallationManager.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Trying to invoke React\\\\Promise\\\\PromiseInterface but it might not be a callable\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Installer/InstallationManager.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Variable method call on \\$this\\(Composer\\\\Installer\\\\InstallationManager\\)\\.$#"
|
message: "#^Variable method call on \\$this\\(Composer\\\\Installer\\\\InstallationManager\\)\\.$#"
|
||||||
count: 2
|
count: 2
|
||||||
|
@ -2955,11 +2880,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Package/Loader/JsonLoader.php
|
path: ../src/Composer/Package/Loader/JsonLoader.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Instanceof between Composer\\\\Package\\\\RootPackage and Composer\\\\Package\\\\RootPackage will always evaluate to true\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Package/Loader/RootPackageLoader.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in an elseif condition, string\\|null given\\.$#"
|
message: "#^Only booleans are allowed in an elseif condition, string\\|null given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -3150,11 +3070,6 @@ parameters:
|
||||||
count: 3
|
count: 3
|
||||||
path: ../src/Composer/Package/Version/VersionGuesser.php
|
path: ../src/Composer/Package/Version/VersionGuesser.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 'feature_pretty…' does not exist on array\\{version\\: non\\-falsy\\-string, commit\\: string\\|null, pretty_version\\: string\\|null, feature_version\\: non\\-falsy\\-string, feature_pretty_version\\?\\: string\\|null\\}\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Package/Version/VersionGuesser.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in &&, string given on the left side\\.$#"
|
message: "#^Only booleans are allowed in &&, string given on the left side\\.$#"
|
||||||
count: 2
|
count: 2
|
||||||
|
@ -3515,11 +3430,6 @@ parameters:
|
||||||
count: 3
|
count: 3
|
||||||
path: ../src/Composer/Repository/CompositeRepository.php
|
path: ../src/Composer/Repository/CompositeRepository.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Only booleans are allowed in a ternary operator condition, array\\<int, array\\<int, array\\<string, string\\|true\\|null\\>\\>\\> given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Repository/CompositeRepository.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in a ternary operator condition, array\\<int, array\\<string, array\\<string, string\\>\\>\\> given\\.$#"
|
message: "#^Only booleans are allowed in a ternary operator condition, array\\<int, array\\<string, array\\<string, string\\>\\>\\> given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -4163,11 +4073,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Repository/VcsRepository.php
|
path: ../src/Composer/Repository/VcsRepository.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Only booleans are allowed in &&, array\\<string\\> given on the right side\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Repository/VcsRepository.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in a negated boolean, Composer\\\\Package\\\\Loader\\\\LoaderInterface\\|null given\\.$#"
|
message: "#^Only booleans are allowed in a negated boolean, Composer\\\\Package\\\\Loader\\\\LoaderInterface\\|null given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -4303,11 +4208,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Util/Bitbucket.php
|
path: ../src/Composer/Util/Bitbucket.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 'access_token' does not exist on array\\{access_token\\: string, expires_in\\?\\: int\\}\\|null\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Util/Bitbucket.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in a negated boolean, string given\\.$#"
|
message: "#^Only booleans are allowed in a negated boolean, string given\\.$#"
|
||||||
count: 2
|
count: 2
|
||||||
|
@ -5363,11 +5263,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../tests/Composer/Test/DependencyResolver/PoolBuilderTest.php
|
path: ../tests/Composer/Test/DependencyResolver/PoolBuilderTest.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Method Composer\\\\Test\\\\DependencyResolver\\\\PoolBuilderTest\\:\\:getPackageResultSet\\(\\) should return array\\<string\\> but returns array\\<int, int\\<min, \\-1\\>\\|int\\<1, max\\>\\|string\\>\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../tests/Composer/Test/DependencyResolver/PoolBuilderTest.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in an if condition, int\\|false given\\.$#"
|
message: "#^Only booleans are allowed in an if condition, int\\|false given\\.$#"
|
||||||
count: 2
|
count: 2
|
||||||
|
@ -5686,36 +5581,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../tests/Composer/Test/Package/Loader/ValidatingArrayLoaderTest.php
|
path: ../tests/Composer/Test/Package/Loader/ValidatingArrayLoaderTest.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 'commit' does not exist on array\\{version\\: string, commit\\: string\\|null, pretty_version\\: string\\|null, feature_version\\?\\: string\\|null, feature_pretty_version\\?\\: string\\|null\\}\\|null\\.$#"
|
|
||||||
count: 6
|
|
||||||
path: ../tests/Composer/Test/Package/Version/VersionGuesserTest.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 'feature_pretty…' does not exist on array\\{version\\: string, commit\\: string\\|null, pretty_version\\: string\\|null, feature_version\\?\\: string\\|null, feature_pretty_version\\?\\: string\\|null\\}\\|null\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: ../tests/Composer/Test/Package/Version/VersionGuesserTest.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 'feature_version' does not exist on array\\{version\\: string, commit\\: string\\|null, pretty_version\\: string\\|null, feature_version\\?\\: string\\|null, feature_pretty_version\\?\\: string\\|null\\}\\|null\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: ../tests/Composer/Test/Package/Version/VersionGuesserTest.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 'pretty_version' does not exist on array\\{version\\: string, commit\\: string\\|null, pretty_version\\: string\\|null, feature_version\\?\\: string\\|null, feature_pretty_version\\?\\: string\\|null\\}\\|null\\.$#"
|
|
||||||
count: 5
|
|
||||||
path: ../tests/Composer/Test/Package/Version/VersionGuesserTest.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 'version' does not exist on array\\{version\\: string, commit\\: string\\|null, pretty_version\\: string\\|null, feature_version\\?\\: string\\|null, feature_pretty_version\\?\\: string\\|null\\}\\|null\\.$#"
|
|
||||||
count: 14
|
|
||||||
path: ../tests/Composer/Test/Package/Version/VersionGuesserTest.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#2 \\$array of method PHPUnit\\\\Framework\\\\Assert\\:\\:assertArrayNotHasKey\\(\\) expects array\\|ArrayAccess, array\\<string, string\\|null\\>\\|null given\\.$#"
|
|
||||||
count: 4
|
|
||||||
path: ../tests/Composer/Test/Package/Version/VersionGuesserTest.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in an if condition, string\\|null given\\.$#"
|
message: "#^Only booleans are allowed in an if condition, string\\|null given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -5736,21 +5601,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../tests/Composer/Test/Plugin/PluginInstallerTest.php
|
path: ../tests/Composer/Test/Plugin/PluginInstallerTest.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) with 'Composer\\\\\\\\Plugin…' and Composer\\\\Plugin\\\\Capability\\\\CommandProvider will always evaluate to true\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../tests/Composer/Test/Plugin/PluginInstallerTest.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) with 'Composer\\\\\\\\Plugin…' and Composer\\\\Test\\\\Plugin\\\\Mock\\\\Capability will always evaluate to true\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../tests/Composer/Test/Plugin/PluginInstallerTest.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) with 'Composer\\\\\\\\Test…' and Composer\\\\Test\\\\Plugin\\\\Mock\\\\Capability will always evaluate to true\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../tests/Composer/Test/Plugin/PluginInstallerTest.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#2 \\$capabilityClassName of method Composer\\\\Plugin\\\\PluginManager\\:\\:getPluginCapability\\(\\) expects class\\-string\\<Composer\\\\Plugin\\\\Capability\\\\Capability\\>, string given\\.$#"
|
message: "#^Parameter \\#2 \\$capabilityClassName of method Composer\\\\Plugin\\\\PluginManager\\:\\:getPluginCapability\\(\\) expects class\\-string\\<Composer\\\\Plugin\\\\Capability\\\\Capability\\>, string given\\.$#"
|
||||||
count: 2
|
count: 2
|
||||||
|
@ -5801,31 +5651,11 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../tests/Composer/Test/Repository/PathRepositoryTest.php
|
path: ../tests/Composer/Test/Repository/PathRepositoryTest.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) with 'Composer\\\\\\\\Repository…' and Composer\\\\Repository\\\\FilterRepository will always evaluate to true\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../tests/Composer/Test/Repository/RepositoryManagerTest.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) with 'Composer\\\\\\\\Repository…' and Composer\\\\Repository\\\\RepositoryInterface will always evaluate to true\\.$#"
|
message: "#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) with 'Composer\\\\\\\\Repository…' and Composer\\\\Repository\\\\RepositoryInterface will always evaluate to true\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
path: ../tests/Composer/Test/Repository/RepositoryManagerTest.php
|
path: ../tests/Composer/Test/Repository/RepositoryManagerTest.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 'reference' does not exist on array\\{type\\: string, url\\: string, reference\\: string, shasum\\: string\\}\\|null\\.$#"
|
|
||||||
count: 4
|
|
||||||
path: ../tests/Composer/Test/Repository/Vcs/GitHubDriverTest.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 'type' does not exist on array\\{type\\: string, url\\: string, reference\\: string, shasum\\: string\\}\\|null\\.$#"
|
|
||||||
count: 4
|
|
||||||
path: ../tests/Composer/Test/Repository/Vcs/GitHubDriverTest.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 'url' does not exist on array\\{type\\: string, url\\: string, reference\\: string, shasum\\: string\\}\\|null\\.$#"
|
|
||||||
count: 4
|
|
||||||
path: ../tests/Composer/Test/Repository/Vcs/GitHubDriverTest.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$objectOrValue of method ReflectionProperty\\:\\:setValue\\(\\) expects object\\|null, object\\|string given\\.$#"
|
message: "#^Parameter \\#1 \\$objectOrValue of method ReflectionProperty\\:\\:setValue\\(\\) expects object\\|null, object\\|string given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -5836,11 +5666,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../tests/Composer/Test/Repository/Vcs/PerforceDriverTest.php
|
path: ../tests/Composer/Test/Repository/Vcs/PerforceDriverTest.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertEmpty\\(\\) with array\\<'0\\.6\\.0'\\|'1\\.0\\.0'\\|'1\\.0\\.x\\-dev'\\|'1\\.1\\.x\\-dev'\\|'9999999\\-dev'\\|'dev\\-feature\\-b'\\|'dev\\-feature/a\\-1\\.0\\-B'\\|'dev\\-master', true\\> and literal\\-string&non\\-falsy\\-string will always evaluate to false\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../tests/Composer/Test/Repository/VcsRepositoryTest.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in a negated boolean, string given\\.$#"
|
message: "#^Only booleans are allowed in a negated boolean, string given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -5876,6 +5701,11 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../tests/Composer/Test/TestCase.php
|
path: ../tests/Composer/Test/TestCase.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Cannot access an offset on array\\<int, array\\<string, int\\|string\\>\\>\\|false\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../tests/Composer/Test/Util/GitTest.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) with 'Composer\\\\\\\\Util\\\\\\\\Http…' and Composer\\\\Util\\\\Http\\\\ProxyManager will always evaluate to true\\.$#"
|
message: "#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) with 'Composer\\\\\\\\Util\\\\\\\\Http…' and Composer\\\\Util\\\\Http\\\\ProxyManager will always evaluate to true\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
@ -5971,11 +5801,6 @@ parameters:
|
||||||
count: 2
|
count: 2
|
||||||
path: ../tests/Composer/Test/Util/TlsHelperTest.php
|
path: ../tests/Composer/Test/Util/TlsHelperTest.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Offset 'cn' does not exist on array\\{cn\\: string, san\\: array\\<string\\>\\}\\|null\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../tests/Composer/Test/Util/TlsHelperTest.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in a ternary operator condition, array\\<string\\> given\\.$#"
|
message: "#^Only booleans are allowed in a ternary operator condition, array\\<string\\> given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
|
|
@ -41,7 +41,7 @@ abstract class BaseDependencyCommand extends BaseCommand
|
||||||
protected const OPTION_RECURSIVE = 'recursive';
|
protected const OPTION_RECURSIVE = 'recursive';
|
||||||
protected const OPTION_TREE = 'tree';
|
protected const OPTION_TREE = 'tree';
|
||||||
|
|
||||||
/** @var ?string[] */
|
/** @var string[] */
|
||||||
protected $colors;
|
protected $colors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -38,7 +38,7 @@ trait CompletionTrait
|
||||||
/**
|
/**
|
||||||
* Suggestion values for "prefer-install" option
|
* Suggestion values for "prefer-install" option
|
||||||
*
|
*
|
||||||
* @return string[]
|
* @return list<string>
|
||||||
*/
|
*/
|
||||||
private function suggestPreferInstall(): array
|
private function suggestPreferInstall(): array
|
||||||
{
|
{
|
||||||
|
|
|
@ -63,7 +63,7 @@ EOT
|
||||||
}
|
}
|
||||||
|
|
||||||
$io = $this->getIO();
|
$io = $this->getIO();
|
||||||
/** @var string $binary */
|
/** @var int $binary */
|
||||||
$binary = $io->select(
|
$binary = $io->select(
|
||||||
'Binary to run: ',
|
'Binary to run: ',
|
||||||
$binaries,
|
$binaries,
|
||||||
|
@ -123,7 +123,7 @@ EOT
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string[]
|
* @return list<string>
|
||||||
*/
|
*/
|
||||||
private function getBinaries(bool $forDisplay): array
|
private function getBinaries(bool $forDisplay): array
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,9 +33,9 @@ class GlobalCommand extends BaseCommand
|
||||||
{
|
{
|
||||||
$application = $this->getApplication();
|
$application = $this->getApplication();
|
||||||
if ($input->mustSuggestArgumentValuesFor('command-name')) {
|
if ($input->mustSuggestArgumentValuesFor('command-name')) {
|
||||||
$suggestions->suggestValues(array_filter(array_map(static function (Command $command) {
|
$suggestions->suggestValues(array_values(array_filter(array_map(static function (Command $command) {
|
||||||
return $command->isHidden() ? null : $command->getName();
|
return $command->isHidden() ? null : $command->getName();
|
||||||
}, $application->all())));
|
}, $application->all()))));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,7 +95,7 @@ EOT
|
||||||
|
|
||||||
$results = $repos->search($query, $mode, $type);
|
$results = $repos->search($query, $mode, $type);
|
||||||
|
|
||||||
if ($results && $format === 'text') {
|
if (\count($results) > 0 && $format === 'text') {
|
||||||
$width = $this->getTerminalWidth();
|
$width = $this->getTerminalWidth();
|
||||||
|
|
||||||
$nameLength = 0;
|
$nameLength = 0;
|
||||||
|
|
|
@ -55,6 +55,9 @@ use Symfony\Component\Console\Output\OutputInterface;
|
||||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||||
* @author Jérémy Romey <jeremyFreeAgent>
|
* @author Jérémy Romey <jeremyFreeAgent>
|
||||||
* @author Mihai Plasoianu <mihai@plasoianu.de>
|
* @author Mihai Plasoianu <mihai@plasoianu.de>
|
||||||
|
*
|
||||||
|
* @phpstan-import-type AutoloadRules from PackageInterface
|
||||||
|
* @phpstan-type JsonStructure array<string, null|string|array<string|null>|AutoloadRules>
|
||||||
*/
|
*/
|
||||||
class ShowCommand extends BaseCommand
|
class ShowCommand extends BaseCommand
|
||||||
{
|
{
|
||||||
|
@ -820,7 +823,7 @@ EOT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($package->getAutoload()) {
|
if (\count($package->getAutoload()) > 0) {
|
||||||
$io->write("\n<info>autoload</info>");
|
$io->write("\n<info>autoload</info>");
|
||||||
$autoloadConfig = $package->getAutoload();
|
$autoloadConfig = $package->getAutoload();
|
||||||
foreach ($autoloadConfig as $type => $autoloads) {
|
foreach ($autoloadConfig as $type => $autoloads) {
|
||||||
|
@ -955,9 +958,9 @@ EOT
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($installedRepo->hasPackage($package)) {
|
if ($installedRepo->hasPackage($package)) {
|
||||||
$json['path'] = realpath($this->requireComposer()->getInstallationManager()->getInstallPath($package));
|
$path = realpath($this->requireComposer()->getInstallationManager()->getInstallPath($package));
|
||||||
if ($json['path'] === false) {
|
if ($path !== false) {
|
||||||
unset($json['path']);
|
$json['path'] = $path;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -985,9 +988,9 @@ EOT
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<string, string|string[]|null> $json
|
* @param JsonStructure $json
|
||||||
* @param array<string, string> $versions
|
* @param array<string, string> $versions
|
||||||
* @return array<string, string|string[]|null>
|
* @return JsonStructure
|
||||||
*/
|
*/
|
||||||
private function appendVersions(array $json, array $versions): array
|
private function appendVersions(array $json, array $versions): array
|
||||||
{
|
{
|
||||||
|
@ -999,8 +1002,8 @@ EOT
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<string, string|string[]|null> $json
|
* @param JsonStructure $json
|
||||||
* @return array<string, string|string[]|null>
|
* @return JsonStructure
|
||||||
*/
|
*/
|
||||||
private function appendLicenses(array $json, CompletePackageInterface $package): array
|
private function appendLicenses(array $json, CompletePackageInterface $package): array
|
||||||
{
|
{
|
||||||
|
@ -1026,12 +1029,12 @@ EOT
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<string, string|string[]|null> $json
|
* @param JsonStructure $json
|
||||||
* @return array<string, string|string[]|null>
|
* @return JsonStructure
|
||||||
*/
|
*/
|
||||||
private function appendAutoload(array $json, CompletePackageInterface $package): array
|
private function appendAutoload(array $json, CompletePackageInterface $package): array
|
||||||
{
|
{
|
||||||
if ($package->getAutoload()) {
|
if (\count($package->getAutoload()) > 0) {
|
||||||
$autoload = [];
|
$autoload = [];
|
||||||
|
|
||||||
foreach ($package->getAutoload() as $type => $autoloads) {
|
foreach ($package->getAutoload() as $type => $autoloads) {
|
||||||
|
@ -1059,8 +1062,8 @@ EOT
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<string, string|string[]|null> $json
|
* @param JsonStructure $json
|
||||||
* @return array<string, string|string[]|null>
|
* @return JsonStructure
|
||||||
*/
|
*/
|
||||||
private function appendLinks(array $json, CompletePackageInterface $package): array
|
private function appendLinks(array $json, CompletePackageInterface $package): array
|
||||||
{
|
{
|
||||||
|
@ -1072,8 +1075,8 @@ EOT
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<string, string|string[]|null> $json
|
* @param JsonStructure $json
|
||||||
* @return array<string, string|string[]|null>
|
* @return JsonStructure
|
||||||
*/
|
*/
|
||||||
private function appendLink(array $json, CompletePackageInterface $package, string $linkType): array
|
private function appendLink(array $json, CompletePackageInterface $package, string $linkType): array
|
||||||
{
|
{
|
||||||
|
|
|
@ -496,6 +496,7 @@ class Config
|
||||||
}
|
}
|
||||||
|
|
||||||
return Preg::replaceCallback('#\{\$(.+)\}#', function ($match) use ($flags) {
|
return Preg::replaceCallback('#\{\$(.+)\}#', function ($match) use ($flags) {
|
||||||
|
assert(is_string($match[1]));
|
||||||
return $this->get($match[1], $flags);
|
return $this->get($match[1], $flags);
|
||||||
}, $value);
|
}, $value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,17 +403,7 @@ class Application extends BaseApplication
|
||||||
$this->renderThrowable($e, $output);
|
$this->renderThrowable($e, $output);
|
||||||
}
|
}
|
||||||
|
|
||||||
$exitCode = $e->getCode();
|
return max(1, $e->getCode());
|
||||||
if (is_numeric($exitCode)) {
|
|
||||||
$exitCode = (int) $exitCode;
|
|
||||||
if (0 === $exitCode) {
|
|
||||||
$exitCode = 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$exitCode = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $exitCode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
throw $e;
|
throw $e;
|
||||||
|
|
|
@ -75,10 +75,11 @@ class HtmlOutputFormatter extends OutputFormatter
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string[] $matches
|
* @param array<string|null> $matches
|
||||||
*/
|
*/
|
||||||
private function formatHtml(array $matches): string
|
private function formatHtml(array $matches): string
|
||||||
{
|
{
|
||||||
|
assert(is_string($matches[1]));
|
||||||
$out = '<span style="';
|
$out = '<span style="';
|
||||||
foreach (explode(';', $matches[1]) as $code) {
|
foreach (explode(';', $matches[1]) as $code) {
|
||||||
if (isset(self::$availableForegroundColors[(int) $code])) {
|
if (isset(self::$availableForegroundColors[(int) $code])) {
|
||||||
|
|
|
@ -31,7 +31,7 @@ use Symfony\Component\Console\Input\InputArgument as BaseInputArgument;
|
||||||
class InputArgument extends BaseInputArgument
|
class InputArgument extends BaseInputArgument
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var string[]|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion>
|
* @var list<string>|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion>
|
||||||
*/
|
*/
|
||||||
private $suggestedValues;
|
private $suggestedValues;
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ class InputArgument extends BaseInputArgument
|
||||||
* @param int|null $mode The argument mode: self::REQUIRED or self::OPTIONAL
|
* @param int|null $mode The argument mode: self::REQUIRED or self::OPTIONAL
|
||||||
* @param string $description A description text
|
* @param string $description A description text
|
||||||
* @param string|bool|int|float|string[]|null $default The default value (for self::OPTIONAL mode only)
|
* @param string|bool|int|float|string[]|null $default The default value (for self::OPTIONAL mode only)
|
||||||
* @param string[]|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion> $suggestedValues The values used for input completion
|
* @param list<string>|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion> $suggestedValues The values used for input completion
|
||||||
*
|
*
|
||||||
* @throws InvalidArgumentException When argument mode is not valid
|
* @throws InvalidArgumentException When argument mode is not valid
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -31,7 +31,7 @@ use Symfony\Component\Console\Input\InputOption as BaseInputOption;
|
||||||
class InputOption extends BaseInputOption
|
class InputOption extends BaseInputOption
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var string[]|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion>
|
* @var list<string>|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion>
|
||||||
*/
|
*/
|
||||||
private $suggestedValues;
|
private $suggestedValues;
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ class InputOption extends BaseInputOption
|
||||||
* @param string|string[]|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts
|
* @param string|string[]|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts
|
||||||
* @param int|null $mode The option mode: One of the VALUE_* constants
|
* @param int|null $mode The option mode: One of the VALUE_* constants
|
||||||
* @param string|bool|int|float|string[]|null $default The default value (must be null for self::VALUE_NONE)
|
* @param string|bool|int|float|string[]|null $default The default value (must be null for self::VALUE_NONE)
|
||||||
* @param string[]|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion> $suggestedValues The values used for input completionnull for self::VALUE_NONE)
|
* @param list<string>|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion> $suggestedValues The values used for input completionnull for self::VALUE_NONE)
|
||||||
*
|
*
|
||||||
* @throws InvalidArgumentException If option mode is invalid or incompatible
|
* @throws InvalidArgumentException If option mode is invalid or incompatible
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -137,6 +137,9 @@ class Decisions implements \Iterator, \Countable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int<-1, max> $offset
|
||||||
|
*/
|
||||||
public function resetToOffset(int $offset): void
|
public function resetToOffset(int $offset): void
|
||||||
{
|
{
|
||||||
while (\count($this->decisionQueue) > $offset + 1) {
|
while (\count($this->decisionQueue) > $offset + 1) {
|
||||||
|
|
|
@ -127,8 +127,8 @@ class LockTransaction extends Transaction
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks which of the given aliases from composer.json are actually in use for the lock file
|
* Checks which of the given aliases from composer.json are actually in use for the lock file
|
||||||
* @param array<array{package: string, version: string, alias: string, alias_normalized: string}> $aliases
|
* @param list<array{package: string, version: string, alias: string, alias_normalized: string}> $aliases
|
||||||
* @return array<array{package: string, version: string, alias: string, alias_normalized: string}>
|
* @return list<array{package: string, version: string, alias: string, alias_normalized: string}>
|
||||||
*/
|
*/
|
||||||
public function getAliases(array $aliases): array
|
public function getAliases(array $aliases): array
|
||||||
{
|
{
|
||||||
|
|
|
@ -452,13 +452,13 @@ class Problem
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string[] $versions an array of pretty versions, with normalized versions as keys
|
* @param array<string, string> $versions an array of pretty versions, with normalized versions as keys
|
||||||
* @return list<string> a list of pretty versions and '...' where versions were removed
|
* @return list<string> a list of pretty versions and '...' where versions were removed
|
||||||
*/
|
*/
|
||||||
private static function condenseVersionList(array $versions, int $max, int $maxDev = 16): array
|
private static function condenseVersionList(array $versions, int $max, int $maxDev = 16): array
|
||||||
{
|
{
|
||||||
if (count($versions) <= $max) {
|
if (count($versions) <= $max) {
|
||||||
return $versions;
|
return array_values($versions);
|
||||||
}
|
}
|
||||||
|
|
||||||
$filtered = [];
|
$filtered = [];
|
||||||
|
|
|
@ -17,6 +17,8 @@ use Composer\Repository\RepositorySet;
|
||||||
/**
|
/**
|
||||||
* @author Nils Adermann <naderman@naderman.de>
|
* @author Nils Adermann <naderman@naderman.de>
|
||||||
* @implements \IteratorAggregate<Rule>
|
* @implements \IteratorAggregate<Rule>
|
||||||
|
* @internal
|
||||||
|
* @final
|
||||||
*/
|
*/
|
||||||
class RuleSet implements \IteratorAggregate, \Countable
|
class RuleSet implements \IteratorAggregate, \Countable
|
||||||
{
|
{
|
||||||
|
@ -32,8 +34,7 @@ class RuleSet implements \IteratorAggregate, \Countable
|
||||||
*/
|
*/
|
||||||
public $ruleById = [];
|
public $ruleById = [];
|
||||||
|
|
||||||
/** @var array<0|1|4, string> */
|
const TYPES = [
|
||||||
protected static $types = [
|
|
||||||
self::TYPE_PACKAGE => 'PACKAGE',
|
self::TYPE_PACKAGE => 'PACKAGE',
|
||||||
self::TYPE_REQUEST => 'REQUEST',
|
self::TYPE_REQUEST => 'REQUEST',
|
||||||
self::TYPE_LEARNED => 'LEARNED',
|
self::TYPE_LEARNED => 'LEARNED',
|
||||||
|
@ -60,7 +61,7 @@ class RuleSet implements \IteratorAggregate, \Countable
|
||||||
*/
|
*/
|
||||||
public function add(Rule $rule, $type): void
|
public function add(Rule $rule, $type): void
|
||||||
{
|
{
|
||||||
if (!isset(self::$types[$type])) {
|
if (!isset(self::TYPES[$type])) {
|
||||||
throw new \OutOfBoundsException('Unknown rule type: ' . $type);
|
throw new \OutOfBoundsException('Unknown rule type: ' . $type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,10 +163,12 @@ class RuleSet implements \IteratorAggregate, \Countable
|
||||||
return new RuleSetIterator($rules);
|
return new RuleSetIterator($rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return array{0: 0, 1: 1, 2: 4} */
|
/**
|
||||||
|
* @return array{self::TYPE_PACKAGE, self::TYPE_REQUEST, self::TYPE_LEARNED}
|
||||||
|
*/
|
||||||
public function getTypes(): array
|
public function getTypes(): array
|
||||||
{
|
{
|
||||||
$types = self::$types;
|
$types = self::TYPES;
|
||||||
|
|
||||||
return array_keys($types);
|
return array_keys($types);
|
||||||
}
|
}
|
||||||
|
@ -174,7 +177,7 @@ class RuleSet implements \IteratorAggregate, \Countable
|
||||||
{
|
{
|
||||||
$string = "\n";
|
$string = "\n";
|
||||||
foreach ($this->rules as $type => $rules) {
|
foreach ($this->rules as $type => $rules) {
|
||||||
$string .= str_pad(self::$types[$type], 8, ' ') . ": ";
|
$string .= str_pad(self::TYPES[$type], 8, ' ') . ": ";
|
||||||
foreach ($rules as $rule) {
|
foreach ($rules as $rule) {
|
||||||
$string .= ($repositorySet && $request && $pool ? $rule->getPrettyString($repositorySet, $request, $pool, $isVerbose) : $rule)."\n";
|
$string .= ($repositorySet && $request && $pool ? $rule->getPrettyString($repositorySet, $request, $pool, $isVerbose) : $rule)."\n";
|
||||||
}
|
}
|
||||||
|
|
|
@ -475,7 +475,7 @@ class Solver
|
||||||
|
|
||||||
$why = \count($this->learnedPool) - 1;
|
$why = \count($this->learnedPool) - 1;
|
||||||
|
|
||||||
if (!$learnedLiterals[0]) {
|
if (null === $learnedLiterals[0]) {
|
||||||
throw new SolverBugException(
|
throw new SolverBugException(
|
||||||
"Did not find a learnable literal in analyzed rule $analyzedRule."
|
"Did not find a learnable literal in analyzed rule $analyzedRule."
|
||||||
);
|
);
|
||||||
|
|
|
@ -342,7 +342,7 @@ class EventDispatcher
|
||||||
$pathAndArgs = substr($exec, 5);
|
$pathAndArgs = substr($exec, 5);
|
||||||
if (Platform::isWindows()) {
|
if (Platform::isWindows()) {
|
||||||
$pathAndArgs = Preg::replaceCallback('{^\S+}', static function ($path) {
|
$pathAndArgs = Preg::replaceCallback('{^\S+}', static function ($path) {
|
||||||
return str_replace('/', '\\', $path[0]);
|
return str_replace('/', '\\', (string) $path[0]);
|
||||||
}, $pathAndArgs);
|
}, $pathAndArgs);
|
||||||
}
|
}
|
||||||
// match somename (not in quote, and not a qualified path) and if it is not a valid path from CWD then try to find it
|
// match somename (not in quote, and not a qualified path) and if it is not a valid path from CWD then try to find it
|
||||||
|
@ -364,6 +364,8 @@ class EventDispatcher
|
||||||
|
|
||||||
if (Platform::isWindows()) {
|
if (Platform::isWindows()) {
|
||||||
$exec = Preg::replaceCallback('{^\S+}', static function ($path) {
|
$exec = Preg::replaceCallback('{^\S+}', static function ($path) {
|
||||||
|
assert(is_string($path[0]));
|
||||||
|
|
||||||
return str_replace('/', '\\', $path[0]);
|
return str_replace('/', '\\', $path[0]);
|
||||||
}, $exec);
|
}, $exec);
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,8 @@ class BufferIO extends ConsoleIO
|
||||||
$output = stream_get_contents($this->output->getStream());
|
$output = stream_get_contents($this->output->getStream());
|
||||||
|
|
||||||
$output = Preg::replaceCallback("{(?<=^|\n|\x08)(.+?)(\x08+)}", static function ($matches): string {
|
$output = Preg::replaceCallback("{(?<=^|\n|\x08)(.+?)(\x08+)}", static function ($matches): string {
|
||||||
|
assert(is_string($matches[1]));
|
||||||
|
assert(is_string($matches[2]));
|
||||||
$pre = strip_tags($matches[1]);
|
$pre = strip_tags($matches[1]);
|
||||||
|
|
||||||
if (strlen($pre) === strlen($matches[2])) {
|
if (strlen($pre) === strlen($matches[2])) {
|
||||||
|
|
|
@ -68,6 +68,8 @@ class JsonFormatter
|
||||||
if ($unescapeUnicode && function_exists('mb_convert_encoding')) {
|
if ($unescapeUnicode && function_exists('mb_convert_encoding')) {
|
||||||
// https://stackoverflow.com/questions/2934563/how-to-decode-unicode-escape-sequences-like-u00ed-to-proper-utf-8-encoded-cha
|
// https://stackoverflow.com/questions/2934563/how-to-decode-unicode-escape-sequences-like-u00ed-to-proper-utf-8-encoded-cha
|
||||||
$buffer = Preg::replaceCallback('/(\\\\+)u([0-9a-f]{4})/i', static function ($match) {
|
$buffer = Preg::replaceCallback('/(\\\\+)u([0-9a-f]{4})/i', static function ($match) {
|
||||||
|
assert(is_string($match[1]));
|
||||||
|
assert(is_string($match[2]));
|
||||||
$l = strlen($match[1]);
|
$l = strlen($match[1]);
|
||||||
|
|
||||||
if ($l % 2) {
|
if ($l % 2) {
|
||||||
|
|
|
@ -261,7 +261,7 @@ class JsonManipulator
|
||||||
$childRegex = '{'.self::$DEFINES.'(?P<start>"'.preg_quote($name).'"\s*:\s*)(?P<content>(?&json))(?P<end>,?)}x';
|
$childRegex = '{'.self::$DEFINES.'(?P<start>"'.preg_quote($name).'"\s*:\s*)(?P<content>(?&json))(?P<end>,?)}x';
|
||||||
if (Preg::isMatch($childRegex, $children, $matches)) {
|
if (Preg::isMatch($childRegex, $children, $matches)) {
|
||||||
$children = Preg::replaceCallback($childRegex, function ($matches) use ($subName, $value): string {
|
$children = Preg::replaceCallback($childRegex, function ($matches) use ($subName, $value): string {
|
||||||
if ($subName !== null) {
|
if ($subName !== null && is_string($matches['content'])) {
|
||||||
$curVal = json_decode($matches['content'], true);
|
$curVal = json_decode($matches['content'], true);
|
||||||
if (!is_array($curVal)) {
|
if (!is_array($curVal)) {
|
||||||
$curVal = [];
|
$curVal = [];
|
||||||
|
@ -410,6 +410,7 @@ class JsonManipulator
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->contents = Preg::replaceCallback($nodeRegex, function ($matches) use ($name, $subName, $childrenClean): string {
|
$this->contents = Preg::replaceCallback($nodeRegex, function ($matches) use ($name, $subName, $childrenClean): string {
|
||||||
|
assert(is_string($matches['content']));
|
||||||
if ($subName !== null) {
|
if ($subName !== null) {
|
||||||
$curVal = json_decode($matches['content'], true);
|
$curVal = json_decode($matches['content'], true);
|
||||||
unset($curVal[$name][$subName]);
|
unset($curVal[$name][$subName]);
|
||||||
|
|
|
@ -75,7 +75,7 @@ class ArrayLoader implements LoaderInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param list<array<mixed>> $versions
|
* @param array<array<mixed>> $versions
|
||||||
*
|
*
|
||||||
* @return list<CompletePackage|CompleteAliasPackage>
|
* @return list<CompletePackage|CompleteAliasPackage>
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -17,16 +17,16 @@ namespace Composer\Package\Loader;
|
||||||
*/
|
*/
|
||||||
class InvalidPackageException extends \Exception
|
class InvalidPackageException extends \Exception
|
||||||
{
|
{
|
||||||
/** @var string[] */
|
/** @var list<string> */
|
||||||
private $errors;
|
private $errors;
|
||||||
/** @var string[] */
|
/** @var list<string> */
|
||||||
private $warnings;
|
private $warnings;
|
||||||
/** @var mixed[] package config */
|
/** @var mixed[] package config */
|
||||||
private $data;
|
private $data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string[] $errors
|
* @param list<string> $errors
|
||||||
* @param string[] $warnings
|
* @param list<string> $warnings
|
||||||
* @param mixed[] $data
|
* @param mixed[] $data
|
||||||
*/
|
*/
|
||||||
public function __construct(array $errors, array $warnings, array $data)
|
public function __construct(array $errors, array $warnings, array $data)
|
||||||
|
@ -46,7 +46,7 @@ class InvalidPackageException extends \Exception
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string[]
|
* @return list<string>
|
||||||
*/
|
*/
|
||||||
public function getErrors(): array
|
public function getErrors(): array
|
||||||
{
|
{
|
||||||
|
@ -54,7 +54,7 @@ class InvalidPackageException extends \Exception
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string[]
|
* @return list<string>
|
||||||
*/
|
*/
|
||||||
public function getWarnings(): array
|
public function getWarnings(): array
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,9 +32,9 @@ class ValidatingArrayLoader implements LoaderInterface
|
||||||
private $loader;
|
private $loader;
|
||||||
/** @var VersionParser */
|
/** @var VersionParser */
|
||||||
private $versionParser;
|
private $versionParser;
|
||||||
/** @var string[] */
|
/** @var list<string> */
|
||||||
private $errors;
|
private $errors;
|
||||||
/** @var string[] */
|
/** @var list<string> */
|
||||||
private $warnings;
|
private $warnings;
|
||||||
/** @var mixed[] */
|
/** @var mixed[] */
|
||||||
private $config;
|
private $config;
|
||||||
|
@ -428,7 +428,7 @@ class ValidatingArrayLoader implements LoaderInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string[]
|
* @return list<string>
|
||||||
*/
|
*/
|
||||||
public function getWarnings(): array
|
public function getWarnings(): array
|
||||||
{
|
{
|
||||||
|
@ -436,7 +436,7 @@ class ValidatingArrayLoader implements LoaderInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string[]
|
* @return list<string>
|
||||||
*/
|
*/
|
||||||
public function getErrors(): array
|
public function getErrors(): array
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,7 +38,7 @@ class Package extends BasePackage
|
||||||
protected $sourceUrl;
|
protected $sourceUrl;
|
||||||
/** @var ?string */
|
/** @var ?string */
|
||||||
protected $sourceReference;
|
protected $sourceReference;
|
||||||
/** @var ?array<int, array{url: non-empty-string, preferred: bool}> */
|
/** @var ?list<array{url: non-empty-string, preferred: bool}> */
|
||||||
protected $sourceMirrors;
|
protected $sourceMirrors;
|
||||||
/** @var ?non-empty-string */
|
/** @var ?non-empty-string */
|
||||||
protected $distType;
|
protected $distType;
|
||||||
|
@ -48,7 +48,7 @@ class Package extends BasePackage
|
||||||
protected $distReference;
|
protected $distReference;
|
||||||
/** @var ?string */
|
/** @var ?string */
|
||||||
protected $distSha1Checksum;
|
protected $distSha1Checksum;
|
||||||
/** @var ?array<int, array{url: non-empty-string, preferred: bool}> */
|
/** @var ?list<array{url: non-empty-string, preferred: bool}> */
|
||||||
protected $distMirrors;
|
protected $distMirrors;
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $version;
|
protected $version;
|
||||||
|
@ -658,7 +658,7 @@ class Package extends BasePackage
|
||||||
/**
|
/**
|
||||||
* @param mixed[]|null $mirrors
|
* @param mixed[]|null $mirrors
|
||||||
*
|
*
|
||||||
* @return non-empty-string[]
|
* @return list<non-empty-string>
|
||||||
*
|
*
|
||||||
* @phpstan-param list<array{url: non-empty-string, preferred: bool}>|null $mirrors
|
* @phpstan-param list<array{url: non-empty-string, preferred: bool}>|null $mirrors
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -127,7 +127,7 @@ interface PackageInterface
|
||||||
/**
|
/**
|
||||||
* Returns the repository urls of this package including mirrors, e.g. git://github.com/naderman/composer.git
|
* Returns the repository urls of this package including mirrors, e.g. git://github.com/naderman/composer.git
|
||||||
*
|
*
|
||||||
* @return string[]
|
* @return list<string>
|
||||||
*/
|
*/
|
||||||
public function getSourceUrls(): array;
|
public function getSourceUrls(): array;
|
||||||
|
|
||||||
|
@ -141,12 +141,12 @@ interface PackageInterface
|
||||||
/**
|
/**
|
||||||
* Returns the source mirrors of this package
|
* Returns the source mirrors of this package
|
||||||
*
|
*
|
||||||
* @return ?array<int, array{url: non-empty-string, preferred: bool}>
|
* @return ?list<array{url: non-empty-string, preferred: bool}>
|
||||||
*/
|
*/
|
||||||
public function getSourceMirrors(): ?array;
|
public function getSourceMirrors(): ?array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param null|array<int, array{url: non-empty-string, preferred: bool}> $mirrors
|
* @param null|list<array{url: non-empty-string, preferred: bool}> $mirrors
|
||||||
*/
|
*/
|
||||||
public function setSourceMirrors(?array $mirrors): void;
|
public function setSourceMirrors(?array $mirrors): void;
|
||||||
|
|
||||||
|
@ -188,12 +188,12 @@ interface PackageInterface
|
||||||
/**
|
/**
|
||||||
* Returns the dist mirrors of this package
|
* Returns the dist mirrors of this package
|
||||||
*
|
*
|
||||||
* @return ?array<int, array{url: non-empty-string, preferred: bool}>
|
* @return ?list<array{url: non-empty-string, preferred: bool}>
|
||||||
*/
|
*/
|
||||||
public function getDistMirrors(): ?array;
|
public function getDistMirrors(): ?array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param null|array<int, array{url: non-empty-string, preferred: bool}> $mirrors
|
* @param null|list<array{url: non-empty-string, preferred: bool}> $mirrors
|
||||||
*/
|
*/
|
||||||
public function setDistMirrors(?array $mirrors): void;
|
public function setDistMirrors(?array $mirrors): void;
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ class RootPackage extends CompletePackage implements RootPackageInterface
|
||||||
protected $config = [];
|
protected $config = [];
|
||||||
/** @var array<string, string> Map of package name to reference/commit hash */
|
/** @var array<string, string> Map of package name to reference/commit hash */
|
||||||
protected $references = [];
|
protected $references = [];
|
||||||
/** @var array<array{package: string, version: string, alias: string, alias_normalized: string}> */
|
/** @var list<array{package: string, version: string, alias: string, alias_normalized: string}> */
|
||||||
protected $aliases = [];
|
protected $aliases = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -27,7 +27,7 @@ interface RootPackageInterface extends CompletePackageInterface
|
||||||
/**
|
/**
|
||||||
* Returns a set of package names and their aliases
|
* Returns a set of package names and their aliases
|
||||||
*
|
*
|
||||||
* @return array<array{package: string, version: string, alias: string, alias_normalized: string}>
|
* @return list<array{package: string, version: string, alias: string, alias_normalized: string}>
|
||||||
*/
|
*/
|
||||||
public function getAliases(): array;
|
public function getAliases(): array;
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ interface RootPackageInterface extends CompletePackageInterface
|
||||||
/**
|
/**
|
||||||
* Set the aliases
|
* Set the aliases
|
||||||
*
|
*
|
||||||
* @param array<array{package: string, version: string, alias: string, alias_normalized: string}> $aliases
|
* @param list<array{package: string, version: string, alias: string, alias_normalized: string}> $aliases
|
||||||
*/
|
*/
|
||||||
public function setAliases(array $aliases): void;
|
public function setAliases(array $aliases): void;
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ use Symfony\Component\Process\Process;
|
||||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||||
* @author Samuel Roze <samuel.roze@gmail.com>
|
* @author Samuel Roze <samuel.roze@gmail.com>
|
||||||
*
|
*
|
||||||
* @phpstan-type Version array{version: string, commit: string|null, pretty_version: string|null, feature_version?: string|null, feature_pretty_version?: string|null}
|
* @phpstan-type Version array{version: string, commit: string|null, pretty_version: string|null}|array{version: string, commit: string|null, pretty_version: string|null, feature_version: string|null, feature_pretty_version: string|null}
|
||||||
*/
|
*/
|
||||||
class VersionGuesser
|
class VersionGuesser
|
||||||
{
|
{
|
||||||
|
|
|
@ -95,9 +95,9 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito
|
||||||
private $allowSslDowngrade = false;
|
private $allowSslDowngrade = false;
|
||||||
/** @var ?EventDispatcher */
|
/** @var ?EventDispatcher */
|
||||||
private $eventDispatcher;
|
private $eventDispatcher;
|
||||||
/** @var ?array<string, array<int, array{url: non-empty-string, preferred: bool}>> */
|
/** @var ?array<string, list<array{url: non-empty-string, preferred: bool}>> */
|
||||||
private $sourceMirrors;
|
private $sourceMirrors;
|
||||||
/** @var ?array<int, array{url: non-empty-string, preferred: bool}> */
|
/** @var ?list<array{url: non-empty-string, preferred: bool}> */
|
||||||
private $distMirrors;
|
private $distMirrors;
|
||||||
/** @var bool */
|
/** @var bool */
|
||||||
private $degradedMode = false;
|
private $degradedMode = false;
|
||||||
|
|
|
@ -133,7 +133,7 @@ class CompositeRepository implements RepositoryInterface
|
||||||
$matches[] = $repository->search($query, $mode, $type);
|
$matches[] = $repository->search($query, $mode, $type);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $matches ? array_merge(...$matches) : [];
|
return \count($matches) > 0 ? array_merge(...$matches) : [];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -28,7 +28,7 @@ class RepositoryUtils
|
||||||
*
|
*
|
||||||
* @template T of PackageInterface
|
* @template T of PackageInterface
|
||||||
* @param array<T> $packages
|
* @param array<T> $packages
|
||||||
* @param array<T> $bucket Do not pass this in, only used to avoid recursion with circular deps
|
* @param list<T> $bucket Do not pass this in, only used to avoid recursion with circular deps
|
||||||
* @return list<T>
|
* @return list<T>
|
||||||
*/
|
*/
|
||||||
public static function filterRequiredPackages(array $packages, PackageInterface $requirer, array $bucket = []): array
|
public static function filterRequiredPackages(array $packages, PackageInterface $requirer, array $bucket = []): array
|
||||||
|
|
|
@ -383,7 +383,7 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
|
||||||
|
|
||||||
$packageData = $this->preProcess($driver, $data, $identifier);
|
$packageData = $this->preProcess($driver, $data, $identifier);
|
||||||
$package = $this->loader->load($packageData);
|
$package = $this->loader->load($packageData);
|
||||||
if ($this->loader instanceof ValidatingArrayLoader && $this->loader->getWarnings()) {
|
if ($this->loader instanceof ValidatingArrayLoader && \count($this->loader->getWarnings()) > 0) {
|
||||||
throw new InvalidPackageException($this->loader->getErrors(), $this->loader->getWarnings(), $packageData);
|
throw new InvalidPackageException($this->loader->getErrors(), $this->loader->getWarnings(), $packageData);
|
||||||
}
|
}
|
||||||
$this->addPackage($package);
|
$this->addPackage($package);
|
||||||
|
|
|
@ -226,6 +226,9 @@ class Bitbucket
|
||||||
$this->config->getAuthConfigSource()->addConfigSetting('bitbucket-oauth.'.$originUrl, $consumer);
|
$this->config->getAuthConfigSource()->addConfigSetting('bitbucket-oauth.'.$originUrl, $consumer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phpstan-assert-if-true array{access_token: string} $this->token
|
||||||
|
*/
|
||||||
private function getTokenFromConfig(string $originUrl): bool
|
private function getTokenFromConfig(string $originUrl): bool
|
||||||
{
|
{
|
||||||
$authConfig = $this->config->get('bitbucket-oauth');
|
$authConfig = $this->config->get('bitbucket-oauth');
|
||||||
|
|
|
@ -574,6 +574,7 @@ class Filesystem
|
||||||
|
|
||||||
// ensure c: is normalized to C:
|
// ensure c: is normalized to C:
|
||||||
$prefix = Preg::replaceCallback('{(^|://)[a-z]:$}i', static function (array $m) {
|
$prefix = Preg::replaceCallback('{(^|://)[a-z]:$}i', static function (array $m) {
|
||||||
|
assert(is_string($m[0]));
|
||||||
return strtoupper($m[0]);
|
return strtoupper($m[0]);
|
||||||
}, $prefix);
|
}, $prefix);
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,8 @@ class Platform
|
||||||
}
|
}
|
||||||
|
|
||||||
return Preg::replaceCallback('#^(\$|(?P<percent>%))(?P<var>\w++)(?(percent)%)(?P<path>.*)#', static function ($matches): string {
|
return Preg::replaceCallback('#^(\$|(?P<percent>%))(?P<var>\w++)(?(percent)%)(?P<path>.*)#', static function ($matches): string {
|
||||||
|
assert(is_string($matches['var']));
|
||||||
|
|
||||||
// Treat HOME as an alias for USERPROFILE on Windows for legacy reasons
|
// Treat HOME as an alias for USERPROFILE on Windows for legacy reasons
|
||||||
if (Platform::isWindows() && $matches['var'] === 'HOME') {
|
if (Platform::isWindows() && $matches['var'] === 'HOME') {
|
||||||
return (Platform::getEnv('HOME') ?: Platform::getEnv('USERPROFILE')) . $matches['path'];
|
return (Platform::getEnv('HOME') ?: Platform::getEnv('USERPROFILE')) . $matches['path'];
|
||||||
|
|
|
@ -415,6 +415,8 @@ class ProcessExecutor
|
||||||
|
|
||||||
$commandString = is_string($command) ? $command : implode(' ', array_map(self::class.'::escape', $command));
|
$commandString = is_string($command) ? $command : implode(' ', array_map(self::class.'::escape', $command));
|
||||||
$safeCommand = Preg::replaceCallback('{://(?P<user>[^:/\s]+):(?P<password>[^@\s/]+)@}i', static function ($m): string {
|
$safeCommand = Preg::replaceCallback('{://(?P<user>[^:/\s]+):(?P<password>[^@\s/]+)@}i', static function ($m): string {
|
||||||
|
assert(is_string($m['user']));
|
||||||
|
|
||||||
// if the username looks like a long (12char+) hex string, or a modern github token (e.g. ghp_xxx) we obfuscate that
|
// if the username looks like a long (12char+) hex string, or a modern github token (e.g. ghp_xxx) we obfuscate that
|
||||||
if (Preg::isMatch('{^([a-f0-9]{12,}|gh[a-z]_[a-zA-Z0-9_]+)$}', $m['user'])) {
|
if (Preg::isMatch('{^([a-f0-9]{12,}|gh[a-z]_[a-zA-Z0-9_]+)$}', $m['user'])) {
|
||||||
return '://***:***@';
|
return '://***:***@';
|
||||||
|
|
|
@ -52,7 +52,7 @@ class RemoteFilesystem
|
||||||
private $options = [];
|
private $options = [];
|
||||||
/** @var bool */
|
/** @var bool */
|
||||||
private $disableTls = false;
|
private $disableTls = false;
|
||||||
/** @var string[] */
|
/** @var list<string> */
|
||||||
private $lastHeaders;
|
private $lastHeaders;
|
||||||
/** @var bool */
|
/** @var bool */
|
||||||
private $storeAuth = false;
|
private $storeAuth = false;
|
||||||
|
@ -159,7 +159,7 @@ class RemoteFilesystem
|
||||||
/**
|
/**
|
||||||
* Returns the headers of the last request
|
* Returns the headers of the last request
|
||||||
*
|
*
|
||||||
* @return string[]
|
* @return list<string>
|
||||||
*/
|
*/
|
||||||
public function getLastHeaders()
|
public function getLastHeaders()
|
||||||
{
|
{
|
||||||
|
|
|
@ -110,6 +110,7 @@ class Url
|
||||||
$url = Preg::replace('{([&?]access_token=)[^&]+}', '$1***', $url);
|
$url = Preg::replace('{([&?]access_token=)[^&]+}', '$1***', $url);
|
||||||
|
|
||||||
$url = Preg::replaceCallback('{^(?P<prefix>[a-z0-9]+://)?(?P<user>[^:/\s@]+):(?P<password>[^@\s/]+)@}i', static function ($m): string {
|
$url = Preg::replaceCallback('{^(?P<prefix>[a-z0-9]+://)?(?P<user>[^:/\s@]+):(?P<password>[^@\s/]+)@}i', static function ($m): string {
|
||||||
|
assert(is_string($m['user']));
|
||||||
// if the username looks like a long (12char+) hex string, or a modern github token (e.g. ghp_xxx) we obfuscate that
|
// if the username looks like a long (12char+) hex string, or a modern github token (e.g. ghp_xxx) we obfuscate that
|
||||||
if (Preg::isMatch('{^([a-f0-9]{12,}|gh[a-z]_[a-zA-Z0-9_]+|github_pat_[a-zA-Z0-9_]+)$}', $m['user'])) {
|
if (Preg::isMatch('{^([a-f0-9]{12,}|gh[a-z]_[a-zA-Z0-9_]+|github_pat_[a-zA-Z0-9_]+)$}', $m['user'])) {
|
||||||
return $m['prefix'].'***:***@';
|
return $m['prefix'].'***:***@';
|
||||||
|
|
|
@ -148,7 +148,7 @@ class PoolBuilderTest extends TestCase
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<int, BasePackage> $packageIds
|
* @param array<int, BasePackage> $packageIds
|
||||||
* @return string[]
|
* @return list<string|int>
|
||||||
*/
|
*/
|
||||||
private function getPackageResultSet(Pool $pool, array $packageIds): array
|
private function getPackageResultSet(Pool $pool, array $packageIds): array
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,7 +32,7 @@ class HttpDownloaderMock extends HttpDownloader
|
||||||
*/
|
*/
|
||||||
private $strict = false;
|
private $strict = false;
|
||||||
/**
|
/**
|
||||||
* @var array{status: int, body: string, headers: array<string>}
|
* @var array{status: int, body: string, headers: list<string>}
|
||||||
*/
|
*/
|
||||||
private $defaultHandler = ['status' => 200, 'body' => '', 'headers' => []];
|
private $defaultHandler = ['status' => 200, 'body' => '', 'headers' => []];
|
||||||
/**
|
/**
|
||||||
|
@ -52,9 +52,9 @@ class HttpDownloaderMock extends HttpDownloader
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<array{url: non-empty-string, options?: array<mixed>, status?: int, body?: string, headers?: array<string>}> $expectations
|
* @param array<array{url: non-empty-string, options?: array<mixed>, status?: int, body?: string, headers?: list<string>}> $expectations
|
||||||
* @param bool $strict set to true if you want to provide *all* expected http requests, and not just a subset you are interested in testing
|
* @param bool $strict set to true if you want to provide *all* expected http requests, and not just a subset you are interested in testing
|
||||||
* @param array{status?: int, body?: string, headers?: array<string>} $defaultHandler default URL handler for undefined requests if not in strict mode
|
* @param array{status?: int, body?: string, headers?: list<string>} $defaultHandler default URL handler for undefined requests if not in strict mode
|
||||||
*/
|
*/
|
||||||
public function expects(array $expectations, bool $strict = false, array $defaultHandler = ['status' => 200, 'body' => '', 'headers' => []]): void
|
public function expects(array $expectations, bool $strict = false, array $defaultHandler = ['status' => 200, 'body' => '', 'headers' => []]): void
|
||||||
{
|
{
|
||||||
|
@ -119,7 +119,7 @@ class HttpDownloaderMock extends HttpDownloader
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string[] $headers
|
* @param list<string> $headers
|
||||||
* @param non-empty-string $url
|
* @param non-empty-string $url
|
||||||
*/
|
*/
|
||||||
private function respond(string $url, int $status, array $headers, string $body): Response
|
private function respond(string $url, int $status, array $headers, string $body): Response
|
||||||
|
|
|
@ -49,6 +49,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionArray = $guesser->guessVersion([], 'dummy/path');
|
$versionArray = $guesser->guessVersion([], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionArray);
|
||||||
$this->assertEquals("dev-".$branch, $versionArray['version']);
|
$this->assertEquals("dev-".$branch, $versionArray['version']);
|
||||||
$this->assertEquals("dev-".$branch, $versionArray['pretty_version']);
|
$this->assertEquals("dev-".$branch, $versionArray['pretty_version']);
|
||||||
$this->assertEmpty($versionArray['commit']);
|
$this->assertEmpty($versionArray['commit']);
|
||||||
|
@ -72,6 +73,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionArray = $guesser->guessVersion([], 'dummy/path');
|
$versionArray = $guesser->guessVersion([], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionArray);
|
||||||
$this->assertEquals("dev-master", $versionArray['version']);
|
$this->assertEquals("dev-master", $versionArray['version']);
|
||||||
$this->assertEquals("dev-master", $versionArray['pretty_version']);
|
$this->assertEquals("dev-master", $versionArray['pretty_version']);
|
||||||
$this->assertArrayNotHasKey('feature_version', $versionArray);
|
$this->assertArrayNotHasKey('feature_version', $versionArray);
|
||||||
|
@ -98,6 +100,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionArray = $guesser->guessVersion(['version' => 'self.version'], 'dummy/path');
|
$versionArray = $guesser->guessVersion(['version' => 'self.version'], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionArray);
|
||||||
$this->assertEquals("dev-current", $versionArray['version']);
|
$this->assertEquals("dev-current", $versionArray['version']);
|
||||||
$this->assertEquals($anotherCommitHash, $versionArray['commit']);
|
$this->assertEquals($anotherCommitHash, $versionArray['commit']);
|
||||||
}
|
}
|
||||||
|
@ -124,8 +127,10 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionArray = $guesser->guessVersion(['version' => 'self.version', 'non-feature-branches' => ['arbitrary']], 'dummy/path');
|
$versionArray = $guesser->guessVersion(['version' => 'self.version', 'non-feature-branches' => ['arbitrary']], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionArray);
|
||||||
$this->assertEquals("dev-arbitrary", $versionArray['version']);
|
$this->assertEquals("dev-arbitrary", $versionArray['version']);
|
||||||
$this->assertEquals($anotherCommitHash, $versionArray['commit']);
|
$this->assertEquals($anotherCommitHash, $versionArray['commit']);
|
||||||
|
self::assertArrayHasKey('feature_version', $versionArray);
|
||||||
$this->assertEquals("dev-feature", $versionArray['feature_version']);
|
$this->assertEquals("dev-feature", $versionArray['feature_version']);
|
||||||
$this->assertEquals("dev-feature", $versionArray['feature_pretty_version']);
|
$this->assertEquals("dev-feature", $versionArray['feature_pretty_version']);
|
||||||
}
|
}
|
||||||
|
@ -152,8 +157,10 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionArray = $guesser->guessVersion(['version' => 'self.version', 'non-feature-branches' => ['latest-.*']], 'dummy/path');
|
$versionArray = $guesser->guessVersion(['version' => 'self.version', 'non-feature-branches' => ['latest-.*']], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionArray);
|
||||||
$this->assertEquals("dev-latest-testing", $versionArray['version']);
|
$this->assertEquals("dev-latest-testing", $versionArray['version']);
|
||||||
$this->assertEquals($anotherCommitHash, $versionArray['commit']);
|
$this->assertEquals($anotherCommitHash, $versionArray['commit']);
|
||||||
|
self::assertArrayHasKey('feature_version', $versionArray);
|
||||||
$this->assertEquals("dev-feature", $versionArray['feature_version']);
|
$this->assertEquals("dev-feature", $versionArray['feature_version']);
|
||||||
$this->assertEquals("dev-feature", $versionArray['feature_pretty_version']);
|
$this->assertEquals("dev-feature", $versionArray['feature_pretty_version']);
|
||||||
}
|
}
|
||||||
|
@ -176,6 +183,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionArray = $guesser->guessVersion(['version' => 'self.version', 'non-feature-branches' => ['latest-.*']], 'dummy/path');
|
$versionArray = $guesser->guessVersion(['version' => 'self.version', 'non-feature-branches' => ['latest-.*']], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionArray);
|
||||||
$this->assertEquals("dev-latest-testing", $versionArray['version']);
|
$this->assertEquals("dev-latest-testing", $versionArray['version']);
|
||||||
$this->assertEquals($commitHash, $versionArray['commit']);
|
$this->assertEquals($commitHash, $versionArray['commit']);
|
||||||
$this->assertArrayNotHasKey('feature_version', $versionArray);
|
$this->assertArrayNotHasKey('feature_version', $versionArray);
|
||||||
|
@ -200,6 +208,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionData = $guesser->guessVersion([], 'dummy/path');
|
$versionData = $guesser->guessVersion([], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionData);
|
||||||
$this->assertEquals("dev-$commitHash", $versionData['version']);
|
$this->assertEquals("dev-$commitHash", $versionData['version']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,6 +230,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionData = $guesser->guessVersion([], 'dummy/path');
|
$versionData = $guesser->guessVersion([], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionData);
|
||||||
$this->assertEquals("dev-$commitHash", $versionData['version']);
|
$this->assertEquals("dev-$commitHash", $versionData['version']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,6 +252,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionData = $guesser->guessVersion([], 'dummy/path');
|
$versionData = $guesser->guessVersion([], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionData);
|
||||||
$this->assertEquals("dev-$commitHash", $versionData['version']);
|
$this->assertEquals("dev-$commitHash", $versionData['version']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,6 +275,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionData = $guesser->guessVersion([], 'dummy/path');
|
$versionData = $guesser->guessVersion([], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionData);
|
||||||
$this->assertEquals("2.0.5.0-alpha2", $versionData['version']);
|
$this->assertEquals("2.0.5.0-alpha2", $versionData['version']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,6 +298,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionData = $guesser->guessVersion([], 'dummy/path');
|
$versionData = $guesser->guessVersion([], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionData);
|
||||||
$this->assertEquals('1.0.0.0', $versionData['version']);
|
$this->assertEquals('1.0.0.0', $versionData['version']);
|
||||||
$this->assertEquals('1.0.0', $versionData['pretty_version']);
|
$this->assertEquals('1.0.0', $versionData['pretty_version']);
|
||||||
}
|
}
|
||||||
|
@ -305,6 +318,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionData = $guesser->guessVersion([], 'dummy/path');
|
$versionData = $guesser->guessVersion([], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionData);
|
||||||
$this->assertEquals("dev-foo", $versionData['version']);
|
$this->assertEquals("dev-foo", $versionData['version']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -323,6 +337,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionData = $guesser->guessVersion([], 'dummy/path');
|
$versionData = $guesser->guessVersion([], 'dummy/path');
|
||||||
|
|
||||||
|
self::assertIsArray($versionData);
|
||||||
$this->assertEquals("1.5.x-dev", $versionData['pretty_version']);
|
$this->assertEquals("1.5.x-dev", $versionData['pretty_version']);
|
||||||
$this->assertEquals("1.5.9999999.9999999-dev", $versionData['version']);
|
$this->assertEquals("1.5.9999999.9999999-dev", $versionData['version']);
|
||||||
}
|
}
|
||||||
|
@ -346,6 +361,7 @@ class VersionGuesserTest extends TestCase
|
||||||
$config->merge(['repositories' => ['packagist' => false]]);
|
$config->merge(['repositories' => ['packagist' => false]]);
|
||||||
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
$guesser = new VersionGuesser($config, $process, new VersionParser());
|
||||||
$versionData = $guesser->guessVersion(['version' => 'self.version'], 'dummy/path');
|
$versionData = $guesser->guessVersion(['version' => 'self.version'], 'dummy/path');
|
||||||
|
self::assertIsArray($versionData);
|
||||||
$this->assertEquals("1.5.x-dev", $versionData['pretty_version']);
|
$this->assertEquals("1.5.x-dev", $versionData['pretty_version']);
|
||||||
$this->assertEquals("1.5.9999999.9999999-dev", $versionData['version']);
|
$this->assertEquals("1.5.9999999.9999999-dev", $versionData['version']);
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,6 +94,7 @@ class GitHubDriverTest extends TestCase
|
||||||
$this->assertEquals('test_master', $gitHubDriver->getRootIdentifier());
|
$this->assertEquals('test_master', $gitHubDriver->getRootIdentifier());
|
||||||
|
|
||||||
$dist = $gitHubDriver->getDist($sha);
|
$dist = $gitHubDriver->getDist($sha);
|
||||||
|
self::assertIsArray($dist);
|
||||||
$this->assertEquals('zip', $dist['type']);
|
$this->assertEquals('zip', $dist['type']);
|
||||||
$this->assertEquals('https://api.github.com/repos/composer/packagist/zipball/SOMESHA', $dist['url']);
|
$this->assertEquals('https://api.github.com/repos/composer/packagist/zipball/SOMESHA', $dist['url']);
|
||||||
$this->assertEquals('SOMESHA', $dist['reference']);
|
$this->assertEquals('SOMESHA', $dist['reference']);
|
||||||
|
@ -136,6 +137,7 @@ class GitHubDriverTest extends TestCase
|
||||||
$this->assertEquals('test_master', $gitHubDriver->getRootIdentifier());
|
$this->assertEquals('test_master', $gitHubDriver->getRootIdentifier());
|
||||||
|
|
||||||
$dist = $gitHubDriver->getDist($sha);
|
$dist = $gitHubDriver->getDist($sha);
|
||||||
|
self::assertIsArray($dist);
|
||||||
$this->assertEquals('zip', $dist['type']);
|
$this->assertEquals('zip', $dist['type']);
|
||||||
$this->assertEquals('https://api.github.com/repos/composer/packagist/zipball/SOMESHA', $dist['url']);
|
$this->assertEquals('https://api.github.com/repos/composer/packagist/zipball/SOMESHA', $dist['url']);
|
||||||
$this->assertEquals($sha, $dist['reference']);
|
$this->assertEquals($sha, $dist['reference']);
|
||||||
|
@ -181,6 +183,7 @@ class GitHubDriverTest extends TestCase
|
||||||
$this->assertEquals('test_master', $gitHubDriver->getRootIdentifier());
|
$this->assertEquals('test_master', $gitHubDriver->getRootIdentifier());
|
||||||
|
|
||||||
$dist = $gitHubDriver->getDist($sha);
|
$dist = $gitHubDriver->getDist($sha);
|
||||||
|
self::assertIsArray($dist);
|
||||||
$this->assertEquals('zip', $dist['type']);
|
$this->assertEquals('zip', $dist['type']);
|
||||||
$this->assertEquals('https://api.github.com/repos/composer/packagist/zipball/SOMESHA', $dist['url']);
|
$this->assertEquals('https://api.github.com/repos/composer/packagist/zipball/SOMESHA', $dist['url']);
|
||||||
$this->assertEquals($sha, $dist['reference']);
|
$this->assertEquals($sha, $dist['reference']);
|
||||||
|
@ -288,6 +291,7 @@ class GitHubDriverTest extends TestCase
|
||||||
$this->assertEquals('test_master', $gitHubDriver->getRootIdentifier());
|
$this->assertEquals('test_master', $gitHubDriver->getRootIdentifier());
|
||||||
|
|
||||||
$dist = $gitHubDriver->getDist($sha);
|
$dist = $gitHubDriver->getDist($sha);
|
||||||
|
self::assertIsArray($dist);
|
||||||
$this->assertEquals('zip', $dist['type']);
|
$this->assertEquals('zip', $dist['type']);
|
||||||
$this->assertEquals('https://api.github.com/repos/composer/packagist/zipball/SOMESHA', $dist['url']);
|
$this->assertEquals('https://api.github.com/repos/composer/packagist/zipball/SOMESHA', $dist['url']);
|
||||||
$this->assertEquals($sha, $dist['reference']);
|
$this->assertEquals($sha, $dist['reference']);
|
||||||
|
|
|
@ -331,6 +331,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase
|
||||||
{
|
{
|
||||||
if (Platform::isWindows()) {
|
if (Platform::isWindows()) {
|
||||||
$cmd = Preg::replaceCallback("/('[^']*')/", static function ($m) {
|
$cmd = Preg::replaceCallback("/('[^']*')/", static function ($m) {
|
||||||
|
assert(is_string($m[1]));
|
||||||
// Double-quotes are used only when needed
|
// Double-quotes are used only when needed
|
||||||
$char = (strpbrk($m[1], " \t^&|<>()") !== false || $m[1] === "''") ? '"' : '';
|
$char = (strpbrk($m[1], " \t^&|<>()") !== false || $m[1] === "''") ? '"' : '';
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,7 @@ class TlsHelperTest extends TestCase
|
||||||
// @phpstan-ignore-next-line
|
// @phpstan-ignore-next-line
|
||||||
$names = TlsHelper::getCertificateNames($certificate);
|
$names = TlsHelper::getCertificateNames($certificate);
|
||||||
|
|
||||||
|
self::assertIsArray($names);
|
||||||
$this->assertSame('example.net', $names['cn']);
|
$this->assertSame('example.net', $names['cn']);
|
||||||
$this->assertSame([
|
$this->assertSame([
|
||||||
'example.com',
|
'example.com',
|
||||||
|
|
Loading…
Reference in New Issue