1
0
Fork 0
mirror of https://github.com/composer/composer synced 2025-05-09 08:32:56 +00:00

Add warning when outdated command rejects an existing version due to platform requirements, fixes #11016 (#11113)

This commit is contained in:
Jordi Boggiano 2022-10-12 13:57:14 +02:00 committed by GitHub
parent 8ed7c46179
commit 822fd640d0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 103 additions and 6 deletions

View file

@ -167,6 +167,88 @@ outdated/patch 1.0.0 <highlight>! 1.0.1</highlight>',
];
}
public function testOutdatedFiltersAccordingToPlatformReqsAndWarns(): void
{
$this->initTempComposer([
'repositories' => [
'packages' => [
'type' => 'package',
'package' => [
['name' => 'vendor/package', 'description' => 'generic description', 'version' => '1.0.0'],
['name' => 'vendor/package', 'description' => 'generic description', 'version' => '1.1.0', 'require' => ['ext-missing' => '3']],
['name' => 'vendor/package', 'description' => 'generic description', 'version' => '1.2.0', 'require' => ['ext-missing' => '3']],
['name' => 'vendor/package', 'description' => 'generic description', 'version' => '1.3.0', 'require' => ['ext-missing' => '3']],
],
],
],
]);
$this->createInstalledJson([
$this->getPackage('vendor/package', '1.1.0'),
]);
$appTester = $this->getApplicationTester();
$appTester->run(['command' => 'outdated']);
self::assertSame("<warning>Cannot use vendor/package 1.1.0 as it requires ext-missing 3 which is missing from your platform.
Legend:
! patch or minor release available - update recommended
~ major release available - update possible
Direct dependencies required in composer.json:
Everything up to date
Transitive dependencies not required in composer.json:
vendor/package 1.1.0 ~ 1.0.0", trim($appTester->getDisplay(true)));
$appTester = $this->getApplicationTester();
$appTester->run(['command' => 'outdated', '--verbose' => true]);
self::assertSame("<warning>Cannot use vendor/package's latest version 1.3.0 as it requires ext-missing 3 which is missing from your platform.
<warning>Cannot use vendor/package 1.2.0 as it requires ext-missing 3 which is missing from your platform.
<warning>Cannot use vendor/package 1.1.0 as it requires ext-missing 3 which is missing from your platform.
Legend:
! patch or minor release available - update recommended
~ major release available - update possible
Direct dependencies required in composer.json:
Everything up to date
Transitive dependencies not required in composer.json:
vendor/package 1.1.0 ~ 1.0.0", trim($appTester->getDisplay(true)));
}
public function testOutdatedFiltersAccordingToPlatformReqsWithoutWarningForHigherVersions(): void
{
$this->initTempComposer([
'repositories' => [
'packages' => [
'type' => 'package',
'package' => [
['name' => 'vendor/package', 'description' => 'generic description', 'version' => '1.0.0'],
['name' => 'vendor/package', 'description' => 'generic description', 'version' => '1.1.0'],
['name' => 'vendor/package', 'description' => 'generic description', 'version' => '1.2.0'],
['name' => 'vendor/package', 'description' => 'generic description', 'version' => '1.3.0', 'require' => ['php' => '^99']],
],
],
],
]);
$this->createInstalledJson([
$this->getPackage('vendor/package', '1.1.0'),
]);
$appTester = $this->getApplicationTester();
$appTester->run(['command' => 'outdated']);
self::assertSame("Legend:
! patch or minor release available - update recommended
~ major release available - update possible
Direct dependencies required in composer.json:
Everything up to date
Transitive dependencies not required in composer.json:
vendor/package 1.1.0 <highlight>! 1.2.0</highlight>", trim($appTester->getDisplay(true)));
}
public function testShowPlatformOnlyShowsPlatformPackages(): void
{
$this->initTempComposer([