From 492cc8754d25b2a059213b2e5c87898a90662d7d Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 21 May 2025 19:24:02 +0200 Subject: [PATCH 1/2] skip dev- version on raise-to-installed --- src/Command/RaiseToInstalledCommand.php | 7 +++---- .../OpenVersionsComposerProcessor.php | 2 +- .../RaiseToInstalledComposerProcessor.php | 15 ++++++++++++--- src/ValueObject/ChangedPackageVersion.php | 2 +- .../ChangedPackageVersionsResult.php | 2 +- .../Fixture/skip-dev.json | 5 +++++ .../RaiseToInstalledComposerProcessorTest.php | 16 ++++++++++++---- 7 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/skip-dev.json diff --git a/src/Command/RaiseToInstalledCommand.php b/src/Command/RaiseToInstalledCommand.php index 43ad3b8..775ce2f 100644 --- a/src/Command/RaiseToInstalledCommand.php +++ b/src/Command/RaiseToInstalledCommand.php @@ -5,7 +5,6 @@ namespace Rector\Jack\Command; use Nette\Utils\FileSystem; -use Nette\Utils\Json; use Rector\Jack\ComposerProcessor\RaiseToInstalledComposerProcessor; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -51,16 +50,16 @@ protected function execute(InputInterface $input, OutputInterface $output): int Assert::fileExists($composerJsonFilePath); $composerJsonContents = FileSystem::read($composerJsonFilePath); - $raiseToInstalledResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); + $changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); - $changedPackages = $raiseToInstalledResult->getChangedPackageVersions(); + $changedPackages = $changedPackageVersionsResult->getChangedPackageVersions(); if ($changedPackages === []) { $symfonyStyle->success('No changes made to "composer.json"'); return self::SUCCESS; } if ($isDryRun === false) { - $changedComposerJsonContents = $raiseToInstalledResult->getComposerJsonContents(); + $changedComposerJsonContents = $changedPackageVersionsResult->getComposerJsonContents(); FileSystem::write($composerJsonFilePath, $changedComposerJsonContents . PHP_EOL, null); } diff --git a/src/ComposerProcessor/OpenVersionsComposerProcessor.php b/src/ComposerProcessor/OpenVersionsComposerProcessor.php index 0135386..ba09441 100644 --- a/src/ComposerProcessor/OpenVersionsComposerProcessor.php +++ b/src/ComposerProcessor/OpenVersionsComposerProcessor.php @@ -13,7 +13,7 @@ /** * @see \Rector\Jack\Tests\ComposerProcessor\OpenVersionsComposerProcessor\OpenVersionsComposerProcessorTest */ -final class OpenVersionsComposerProcessor +final readonly class OpenVersionsComposerProcessor { public function __construct( private NextVersionResolver $nextVersionResolver diff --git a/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php b/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php index a7ddb00..4165f8d 100644 --- a/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php +++ b/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php @@ -16,11 +16,11 @@ /** * @see \Rector\Jack\Tests\ComposerProcessor\RaiseToInstalledComposerProcessor\RaiseToInstalledComposerProcessorTest */ -final class RaiseToInstalledComposerProcessor +final readonly class RaiseToInstalledComposerProcessor { public function __construct( - private readonly VersionParser $versionParser, - private readonly InstalledVersionResolver $installedVersionResolver, + private VersionParser $versionParser, + private InstalledVersionResolver $installedVersionResolver, ) { } @@ -39,6 +39,10 @@ public function process(string $composerJsonContents): ChangedPackageVersionsRes continue; } + if ($this->shouldSkipPackageVersion($packageVersion)) { + continue; + } + $installedVersion = $installedPackagesToVersions[$packageName]; // special case for unions @@ -119,4 +123,9 @@ public function process(string $composerJsonContents): ChangedPackageVersionsRes return new ChangedPackageVersionsResult($composerJsonContents, $changedPackageVersions); } + + private function shouldSkipPackageVersion(string $packageVersion): bool + { + return str_contains($packageVersion, 'dev-'); + } } diff --git a/src/ValueObject/ChangedPackageVersion.php b/src/ValueObject/ChangedPackageVersion.php index 54dabee..7a83ef0 100644 --- a/src/ValueObject/ChangedPackageVersion.php +++ b/src/ValueObject/ChangedPackageVersion.php @@ -4,7 +4,7 @@ namespace Rector\Jack\ValueObject; -final class ChangedPackageVersion +final readonly class ChangedPackageVersion { public function __construct( private string $packageName, diff --git a/src/ValueObject/ComposerProcessorResult/ChangedPackageVersionsResult.php b/src/ValueObject/ComposerProcessorResult/ChangedPackageVersionsResult.php index 32de90e..dd493bb 100644 --- a/src/ValueObject/ComposerProcessorResult/ChangedPackageVersionsResult.php +++ b/src/ValueObject/ComposerProcessorResult/ChangedPackageVersionsResult.php @@ -7,7 +7,7 @@ use Rector\Jack\ValueObject\ChangedPackageVersion; use Webmozart\Assert\Assert; -final class ChangedPackageVersionsResult +final readonly class ChangedPackageVersionsResult { /** * @param ChangedPackageVersion[] $changedPackageVersions diff --git a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/skip-dev.json b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/skip-dev.json new file mode 100644 index 0000000..9d2e743 --- /dev/null +++ b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/skip-dev.json @@ -0,0 +1,5 @@ +{ + "require": { + "illuminate/container": "dev-master" + } +} diff --git a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php index f987704..bd7d38d 100644 --- a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php +++ b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php @@ -24,15 +24,15 @@ public function test(): void { $composerJsonContents = FileSystem::read(__DIR__ . '/Fixture/some-outdated-composer.json'); - $raiseToInstalledResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); + $changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); - $this->assertCount(1, $raiseToInstalledResult->getChangedPackageVersions()); + $this->assertCount(1, $changedPackageVersionsResult->getChangedPackageVersions()); $this->assertContainsOnlyInstancesOf( ChangedPackageVersion::class, - $raiseToInstalledResult->getChangedPackageVersions() + $changedPackageVersionsResult->getChangedPackageVersions() ); - $changedPackageVersion = $raiseToInstalledResult->getChangedPackageVersions()[0]; + $changedPackageVersion = $changedPackageVersionsResult->getChangedPackageVersions()[0]; $this->assertSame('illuminate/container', $changedPackageVersion->getPackageName()); $this->assertSame('^9.0', $changedPackageVersion->getOldVersion()); @@ -40,4 +40,12 @@ public function test(): void // note: this might change in near future; improve to dynamic soon $this->assertSame('^12.14', $changedPackageVersion->getNewVersion()); } + + public function testSkipDev(): void + { + $composerJsonContents = FileSystem::read(__DIR__ . '/Fixture/skip-dev.json'); + $changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); + + $this->assertEmpty($changedPackageVersionsResult->getChangedPackageVersions()); + } } From 9bf975587d4e450f3e260f56f6c170cbc7a85f41 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 21 May 2025 19:27:07 +0200 Subject: [PATCH 2/2] fix test --- .../RaiseToInstalledComposerProcessorTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php index bd7d38d..2eb0c5b 100644 --- a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php +++ b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php @@ -38,7 +38,7 @@ public function test(): void $this->assertSame('^9.0', $changedPackageVersion->getOldVersion()); // note: this might change in near future; improve to dynamic soon - $this->assertSame('^12.14', $changedPackageVersion->getNewVersion()); + $this->assertStringStartsWith('^12.1', $changedPackageVersion->getNewVersion()); } public function testSkipDev(): void