From 8ad6bc0853322fb1b47bdf8362e64835f2e37fbb Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Tue, 30 Aug 2022 20:45:07 +0200 Subject: [PATCH] Fix handling of zero-major versions in outdated --major-only flag, fixes #11032 --- .../Composer/Test/Command/ShowCommandTest.php | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/tests/Composer/Test/Command/ShowCommandTest.php b/tests/Composer/Test/Command/ShowCommandTest.php index ea23fad11860..ea33377e3e03 100644 --- a/tests/Composer/Test/Command/ShowCommandTest.php +++ b/tests/Composer/Test/Command/ShowCommandTest.php @@ -192,6 +192,61 @@ public function testShowPlatformOnlyShowsPlatformPackages(): void } } + public function testOutdatedWithZeroMajor(): void + { + $this->initTempComposer([ + 'repositories' => [ + 'packages' => [ + 'type' => 'package', + 'package' => [ + ['name' => 'zero/major', 'description' => 'generic description', 'version' => '0.1.0'], + ['name' => 'zero/major', 'description' => 'generic description', 'version' => '0.2.0'], + ['name' => 'zero/minor', 'description' => 'generic description', 'version' => '0.1.0'], + ['name' => 'zero/minor', 'description' => 'generic description', 'version' => '0.1.2'], + ['name' => 'zero/patch', 'description' => 'generic description', 'version' => '0.1.2'], + ['name' => 'zero/patch', 'description' => 'generic description', 'version' => '0.1.2.1'], + ], + ], + ], + 'require' => [ + 'zero/major' => '^0.1', + 'zero/minor' => '^0.1', + 'zero/patch' => '^0.1', + ], + ]); + + $this->createInstalledJson([ + $this->getPackage('zero/major', '0.1.0'), + $this->getPackage('zero/minor', '0.1.0'), + $this->getPackage('zero/patch', '0.1.2'), + ]); + + $appTester = $this->getApplicationTester(); + $appTester->run(['command' => 'outdated', '--direct' => true, '--patch-only' => true]); + self::assertSame( +'Legend: +! patch or minor release available - update recommended +~ major release available - update possible +zero/patch 0.1.2 ! 0.1.2.1', trim($appTester->getDisplay(true))); + + $appTester = $this->getApplicationTester(); + $appTester->run(['command' => 'outdated', '--direct' => true, '--minor-only' => true]); + self::assertSame( +'Legend: +! patch or minor release available - update recommended +~ major release available - update possible +zero/minor 0.1.0 ! 0.1.2 +zero/patch 0.1.2 ! 0.1.2.1', trim($appTester->getDisplay(true))); + + $appTester = $this->getApplicationTester(); + $appTester->run(['command' => 'outdated', '--direct' => true, '--major-only' => true]); + self::assertSame( +'Legend: +! patch or minor release available - update recommended +~ major release available - update possible +zero/major 0.1.0 ~ 0.2.0', trim($appTester->getDisplay(true))); + } + public function testShowAllShowsAllSections(): void { $this->initTempComposer([