Browse Source

adding supported databases

tags/v8.0.0alpha1
Thomas Müller 9 years ago
parent
commit
ba52c996cf

+ 16
- 0
lib/private/app/dependencyanalyzer.php 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));
}
}

}

+ 16
- 0
lib/private/app/platform.php 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;
}
}

+ 1
- 1
settings/controller/appsettingscontroller.php 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);

+ 2
- 1
tests/data/app/expected-info.json View File

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

+ 5
- 1
tests/data/app/valid-info.xml 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>

+ 32
- 0
tests/lib/app/dependencyanalyzer.php 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),

Loading…
Cancel
Save