diff --git a/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php b/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php index a923c5a..37efaac 100644 --- a/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php +++ b/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php @@ -46,6 +46,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..a9fa1e7 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); + + $changedPackageVersion = $changedPackageVersionsResult->getChangedPackageVersions()[0]; + + $this->assertSame('illuminate/container', $changedPackageVersion->getPackageName()); + $this->assertSame('^12.14 | 13.0', $changedPackageVersion->getOldVersion()); + $this->assertSame('^12.18', $changedPackageVersion->getNewVersion()); + } + + public function testDoublePiped(): void + { + $composerJsonContents = FileSystem::read(__DIR__ . '/Fixture/double-piped.json'); + + $changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); + + $changedPackageVersion = $changedPackageVersionsResult->getChangedPackageVersions()[0]; + + $this->assertSame('illuminate/container', $changedPackageVersion->getPackageName()); + $this->assertSame('^12.14 | 13.0', $changedPackageVersion->getOldVersion()); + $this->assertSame('^12.18', $changedPackageVersion->getNewVersion()); + } }