From 92b4fda07f799682ed49668a260668656dcb5af4 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Tue, 17 Jun 2025 19:24:51 +0700 Subject: [PATCH 1/3] [ComposerProsessor] Fix crash on double piped version on RaiseToInstalledComposerProcessor --- .../RaiseToInstalledComposerProcessor.php | 4 +++ .../Fixture/double-piped.json | 5 ++++ .../Fixture/single-piped.json | 5 ++++ .../RaiseToInstalledComposerProcessorTest.php | 26 +++++++++++++++++++ 4 files changed, 40 insertions(+) create mode 100644 tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/double-piped.json create mode 100644 tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/single-piped.json diff --git a/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php b/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php index a923c5a..1ed989f 100644 --- a/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php +++ b/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php @@ -36,6 +36,7 @@ public function process(string $composerJsonContents): ChangedPackageVersionsRes // if so, replace it $requiredPackagesToVersions = array_merge($composerJson['require'] ?? [], $composerJson['require-dev'] ?? []); foreach ($requiredPackagesToVersions as $packageName => $packageVersion) { + //$packageVersion = str_replace('||', '|', $packageVersion); if (! isset($installedPackagesToVersions[$packageName])) { continue; } @@ -46,6 +47,9 @@ public function process(string $composerJsonContents): ChangedPackageVersionsRes $installedVersion = $installedPackagesToVersions[$packageName]; + // normalize pipe + $packageVersion = str_replace('||', '|', $packageVersion); + // special case for unions if (str_contains((string) $packageVersion, '|')) { $passingVersionKeys = []; diff --git a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/double-piped.json b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/double-piped.json new file mode 100644 index 0000000..4b69ea4 --- /dev/null +++ b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/double-piped.json @@ -0,0 +1,5 @@ +{ + "require": { + "illuminate/container": "^12.14 || 13.0" + } +} \ No newline at end of file diff --git a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/single-piped.json b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/single-piped.json new file mode 100644 index 0000000..4e992d2 --- /dev/null +++ b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/single-piped.json @@ -0,0 +1,5 @@ +{ + "require": { + "illuminate/container": "^12.14 | 13.0" + } +} \ No newline at end of file diff --git a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php index 2eb0c5b..3cd4dd9 100644 --- a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php +++ b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php @@ -48,4 +48,30 @@ public function testSkipDev(): void $this->assertEmpty($changedPackageVersionsResult->getChangedPackageVersions()); } + + public function testSinglePiped(): void + { + $composerJsonContents = FileSystem::read(__DIR__ . '/Fixture/single-piped.json'); + + $changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); + + $currentChangedPackageVersionsResult = current($changedPackageVersionsResult->getChangedPackageVersions()); + + $this->assertSame('illuminate/container', $currentChangedPackageVersionsResult->getPackageName()); + $this->assertSame('^12.14 | 13.0', $currentChangedPackageVersionsResult->getOldVersion()); + $this->assertSame('^12.18', $currentChangedPackageVersionsResult->getNewVersion()); + } + + public function testDoublePiped(): void + { + $composerJsonContents = FileSystem::read(__DIR__ . '/Fixture/double-piped.json'); + + $changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); + + $currentChangedPackageVersionsResult = current($changedPackageVersionsResult->getChangedPackageVersions()); + + $this->assertSame('illuminate/container', $currentChangedPackageVersionsResult->getPackageName()); + $this->assertSame('^12.14 | 13.0', $currentChangedPackageVersionsResult->getOldVersion()); + $this->assertSame('^12.18', $currentChangedPackageVersionsResult->getNewVersion()); + } } From 8a8e9393078aa39ed6e708dcb6d8cdddaab8b244 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Tue, 17 Jun 2025 19:26:21 +0700 Subject: [PATCH 2/3] [ComposerProsessor] Fix crash on double piped version on RaiseToInstalledComposerProcessor --- src/ComposerProcessor/RaiseToInstalledComposerProcessor.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php b/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php index 1ed989f..37efaac 100644 --- a/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php +++ b/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php @@ -36,7 +36,6 @@ public function process(string $composerJsonContents): ChangedPackageVersionsRes // if so, replace it $requiredPackagesToVersions = array_merge($composerJson['require'] ?? [], $composerJson['require-dev'] ?? []); foreach ($requiredPackagesToVersions as $packageName => $packageVersion) { - //$packageVersion = str_replace('||', '|', $packageVersion); if (! isset($installedPackagesToVersions[$packageName])) { continue; } From 6ce0a1c2a8c886ae148f1c66432f67a175cecc2c Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Tue, 17 Jun 2025 19:28:20 +0700 Subject: [PATCH 3/3] Fix phpstan --- .../RaiseToInstalledComposerProcessorTest.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php index 3cd4dd9..a9fa1e7 100644 --- a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php +++ b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php @@ -55,11 +55,11 @@ public function testSinglePiped(): void $changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); - $currentChangedPackageVersionsResult = current($changedPackageVersionsResult->getChangedPackageVersions()); + $changedPackageVersion = $changedPackageVersionsResult->getChangedPackageVersions()[0]; - $this->assertSame('illuminate/container', $currentChangedPackageVersionsResult->getPackageName()); - $this->assertSame('^12.14 | 13.0', $currentChangedPackageVersionsResult->getOldVersion()); - $this->assertSame('^12.18', $currentChangedPackageVersionsResult->getNewVersion()); + $this->assertSame('illuminate/container', $changedPackageVersion->getPackageName()); + $this->assertSame('^12.14 | 13.0', $changedPackageVersion->getOldVersion()); + $this->assertSame('^12.18', $changedPackageVersion->getNewVersion()); } public function testDoublePiped(): void @@ -68,10 +68,10 @@ public function testDoublePiped(): void $changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); - $currentChangedPackageVersionsResult = current($changedPackageVersionsResult->getChangedPackageVersions()); + $changedPackageVersion = $changedPackageVersionsResult->getChangedPackageVersions()[0]; - $this->assertSame('illuminate/container', $currentChangedPackageVersionsResult->getPackageName()); - $this->assertSame('^12.14 | 13.0', $currentChangedPackageVersionsResult->getOldVersion()); - $this->assertSame('^12.18', $currentChangedPackageVersionsResult->getNewVersion()); + $this->assertSame('illuminate/container', $changedPackageVersion->getPackageName()); + $this->assertSame('^12.14 | 13.0', $changedPackageVersion->getOldVersion()); + $this->assertSame('^12.18', $changedPackageVersion->getNewVersion()); } }