Skip to content

Commit e01da56

Browse files
authored
Skip dev- version on raise-to-installed (#10)
* skip dev- version on raise-to-installed * fix test
1 parent 33c5521 commit e01da56

File tree

7 files changed

+36
-15
lines changed

7 files changed

+36
-15
lines changed

src/Command/RaiseToInstalledCommand.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
namespace Rector\Jack\Command;
66

77
use Nette\Utils\FileSystem;
8-
use Nette\Utils\Json;
98
use Rector\Jack\ComposerProcessor\RaiseToInstalledComposerProcessor;
109
use Symfony\Component\Console\Command\Command;
1110
use Symfony\Component\Console\Input\InputInterface;
@@ -51,16 +50,16 @@ protected function execute(InputInterface $input, OutputInterface $output): int
5150
Assert::fileExists($composerJsonFilePath);
5251
$composerJsonContents = FileSystem::read($composerJsonFilePath);
5352

54-
$raiseToInstalledResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents);
53+
$changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents);
5554

56-
$changedPackages = $raiseToInstalledResult->getChangedPackageVersions();
55+
$changedPackages = $changedPackageVersionsResult->getChangedPackageVersions();
5756
if ($changedPackages === []) {
5857
$symfonyStyle->success('No changes made to "composer.json"');
5958
return self::SUCCESS;
6059
}
6160

6261
if ($isDryRun === false) {
63-
$changedComposerJsonContents = $raiseToInstalledResult->getComposerJsonContents();
62+
$changedComposerJsonContents = $changedPackageVersionsResult->getComposerJsonContents();
6463
FileSystem::write($composerJsonFilePath, $changedComposerJsonContents . PHP_EOL, null);
6564
}
6665

src/ComposerProcessor/OpenVersionsComposerProcessor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
/**
1414
* @see \Rector\Jack\Tests\ComposerProcessor\OpenVersionsComposerProcessor\OpenVersionsComposerProcessorTest
1515
*/
16-
final class OpenVersionsComposerProcessor
16+
final readonly class OpenVersionsComposerProcessor
1717
{
1818
public function __construct(
1919
private NextVersionResolver $nextVersionResolver

src/ComposerProcessor/RaiseToInstalledComposerProcessor.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
/**
1717
* @see \Rector\Jack\Tests\ComposerProcessor\RaiseToInstalledComposerProcessor\RaiseToInstalledComposerProcessorTest
1818
*/
19-
final class RaiseToInstalledComposerProcessor
19+
final readonly class RaiseToInstalledComposerProcessor
2020
{
2121
public function __construct(
22-
private readonly VersionParser $versionParser,
23-
private readonly InstalledVersionResolver $installedVersionResolver,
22+
private VersionParser $versionParser,
23+
private InstalledVersionResolver $installedVersionResolver,
2424
) {
2525
}
2626

@@ -39,6 +39,10 @@ public function process(string $composerJsonContents): ChangedPackageVersionsRes
3939
continue;
4040
}
4141

42+
if ($this->shouldSkipPackageVersion($packageVersion)) {
43+
continue;
44+
}
45+
4246
$installedVersion = $installedPackagesToVersions[$packageName];
4347

4448
// special case for unions
@@ -119,4 +123,9 @@ public function process(string $composerJsonContents): ChangedPackageVersionsRes
119123

120124
return new ChangedPackageVersionsResult($composerJsonContents, $changedPackageVersions);
121125
}
126+
127+
private function shouldSkipPackageVersion(string $packageVersion): bool
128+
{
129+
return str_contains($packageVersion, 'dev-');
130+
}
122131
}

src/ValueObject/ChangedPackageVersion.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace Rector\Jack\ValueObject;
66

7-
final class ChangedPackageVersion
7+
final readonly class ChangedPackageVersion
88
{
99
public function __construct(
1010
private string $packageName,

src/ValueObject/ComposerProcessorResult/ChangedPackageVersionsResult.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Rector\Jack\ValueObject\ChangedPackageVersion;
88
use Webmozart\Assert\Assert;
99

10-
final class ChangedPackageVersionsResult
10+
final readonly class ChangedPackageVersionsResult
1111
{
1212
/**
1313
* @param ChangedPackageVersion[] $changedPackageVersions
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"require": {
3+
"illuminate/container": "dev-master"
4+
}
5+
}

tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,28 @@ public function test(): void
2424
{
2525
$composerJsonContents = FileSystem::read(__DIR__ . '/Fixture/some-outdated-composer.json');
2626

27-
$raiseToInstalledResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents);
27+
$changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents);
2828

29-
$this->assertCount(1, $raiseToInstalledResult->getChangedPackageVersions());
29+
$this->assertCount(1, $changedPackageVersionsResult->getChangedPackageVersions());
3030
$this->assertContainsOnlyInstancesOf(
3131
ChangedPackageVersion::class,
32-
$raiseToInstalledResult->getChangedPackageVersions()
32+
$changedPackageVersionsResult->getChangedPackageVersions()
3333
);
3434

35-
$changedPackageVersion = $raiseToInstalledResult->getChangedPackageVersions()[0];
35+
$changedPackageVersion = $changedPackageVersionsResult->getChangedPackageVersions()[0];
3636

3737
$this->assertSame('illuminate/container', $changedPackageVersion->getPackageName());
3838
$this->assertSame('^9.0', $changedPackageVersion->getOldVersion());
3939

4040
// note: this might change in near future; improve to dynamic soon
41-
$this->assertSame('^12.14', $changedPackageVersion->getNewVersion());
41+
$this->assertStringStartsWith('^12.1', $changedPackageVersion->getNewVersion());
42+
}
43+
44+
public function testSkipDev(): void
45+
{
46+
$composerJsonContents = FileSystem::read(__DIR__ . '/Fixture/skip-dev.json');
47+
$changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents);
48+
49+
$this->assertEmpty($changedPackageVersionsResult->getChangedPackageVersions());
4250
}
4351
}

0 commit comments

Comments
 (0)