Commit ba52c996 authored by Thomas Müller's avatar Thomas Müller
Browse files

adding supported databases

parent d235a9c1
...@@ -33,6 +33,7 @@ class DependencyAnalyzer { ...@@ -33,6 +33,7 @@ class DependencyAnalyzer {
*/ */
public function analyze() { public function analyze() {
$this->analysePhpVersion(); $this->analysePhpVersion();
$this->analyseSupportedDatabases();
return $this->missing; return $this->missing;
} }
...@@ -55,4 +56,19 @@ class DependencyAnalyzer { ...@@ -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));
}
}
} }
...@@ -10,8 +10,24 @@ ...@@ -10,8 +10,24 @@
namespace OC\App; namespace OC\App;
use OCP\IConfig;
class Platform { class Platform {
function __construct(IConfig $config) {
$this->config = $config;
}
public function getPhpVersion() { public function getPhpVersion() {
return phpversion(); return phpversion();
} }
public function getDatabase() {
$dbType = $this->config->getSystemValue('dbtype', 'sqlite');
if ($dbType === 'sqlite3') {
$dbType = 'sqlite';
}
return $dbType;
}
} }
...@@ -127,7 +127,7 @@ class AppSettingsController extends Controller { ...@@ -127,7 +127,7 @@ class AppSettingsController extends Controller {
$app['canUnInstall'] = !$app['active'] && $app['removable']; $app['canUnInstall'] = !$app['active'] && $app['removable'];
// analyse dependencies // analyse dependencies
$dependencyAnalyzer = new DependencyAnalyzer($app, new Platform(), $this->l10n); $dependencyAnalyzer = new DependencyAnalyzer($app, new Platform($this->config), $this->l10n);
$missing = $dependencyAnalyzer->analyze(); $missing = $dependencyAnalyzer->analyze();
$app['canInstall'] = empty($missing); $app['canInstall'] = empty($missing);
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
"dependencies": { "dependencies": {
"php": { "php": {
"min-version": 5.4 "min-version": 5.4
} },
"database":["sqlite", "mysql"]
} }
} }
...@@ -20,6 +20,10 @@ ...@@ -20,6 +20,10 @@
</types> </types>
<ocsid>166047</ocsid> <ocsid>166047</ocsid>
<dependencies> <dependencies>
<php><min-version>5.4</min-version></php> <php>
<min-version>5.4</min-version>
</php>
<database>sqlite</database>
<database>mysql</database>
</dependencies> </dependencies>
</info> </info>
...@@ -27,10 +27,14 @@ class DependencyAnalyzer extends \PHPUnit_Framework_TestCase { ...@@ -27,10 +27,14 @@ class DependencyAnalyzer extends \PHPUnit_Framework_TestCase {
public function setUp() { public function setUp() {
$this->platformMock = $this->getMockBuilder('\OC\App\Platform') $this->platformMock = $this->getMockBuilder('\OC\App\Platform')
->disableOriginalConstructor()
->getMock(); ->getMock();
$this->platformMock->expects($this->any()) $this->platformMock->expects($this->any())
->method('getPhpVersion') ->method('getPhpVersion')
->will( $this->returnValue('5.4.3')); ->will( $this->returnValue('5.4.3'));
$this->platformMock->expects($this->any())
->method('getDatabase')
->will( $this->returnValue('mysql'));
$this->l10nMock = $this->getMockBuilder('\OCP\IL10N') $this->l10nMock = $this->getMockBuilder('\OCP\IL10N')
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();
...@@ -64,6 +68,34 @@ class DependencyAnalyzer extends \PHPUnit_Framework_TestCase { ...@@ -64,6 +68,34 @@ class DependencyAnalyzer extends \PHPUnit_Framework_TestCase {
$this->assertEquals($expectedMissing, $missing); $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() { function providesPhpVersion() {
return array( return array(
array(array(), null, null), array(array(), null, null),
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment