allow app developers to specify the minimum int size

simplify comparison

remove additional null

fix off by 1 error
This commit is contained in:
Bernhard Posselt 2016-04-27 21:24:33 +02:00
parent 238dbe9252
commit 4c1b55be92
3 changed files with 29 additions and 8 deletions

View File

@ -145,6 +145,12 @@ class DependencyAnalyzer {
$missing[] = (string)$this->l->t('PHP with a version lower than %s is required.', $maxVersion);
}
}
if (isset($dependencies['php']['@attributes']['min-int-size'])) {
$intSize = $dependencies['php']['@attributes']['min-int-size'];
if ($intSize > $this->platform->getIntSize()*8) {
$missing[] = (string)$this->l->t('%sbit or higher PHP required.', $intSize);
}
}
return $missing;
}

View File

@ -48,6 +48,13 @@ class Platform {
return phpversion();
}
/**
* @return int
*/
public function getIntSize() {
return PHP_INT_SIZE;
}
/**
* @return string
*/

View File

@ -32,6 +32,9 @@ class DependencyAnalyzer extends TestCase {
$this->platformMock->expects($this->any())
->method('getPhpVersion')
->will( $this->returnValue('5.4.3'));
$this->platformMock->expects($this->any())
->method('getIntSize')
->will( $this->returnValue('4'));
$this->platformMock->expects($this->any())
->method('getDatabase')
->will( $this->returnValue('mysql'));
@ -73,8 +76,9 @@ class DependencyAnalyzer extends TestCase {
* @param string $expectedMissing
* @param string $minVersion
* @param string $maxVersion
* @param string $intSize
*/
public function testPhpVersion($expectedMissing, $minVersion, $maxVersion) {
public function testPhpVersion($expectedMissing, $minVersion, $maxVersion, $intSize) {
$app = array(
'dependencies' => array(
'php' => array()
@ -86,6 +90,9 @@ class DependencyAnalyzer extends TestCase {
if (!is_null($maxVersion)) {
$app['dependencies']['php']['@attributes']['max-version'] = $maxVersion;
}
if (!is_null($intSize)) {
$app['dependencies']['php']['@attributes']['min-int-size'] = $intSize;
}
$missing = $this->analyser->analyze($app);
$this->assertTrue(is_array($missing));
@ -278,13 +285,14 @@ class DependencyAnalyzer extends TestCase {
*/
function providesPhpVersion() {
return array(
array(array(), null, null),
array(array(), '5.4', null),
array(array(), null, '5.5'),
array(array(), '5.4', '5.5'),
array(array('PHP 5.4.4 or higher is required.'), '5.4.4', null),
array(array('PHP with a version lower than 5.4.2 is required.'), null, '5.4.2'),
array(array(), '5.4', '5.4'),
array(array(), null, null, null),
array(array(), '5.4', null, null),
array(array(), null, '5.5', null),
array(array(), '5.4', '5.5', null),
array(array('PHP 5.4.4 or higher is required.'), '5.4.4', null, null),
array(array('PHP with a version lower than 5.4.2 is required.'), null, '5.4.2', null),
array(array('64bit or higher PHP required.'), null, null, 64),
array(array(), '5.4', '5.4', null),
);
}
}