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