adding supported databases

This commit is contained in:
Thomas Müller 2014-12-01 23:43:27 +01:00
parent d235a9c128
commit ba52c996cf
6 changed files with 72 additions and 3 deletions

View File

@ -33,6 +33,7 @@ class DependencyAnalyzer {
*/
public function analyze() {
$this->analysePhpVersion();
$this->analyseSupportedDatabases();
return $this->missing;
}
@ -55,4 +56,19 @@ class DependencyAnalyzer {
}
}
private function analyseSupportedDatabases() {
if (!array_key_exists('database', $this->dependencies)) {
return;
}
$supportedDatabases = $this->dependencies['database'];
if (empty($supportedDatabases)) {
return;
}
$currentDatabase = $this->system->getDatabase();
if (!in_array($currentDatabase, $supportedDatabases)) {
$this->missing[] = (string)$this->l->t('Following databases are supported: %s', join(', ', $supportedDatabases));
}
}
}

View File

@ -10,8 +10,24 @@
namespace OC\App;
use OCP\IConfig;
class Platform {
function __construct(IConfig $config) {
$this->config = $config;
}
public function getPhpVersion() {
return phpversion();
}
public function getDatabase() {
$dbType = $this->config->getSystemValue('dbtype', 'sqlite');
if ($dbType === 'sqlite3') {
$dbType = 'sqlite';
}
return $dbType;
}
}

View File

@ -127,7 +127,7 @@ class AppSettingsController extends Controller {
$app['canUnInstall'] = !$app['active'] && $app['removable'];
// analyse dependencies
$dependencyAnalyzer = new DependencyAnalyzer($app, new Platform(), $this->l10n);
$dependencyAnalyzer = new DependencyAnalyzer($app, new Platform($this->config), $this->l10n);
$missing = $dependencyAnalyzer->analyze();
$app['canInstall'] = empty($missing);

View File

@ -19,6 +19,7 @@
"dependencies": {
"php": {
"min-version": 5.4
}
},
"database":["sqlite", "mysql"]
}
}

View File

@ -20,6 +20,10 @@
</types>
<ocsid>166047</ocsid>
<dependencies>
<php><min-version>5.4</min-version></php>
<php>
<min-version>5.4</min-version>
</php>
<database>sqlite</database>
<database>mysql</database>
</dependencies>
</info>

View File

@ -27,10 +27,14 @@ class DependencyAnalyzer extends \PHPUnit_Framework_TestCase {
public function setUp() {
$this->platformMock = $this->getMockBuilder('\OC\App\Platform')
->disableOriginalConstructor()
->getMock();
$this->platformMock->expects($this->any())
->method('getPhpVersion')
->will( $this->returnValue('5.4.3'));
$this->platformMock->expects($this->any())
->method('getDatabase')
->will( $this->returnValue('mysql'));
$this->l10nMock = $this->getMockBuilder('\OCP\IL10N')
->disableOriginalConstructor()
->getMock();
@ -64,6 +68,34 @@ class DependencyAnalyzer extends \PHPUnit_Framework_TestCase {
$this->assertEquals($expectedMissing, $missing);
}
/**
* @dataProvider providesDatabases
*/
public function testDatabases($expectedMissing, $databases) {
$app = array(
'dependencies' => array(
)
);
if (!is_null($databases)) {
$app['dependencies']['database'] = $databases;
}
$analyser = new \OC\App\DependencyAnalyzer($app, $this->platformMock, $this->l10nMock);
$missing = $analyser->analyze();
$this->assertTrue(is_array($missing));
$this->assertEquals(count($expectedMissing), count($missing));
$this->assertEquals($expectedMissing, $missing);
}
function providesDatabases() {
return array(
// non BC - in case on databases are defined -> all are supported
array(array(), null),
array(array(), array()),
array(array('Following databases are supported: sqlite, postgres'), array('sqlite', 'postgres')),
);
}
function providesPhpVersion() {
return array(
array(array(), null, null),