1
0
Fork 0

Merge branch '2.3' into main

pull/10826/head
Jordi Boggiano 2022-06-06 10:23:04 +02:00
commit 8792163676
No known key found for this signature in database
GPG Key ID: 7BBD42C429EC80BC
5 changed files with 37 additions and 15 deletions

3
.gitattributes vendored
View File

@ -15,4 +15,5 @@
.travis.yml export-ignore
appveyor.yml export-ignore
phpunit.xml.dist export-ignore
/phpstan/ export-ignore
/phpstan/* export-ignore
/phpstan/rules.neon -export-ignore

View File

@ -76,13 +76,12 @@ class Config
'use-github-api' => true,
'lock' => true,
'platform-check' => 'php-only',
// valid keys without defaults (auth config stuff):
// bitbucket-oauth
// github-oauth
// gitlab-oauth
// gitlab-token
// http-basic
// bearer
'bitbucket-oauth' => array(),
'github-oauth' => array(),
'gitlab-oauth' => array(),
'gitlab-token' => array(),
'http-basic' => array(),
'bearer' => array(),
);
/** @var array<string, mixed> */

View File

@ -114,12 +114,12 @@ abstract class BaseIO implements IOInterface
*/
public function loadConfiguration(Config $config)
{
$bitbucketOauth = $config->get('bitbucket-oauth') ?: array();
$githubOauth = $config->get('github-oauth') ?: array();
$gitlabOauth = $config->get('gitlab-oauth') ?: array();
$gitlabToken = $config->get('gitlab-token') ?: array();
$httpBasic = $config->get('http-basic') ?: array();
$bearerToken = $config->get('bearer') ?: array();
$bitbucketOauth = $config->get('bitbucket-oauth');
$githubOauth = $config->get('github-oauth');
$gitlabOauth = $config->get('gitlab-oauth');
$gitlabToken = $config->get('gitlab-token');
$httpBasic = $config->get('http-basic');
$bearerToken = $config->get('bearer');
// reload oauth tokens from config if available

View File

@ -123,19 +123,23 @@ final class ConfigReturnTypeExtension implements DynamicMethodReturnTypeExtensio
if (isset($def['properties'])) {
$keyNames = [];
$valTypes = [];
$optionalKeys = [];
$propIndex = 0;
foreach ($def['properties'] as $propName => $propdef) {
$keyNames[] = new ConstantStringType($propName);
$valType = $this->parseType($propdef, $path.'.'.$propName);
if (!isset($def['required']) || !in_array($propName, $def['required'], true)) {
$valType = TypeCombinator::addNull($valType);
$optionalKeys[] = $propIndex;
}
$valTypes[] = $valType;
$propIndex++;
}
if ($addlPropType !== null) {
$types[] = new ArrayType(TypeCombinator::union(new StringType(), ...$keyNames), TypeCombinator::union($addlPropType, ...$valTypes));
} else {
$types[] = new ConstantArrayType($keyNames, $valTypes);
$types[] = new ConstantArrayType($keyNames, $valTypes, [0], $optionalKeys);
}
} else {
$types[] = new ArrayType(new StringType(), $addlPropType ?? new MixedType());

View File

@ -390,4 +390,22 @@ class ConfigTest extends TestCase
$this->assertEquals('COMPOSER_HTACCESS_PROTECT', $result);
}
public function testGetDefaultsToAnEmptyArray(): void
{
$config = new Config;
$keys = [
'bitbucket-oauth',
'github-oauth',
'gitlab-oauth',
'gitlab-token',
'http-basic',
'bearer',
];
foreach ($keys as $key) {
$value = $config->get($key);
$this->assertIsArray($value);
$this->assertCount(0, $value);
}
}
}