Skip to content

Commit

Permalink
Add version normalization in Comparator (#5)
Browse files Browse the repository at this point in the history
  • Loading branch information
msmakouz committed May 25, 2023
1 parent 4b56fdf commit 7c087fe
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
23 changes: 20 additions & 3 deletions src/Version/Comparator.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,27 @@
namespace RoadRunner\VersionChecker\Version;

use Composer\Semver\Comparator as SemverComparator;
use Composer\Semver\VersionParser;

final class Comparator implements ComparatorInterface
{
private VersionParser $parser;

public function __construct(VersionParser $parser = null)
{
$this->parser = $parser ?? new VersionParser();
}

/**
* @param non-empty-string $requested
* @param non-empty-string $installed
*/
public function greaterThan(string $requested, string $installed): bool
{
return SemverComparator::greaterThanOrEqualTo($installed, $requested);
return SemverComparator::greaterThanOrEqualTo(
$this->parser->normalize($installed),
$this->parser->normalize($requested)
);
}

/**
Expand All @@ -23,7 +34,10 @@ public function greaterThan(string $requested, string $installed): bool
*/
public function lessThan(string $requested, string $installed): bool
{
return SemverComparator::lessThanOrEqualTo($installed, $requested);
return SemverComparator::lessThanOrEqualTo(
$this->parser->normalize($installed),
$this->parser->normalize($requested)
);
}

/**
Expand All @@ -32,6 +46,9 @@ public function lessThan(string $requested, string $installed): bool
*/
public function equal(string $requested, string $installed): bool
{
return SemverComparator::equalTo($installed, $requested);
return SemverComparator::equalTo(
$this->parser->normalize($installed),
$this->parser->normalize($requested)
);
}
}
4 changes: 3 additions & 1 deletion tests/src/Unit/Version/ComparatorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ public static function greaterThanDataProvider(): \Traversable
yield ['2.0.0-alpha', '2.0.0-beta', true];
yield ['2.0.0-alpha', '2.0.0-alpha.1', true];
yield ['2.0.0-alpha', '2.0.0-alpha', true];
yield ['2023.1.0.0-dev', '2023.1.0', true];
}

public static function lessThanDataProvider(): \Traversable
Expand All @@ -74,7 +75,8 @@ public static function lessThanDataProvider(): \Traversable
yield ['2.0.0-alpha', '2.0.0', false];
yield ['2.0.0-alpha', '2.0.0-beta', false];
yield ['2.0.0-alpha', '2.0.0-alpha.1', false];
yield ['2.0.0-alpha', '2.0.0-alpha', true];
yield ['2023.1.0.0-dev', '2023.1.0', false];
yield ['2023.1.0', '2023.1.0.0-dev', true];
}

public static function equalDataProvider(): \Traversable
Expand Down

0 comments on commit 7c087fe

Please sign in to comment.