Skip to content
Snippets Groups Projects
Commit 48d52ff3 authored by catch's avatar catch
Browse files

Issue #3451701 by dww, Mingsong, MegaphoneJon: The update module should not...

Issue #3451701 by dww, Mingsong, MegaphoneJon: The update module should not crash with releases that contain invalid values for core_version_requirement

(cherry picked from commit d3b2a6a5)
parent 96cf406d
No related branches found
No related tags found
No related merge requests found
......@@ -169,7 +169,12 @@ public function setReleaseMessage(array &$project_data) {
* version of Drupal core, otherwise FALSE.
*/
protected function isCoreCompatible($core_compatibility_constraint) {
return Semver::satisfies($this->existingCoreVersion, $core_compatibility_constraint);
try {
return Semver::satisfies($this->existingCoreVersion, $core_compatibility_constraint);
}
catch (\Exception $e) {
return FALSE;
}
}
/**
......
......@@ -156,4 +156,51 @@ public static function providerSetProjectCoreCompatibilityRanges() {
return $test_cases;
}
/**
* @covers ::isCoreCompatible
* @dataProvider providerIsCoreCompatible
*
* @param string $constraint
* The core_version_constraint to test.
* @param string $installed_core
* The installed version of core to compare against.
* @param bool $expected
* The expected result.
*/
public function testIsCoreCompatible(string $constraint, string $installed_core, bool $expected): void {
$core_data['existing_version'] = $installed_core;
$project_compatibility = new ProjectCoreCompatibility($core_data, [], []);
$reflection = new \ReflectionClass(ProjectCoreCompatibility::class);
$reflection_method = $reflection->getMethod('isCoreCompatible');
$result = $reflection_method->invokeArgs($project_compatibility, [$constraint]);
$this->assertSame($expected, $result);
}
/**
* Data provider for testIsCoreCompatible().
*/
public static function providerIsCoreCompatible(): array {
$test_cases['compatible exact'] = [
'10.3.0',
'10.3.0',
TRUE,
];
$test_cases['compatible with OR'] = [
'^9 || ^10',
'10.3.0',
TRUE,
];
$test_cases['incompatible'] = [
'^10',
'11.0.0',
FALSE,
];
$test_cases['broken'] = [
'^^11',
'11.0.0',
FALSE,
];
return $test_cases;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment