summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2014-12-01 23:43:27 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2014-12-04 11:40:33 +0100
commitba52c996cf81781d752748986c761667f59691a3 (patch)
treefa735e947671acc94656017afd3369740c437e6a
parentd235a9c128a47876ab36a83ef7f6091db907983c (diff)
downloadnextcloud-server-ba52c996cf81781d752748986c761667f59691a3.tar.gz
nextcloud-server-ba52c996cf81781d752748986c761667f59691a3.zip
adding supported databases
-rw-r--r--lib/private/app/dependencyanalyzer.php16
-rw-r--r--lib/private/app/platform.php16
-rw-r--r--settings/controller/appsettingscontroller.php2
-rw-r--r--tests/data/app/expected-info.json3
-rw-r--r--tests/data/app/valid-info.xml6
-rw-r--r--tests/lib/app/dependencyanalyzer.php32
6 files changed, 72 insertions, 3 deletions
diff --git a/lib/private/app/dependencyanalyzer.php b/lib/private/app/dependencyanalyzer.php
index c76181926e2..7fd181c076c 100644
--- a/lib/private/app/dependencyanalyzer.php
+++ b/lib/private/app/dependencyanalyzer.php
@@ -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));
+ }
+ }
+
}
diff --git a/lib/private/app/platform.php b/lib/private/app/platform.php
index 292159337a0..39f8a2979f9 100644
--- a/lib/private/app/platform.php
+++ b/lib/private/app/platform.php
@@ -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;
+ }
}
diff --git a/settings/controller/appsettingscontroller.php b/settings/controller/appsettingscontroller.php
index 1f7e3b259fe..3ad52bd2187 100644
--- a/settings/controller/appsettingscontroller.php
+++ b/settings/controller/appsettingscontroller.php
@@ -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);
diff --git a/tests/data/app/expected-info.json b/tests/data/app/expected-info.json
index 50e81a48fd2..9be6062220f 100644
--- a/tests/data/app/expected-info.json
+++ b/tests/data/app/expected-info.json
@@ -19,6 +19,7 @@
"dependencies": {
"php": {
"min-version": 5.4
- }
+ },
+ "database":["sqlite", "mysql"]
}
}
diff --git a/tests/data/app/valid-info.xml b/tests/data/app/valid-info.xml
index 81abb276902..3a40e62d147 100644
--- a/tests/data/app/valid-info.xml
+++ b/tests/data/app/valid-info.xml
@@ -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>
diff --git a/tests/lib/app/dependencyanalyzer.php b/tests/lib/app/dependencyanalyzer.php
index d0c2919f47a..25f2ad8caa8 100644
--- a/tests/lib/app/dependencyanalyzer.php
+++ b/tests/lib/app/dependencyanalyzer.php
@@ -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),