1
0
Fork 0
composer/tests/Composer/Test/Package/Dumper/ArrayDumperTest.php

261 lines
8.4 KiB
PHP
Raw Normal View History

2012-02-14 11:57:15 +00:00
<?php
/*
* 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\Package\Dumper;
use Composer\Package\Dumper\ArrayDumper;
2012-04-14 09:56:13 +00:00
use Composer\Package\Link;
use Composer\Semver\Constraint\Constraint;
2020-02-07 03:18:45 +00:00
use Composer\Test\TestCase;
2012-02-14 11:57:15 +00:00
class ArrayDumperTest extends TestCase
2012-02-14 11:57:15 +00:00
{
/**
* @var ArrayDumper
*/
private $dumper;
/**
2021-12-08 16:03:05 +00:00
* @var \Composer\Package\CompletePackageInterface|\PHPUnit\Framework\MockObject\MockObject
*/
private $package;
2021-12-08 16:03:05 +00:00
public function setUp(): void
2012-02-14 11:57:15 +00:00
{
$this->dumper = new ArrayDumper();
$this->package = $this->getMockBuilder('Composer\Package\CompletePackageInterface')->getMock();
$this->packageExpects('getTransportOptions', array());
2012-02-14 11:57:15 +00:00
}
public function testRequiredInformation(): void
2012-02-14 11:57:15 +00:00
{
$this
->packageExpects('getPrettyName', 'foo')
->packageExpects('getPrettyVersion', '1.0')
->packageExpects('getVersion', '1.0.0.0')
;
2012-02-14 11:57:15 +00:00
$config = $this->dumper->dump($this->package);
$this->assertEquals(
array(
'name' => 'foo',
'version' => '1.0',
2015-09-28 09:51:14 +00:00
'version_normalized' => '1.0.0.0',
),
$config
);
2012-02-14 11:57:15 +00:00
}
public function testRootPackage(): void
{
$this->package = $this->getMockBuilder('Composer\Package\RootPackageInterface')->getMock();
$this
->packageExpects('getMinimumStability', 'dev')
->packageExpects('getTransportOptions', array())
;
$config = $this->dumper->dump($this->package);
$this->assertSame('dev', $config['minimum-stability']);
}
public function testDumpAbandoned(): void
{
$this->packageExpects('isAbandoned', true);
$this->packageExpects('getReplacementPackage', true);
$config = $this->dumper->dump($this->package);
2017-11-30 14:58:10 +00:00
$this->assertTrue($config['abandoned']);
}
public function testDumpAbandonedReplacement(): void
{
$this->packageExpects('isAbandoned', true);
$this->packageExpects('getReplacementPackage', 'foo/bar');
$config = $this->dumper->dump($this->package);
$this->assertSame('foo/bar', $config['abandoned']);
}
2012-02-14 11:57:15 +00:00
/**
2021-11-01 20:44:12 +00:00
* @dataProvider provideKeys
*
* @param string $key
* @param mixed $value
* @param string $method
* @param mixed $expectedValue
2012-02-14 11:57:15 +00:00
*/
public function testKeys($key, $value, $method = null, $expectedValue = null): void
2012-02-14 11:57:15 +00:00
{
$this->package = $this->getMockBuilder('Composer\Package\RootPackageInterface')->getMock();
$this->packageExpects('get'.ucfirst($method ?: $key), $value);
$this->packageExpects('isAbandoned', $value);
2012-02-14 11:57:15 +00:00
if ($method !== 'transportOptions') {
$this->packageExpects('getTransportOptions', array());
}
$config = $this->dumper->dump($this->package);
2012-02-14 11:57:15 +00:00
$this->assertSame($expectedValue ?: $value, $config[$key]);
2012-02-14 11:57:15 +00:00
}
2022-02-21 12:42:28 +00:00
public function provideKeys(): array
2012-02-14 11:57:15 +00:00
{
return array(
array(
'type',
2015-09-28 09:51:14 +00:00
'library',
),
2012-04-14 09:56:13 +00:00
array(
'time',
2016-10-04 11:17:10 +00:00
$datetime = new \DateTime('2012-02-01'),
2012-04-14 09:56:13 +00:00
'ReleaseDate',
2016-10-04 11:17:10 +00:00
$datetime->format(DATE_RFC3339),
2012-04-14 09:56:13 +00:00
),
array(
'authors',
2015-09-28 09:51:14 +00:00
array('Nils Adermann <naderman@naderman.de>', 'Jordi Boggiano <j.boggiano@seld.be>'),
2012-04-14 09:56:13 +00:00
),
array(
'homepage',
2015-09-28 09:51:14 +00:00
'https://getcomposer.org',
2012-04-14 09:56:13 +00:00
),
array(
'description',
2015-09-28 09:51:14 +00:00
'Dependency Manager',
2012-04-14 09:56:13 +00:00
),
array(
'keywords',
array('package', 'dependency', 'autoload'),
null,
2015-09-28 09:51:14 +00:00
array('autoload', 'dependency', 'package'),
2012-04-14 09:56:13 +00:00
),
array(
'bin',
array('bin/composer'),
2015-09-28 09:51:14 +00:00
'binaries',
2012-04-14 09:56:13 +00:00
),
array(
'license',
2015-09-28 09:51:14 +00:00
array('MIT'),
2012-04-14 09:56:13 +00:00
),
array(
'autoload',
2015-09-28 09:51:14 +00:00
array('psr-0' => array('Composer' => 'src/')),
2012-04-14 09:56:13 +00:00
),
array(
'repositories',
2015-09-28 09:51:14 +00:00
array('packagist' => false),
2012-04-14 09:56:13 +00:00
),
array(
'scripts',
2015-09-28 09:51:14 +00:00
array('post-update-cmd' => 'MyVendor\\MyClass::postUpdate'),
2012-04-14 09:56:13 +00:00
),
array(
'extra',
2015-09-28 09:51:14 +00:00
array('class' => 'MyVendor\\Installer'),
2012-04-14 09:56:13 +00:00
),
array(
'archive',
array('/foo/bar', 'baz', '!/foo/bar/baz'),
'archiveExcludes',
array(
'exclude' => array('/foo/bar', 'baz', '!/foo/bar/baz'),
),
),
2012-04-14 09:56:13 +00:00
array(
'require',
array(new Link('foo', 'foo/bar', new Constraint('=', '1.0.0.0'), Link::TYPE_REQUIRE, '1.0.0')),
2012-04-14 09:56:13 +00:00
'requires',
array('foo/bar' => '1.0.0'),
),
array(
'require-dev',
array(new Link('foo', 'foo/bar', new Constraint('=', '1.0.0.0'), Link::TYPE_DEV_REQUIRE, '1.0.0')),
2012-04-14 09:56:13 +00:00
'devRequires',
array('foo/bar' => '1.0.0'),
),
array(
'suggest',
array('foo/bar' => 'very useful package'),
2015-09-28 09:51:14 +00:00
'suggests',
2012-04-14 09:56:13 +00:00
),
array(
'support',
array('foo' => 'bar'),
),
array(
'funding',
array('type' => 'foo', 'url' => 'https://example.com'),
),
array(
'require',
array(new Link('foo', 'foo/bar', new Constraint('=', '1.0.0.0'), Link::TYPE_REQUIRE, '1.0.0'), new Link('bar', 'bar/baz', new Constraint('=', '1.0.0.0'), Link::TYPE_REQUIRE, '1.0.0')),
'requires',
2015-09-28 09:51:14 +00:00
array('bar/baz' => '1.0.0', 'foo/bar' => '1.0.0'),
),
array(
'require-dev',
array(new Link('foo', 'foo/bar', new Constraint('=', '1.0.0.0'), Link::TYPE_REQUIRE, '1.0.0'), new Link('bar', 'bar/baz', new Constraint('=', '1.0.0.0'), Link::TYPE_REQUIRE, '1.0.0')),
'devRequires',
2015-09-28 09:51:14 +00:00
array('bar/baz' => '1.0.0', 'foo/bar' => '1.0.0'),
),
array(
'suggest',
array('foo/bar' => 'very useful package', 'bar/baz' => 'another useful package'),
'suggests',
2015-09-28 09:51:14 +00:00
array('bar/baz' => 'another useful package', 'foo/bar' => 'very useful package'),
),
array(
'provide',
array(new Link('foo', 'foo/bar', new Constraint('=', '1.0.0.0'), Link::TYPE_REQUIRE, '1.0.0'), new Link('bar', 'bar/baz', new Constraint('=', '1.0.0.0'), Link::TYPE_REQUIRE, '1.0.0')),
'provides',
2015-09-28 09:51:14 +00:00
array('bar/baz' => '1.0.0', 'foo/bar' => '1.0.0'),
),
array(
'replace',
array(new Link('foo', 'foo/bar', new Constraint('=', '1.0.0.0'), Link::TYPE_REQUIRE, '1.0.0'), new Link('bar', 'bar/baz', new Constraint('=', '1.0.0.0'), Link::TYPE_REQUIRE, '1.0.0')),
'replaces',
2015-09-28 09:51:14 +00:00
array('bar/baz' => '1.0.0', 'foo/bar' => '1.0.0'),
),
array(
'conflict',
array(new Link('foo', 'foo/bar', new Constraint('=', '1.0.0.0'), Link::TYPE_REQUIRE, '1.0.0'), new Link('bar', 'bar/baz', new Constraint('=', '1.0.0.0'), Link::TYPE_REQUIRE, '1.0.0')),
'conflicts',
2015-09-28 09:51:14 +00:00
array('bar/baz' => '1.0.0', 'foo/bar' => '1.0.0'),
),
array(
'transport-options',
array('ssl' => array('local_cert' => '/opt/certs/test.pem')),
2015-09-28 09:51:14 +00:00
'transportOptions',
),
2012-02-14 11:57:15 +00:00
);
}
2021-11-01 20:44:12 +00:00
/**
* @param string $method
* @param mixed $value
*/
private function packageExpects($method, $value): \Composer\Test\Package\Dumper\ArrayDumperTest
{
$this->package
->expects($this->any())
->method($method)
->will($this->returnValue($value));
return $this;
}
2012-02-14 11:57:15 +00:00
}