mirror of
https://github.com/composer/composer
synced 2025-05-09 00:22:53 +00:00
This commit is contained in:
parent
d971f2e37e
commit
556450b15b
7 changed files with 174 additions and 50 deletions
95
tests/Composer/Test/Command/UpdateCommandTest.php
Normal file
95
tests/Composer/Test/Command/UpdateCommandTest.php
Normal file
|
@ -0,0 +1,95 @@
|
|||
<?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\Command;
|
||||
|
||||
use Composer\Test\TestCase;
|
||||
|
||||
class UpdateCommandTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @dataProvider provideUpdates
|
||||
* @param array<mixed> $composerJson
|
||||
* @param array<mixed> $command
|
||||
*/
|
||||
public function testUpdate(array $composerJson, array $command, string $expected): void
|
||||
{
|
||||
$this->initTempComposer($composerJson);
|
||||
|
||||
$appTester = $this->getApplicationTester();
|
||||
$appTester->run(array_merge(['command' => 'update', '--dry-run' => true], $command));
|
||||
|
||||
$this->assertSame(trim($expected), trim($appTester->getDisplay()));
|
||||
}
|
||||
|
||||
public function provideUpdates(): \Generator
|
||||
{
|
||||
$rootDepAndTransitiveDep = [
|
||||
'repositories' => [
|
||||
'packages' => [
|
||||
'type' => 'package',
|
||||
'package' => [
|
||||
['name' => 'root/req', 'version' => '1.0.0', 'require' => ['dep/pkg' => '^1']],
|
||||
['name' => 'dep/pkg', 'version' => '1.0.0'],
|
||||
['name' => 'dep/pkg', 'version' => '1.0.1'],
|
||||
['name' => 'dep/pkg', 'version' => '1.0.2'],
|
||||
],
|
||||
],
|
||||
],
|
||||
'require' => [
|
||||
'root/req' => '1.*',
|
||||
],
|
||||
];
|
||||
|
||||
yield 'simple update' => [
|
||||
$rootDepAndTransitiveDep,
|
||||
[],
|
||||
<<<OUTPUT
|
||||
Loading composer repositories with package information
|
||||
Updating dependencies
|
||||
Lock file operations: 2 installs, 0 updates, 0 removals
|
||||
- Locking dep/pkg (1.0.2)
|
||||
- Locking root/req (1.0.0)
|
||||
Installing dependencies from lock file (including require-dev)
|
||||
Package operations: 2 installs, 0 updates, 0 removals
|
||||
- Installing dep/pkg (1.0.2)
|
||||
- Installing root/req (1.0.0)
|
||||
OUTPUT
|
||||
];
|
||||
|
||||
yield 'update with temporary constraint + --no-install' => [
|
||||
$rootDepAndTransitiveDep,
|
||||
['--with' => ['dep/pkg:1.0.0'], '--no-install' => true],
|
||||
<<<OUTPUT
|
||||
Loading composer repositories with package information
|
||||
Updating dependencies
|
||||
Lock file operations: 2 installs, 0 updates, 0 removals
|
||||
- Locking dep/pkg (1.0.0)
|
||||
- Locking root/req (1.0.0)
|
||||
OUTPUT
|
||||
];
|
||||
|
||||
yield 'update with temporary constraint failing resolution' => [
|
||||
$rootDepAndTransitiveDep,
|
||||
['--with' => ['dep/pkg:^2']],
|
||||
<<<OUTPUT
|
||||
Loading composer repositories with package information
|
||||
Updating dependencies
|
||||
Your requirements could not be resolved to an installable set of packages.
|
||||
|
||||
Problem 1
|
||||
- Root composer.json requires root/req 1.* -> satisfiable by root/req[1.0.0].
|
||||
- root/req 1.0.0 requires dep/pkg ^1 -> found dep/pkg[1.0.0, 1.0.1, 1.0.2] but it conflicts with your temporary update constraint (dep/pkg:^2).
|
||||
OUTPUT
|
||||
];
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue