adding supported databases
This commit is contained in:
parent
d235a9c128
commit
ba52c996cf
|
@ -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 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 @@
|
||||||
|
|
||||||
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 {
|
||||||
$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 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"php": {
|
"php": {
|
||||||
"min-version": 5.4
|
"min-version": 5.4
|
||||||
}
|
},
|
||||||
|
"database":["sqlite", "mysql"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
||||||
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 {
|
||||||
$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),
|
||||||
|
|
Loading…
Reference in New Issue