1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
<?php declare(strict_types=1);
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Test\Repository;
use Composer\Repository\RepositoryFactory;
use Composer\Test\TestCase;
use PHPUnit\Framework\Attributes\DataProvider;
class RepositoryFactoryTest extends TestCase
{
public function testManagerWithAllRepositoryTypes(): void
{
$manager = RepositoryFactory::manager(
$this->getMockBuilder('Composer\IO\IOInterface')->getMock(),
$this->getMockBuilder('Composer\Config')->getMock(),
$this->getMockBuilder('Composer\Util\HttpDownloader')->disableOriginalConstructor()->getMock(),
$this->getMockBuilder('Composer\EventDispatcher\EventDispatcher')->disableOriginalConstructor()->getMock()
);
$ref = new \ReflectionProperty($manager, 'repositoryClasses');
(\PHP_VERSION_ID < 80100) and $ref->setAccessible(true);
$repositoryClasses = $ref->getValue($manager);
self::assertEquals([
'composer',
'vcs',
'package',
'pear',
'git',
'bitbucket',
'git-bitbucket',
'github',
'gitlab',
'svn',
'fossil',
'perforce',
'hg',
'artifact',
'path',
], array_keys($repositoryClasses));
}
/**
* @param int|string $index
* @param array<string, string> $config
* @param array<string, mixed> $existingRepos
*
* @phpstan-param array{url?: string} $config
*/
#[DataProvider('generateRepositoryNameProvider')]
public function testGenerateRepositoryName($index, array $config, array $existingRepos, string $expected): void
{
self::assertSame($expected, RepositoryFactory::generateRepositoryName($index, $config, $existingRepos));
}
public static function generateRepositoryNameProvider(): array
{
return [
[0, [], [], '0'],
[0, [], [[]], '02'],
[0, ['url' => 'https://example.org'], [], 'example.org'],
[0, ['url' => 'https://example.org'], ['example.org' => []], 'example.org2'],
['example.org', ['url' => 'https://example.org/repository'], [], 'example.org'],
['example.org', ['url' => 'https://example.org/repository'], ['example.org' => []], 'example.org2'],
];
}
}
|