Skip to content

Commit 7c087fe

Browse files
authored
Add version normalization in Comparator (#5)
1 parent 4b56fdf commit 7c087fe

2 files changed

Lines changed: 23 additions & 4 deletions

File tree

src/Version/Comparator.php

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,27 @@
55
namespace RoadRunner\VersionChecker\Version;
66

77
use Composer\Semver\Comparator as SemverComparator;
8+
use Composer\Semver\VersionParser;
89

910
final class Comparator implements ComparatorInterface
1011
{
12+
private VersionParser $parser;
13+
14+
public function __construct(VersionParser $parser = null)
15+
{
16+
$this->parser = $parser ?? new VersionParser();
17+
}
18+
1119
/**
1220
* @param non-empty-string $requested
1321
* @param non-empty-string $installed
1422
*/
1523
public function greaterThan(string $requested, string $installed): bool
1624
{
17-
return SemverComparator::greaterThanOrEqualTo($installed, $requested);
25+
return SemverComparator::greaterThanOrEqualTo(
26+
$this->parser->normalize($installed),
27+
$this->parser->normalize($requested)
28+
);
1829
}
1930

2031
/**
@@ -23,7 +34,10 @@ public function greaterThan(string $requested, string $installed): bool
2334
*/
2435
public function lessThan(string $requested, string $installed): bool
2536
{
26-
return SemverComparator::lessThanOrEqualTo($installed, $requested);
37+
return SemverComparator::lessThanOrEqualTo(
38+
$this->parser->normalize($installed),
39+
$this->parser->normalize($requested)
40+
);
2741
}
2842

2943
/**
@@ -32,6 +46,9 @@ public function lessThan(string $requested, string $installed): bool
3246
*/
3347
public function equal(string $requested, string $installed): bool
3448
{
35-
return SemverComparator::equalTo($installed, $requested);
49+
return SemverComparator::equalTo(
50+
$this->parser->normalize($installed),
51+
$this->parser->normalize($requested)
52+
);
3653
}
3754
}

tests/src/Unit/Version/ComparatorTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public static function greaterThanDataProvider(): \Traversable
5656
yield ['2.0.0-alpha', '2.0.0-beta', true];
5757
yield ['2.0.0-alpha', '2.0.0-alpha.1', true];
5858
yield ['2.0.0-alpha', '2.0.0-alpha', true];
59+
yield ['2023.1.0.0-dev', '2023.1.0', true];
5960
}
6061

6162
public static function lessThanDataProvider(): \Traversable
@@ -74,7 +75,8 @@ public static function lessThanDataProvider(): \Traversable
7475
yield ['2.0.0-alpha', '2.0.0', false];
7576
yield ['2.0.0-alpha', '2.0.0-beta', false];
7677
yield ['2.0.0-alpha', '2.0.0-alpha.1', false];
77-
yield ['2.0.0-alpha', '2.0.0-alpha', true];
78+
yield ['2023.1.0.0-dev', '2023.1.0', false];
79+
yield ['2023.1.0', '2023.1.0.0-dev', true];
7880
}
7981

8082
public static function equalDataProvider(): \Traversable

0 commit comments

Comments
 (0)