Skip to content

Commit a5d2e2c

Browse files
committed
Handle unparseable tags gracefully
1 parent e8617c1 commit a5d2e2c

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

php/utils.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -962,12 +962,16 @@ function get_named_sem_ver( $new_version, $original_version ) {
962962
$patch = $bits[2];
963963
}
964964

965-
if ( isset( $minor ) && Semver::satisfies( $new_version, "{$major}.{$minor}.x" ) ) {
966-
return 'patch';
967-
}
965+
try {
966+
if ( isset( $minor ) && Semver::satisfies( $new_version, "{$major}.{$minor}.x" ) ) {
967+
return 'patch';
968+
}
968969

969-
if ( Semver::satisfies( $new_version, "{$major}.x.x" ) ) {
970-
return 'minor';
970+
if ( Semver::satisfies( $new_version, "{$major}.x.x" ) ) {
971+
return 'minor';
972+
}
973+
} catch ( \UnexpectedValueException $e ) {
974+
return '';
971975
}
972976

973977
return 'major';

tests/test-utils.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ public function testGetSemVer() {
4343
$original_version = '0.19.1';
4444
$this->assertEmpty( Utils\get_named_sem_ver( '0.18.0', $original_version ) );
4545
$this->assertEmpty( Utils\get_named_sem_ver( '0.19.1', $original_version ) );
46+
$this->assertEmpty( Utils\get_named_sem_ver( 'nonsense', $original_version ) );
47+
$this->assertEmpty( Utils\get_named_sem_ver( '0.18.1-beta3', $original_version ) );
48+
$this->assertEmpty( Utils\get_named_sem_ver( '0.19.1-dev1', $original_version ) );
49+
$this->assertEmpty( Utils\get_named_sem_ver( '0.19.1-beta3', $original_version ) );
50+
$this->assertEmpty( Utils\get_named_sem_ver( '0.19.2-dev1', $original_version ) ); // -dev suffix not accepted by SemVer.
51+
$this->assertEquals( 'patch', Utils\get_named_sem_ver( '0.19.2-beta3', $original_version ) );
4652
$this->assertEquals( 'patch', Utils\get_named_sem_ver( '0.19.2', $original_version ) );
4753
$this->assertEquals( 'minor', Utils\get_named_sem_ver( '0.20.0', $original_version ) );
4854
$this->assertEquals( 'minor', Utils\get_named_sem_ver( '0.20.3', $original_version ) );
@@ -54,7 +60,14 @@ public function testGetSemVerWP() {
5460
$original_version = '3.0';
5561
$this->assertEmpty( Utils\get_named_sem_ver( '2.8', $original_version ) );
5662
$this->assertEmpty( Utils\get_named_sem_ver( '2.9.1', $original_version ) );
63+
$this->assertEmpty( Utils\get_named_sem_ver( 'nonsense', $original_version ) );
64+
$this->assertEmpty( Utils\get_named_sem_ver( '2.0-beta3', $original_version ) );
65+
$this->assertEmpty( Utils\get_named_sem_ver( '3.0-dev1', $original_version ) );
66+
$this->assertEmpty( Utils\get_named_sem_ver( '3.0-beta3', $original_version ) );
67+
$this->assertEmpty( Utils\get_named_sem_ver( '3.0.1-dev1', $original_version ) ); // -dev suffix not accepted by SemVer.
68+
$this->assertEquals( 'patch', Utils\get_named_sem_ver( '3.0.1-beta3', $original_version ) );
5769
$this->assertEquals( 'patch', Utils\get_named_sem_ver( '3.0.1', $original_version ) );
70+
$this->assertEquals( 'minor', Utils\get_named_sem_ver( '3.1-beta3', $original_version ) );
5871
$this->assertEquals( 'minor', Utils\get_named_sem_ver( '3.1', $original_version ) );
5972
$this->assertEquals( 'minor', Utils\get_named_sem_ver( '3.1.1', $original_version ) );
6073
$this->assertEquals( 'major', Utils\get_named_sem_ver( '4.0', $original_version ) );

0 commit comments

Comments
 (0)