From: Thomas Müller Date: Fri, 5 Dec 2014 13:51:41 +0000 (+0100) Subject: adding dependencies for supported platforms X-Git-Tag: v8.0.0alpha1~88^2~8 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ee46548f57310b45ce723fd03ec29bfb686f8bc2;p=nextcloud-server.git adding dependencies for supported platforms --- diff --git a/lib/private/app/dependencyanalyzer.php b/lib/private/app/dependencyanalyzer.php index af36637b675..2e838872385 100644 --- a/lib/private/app/dependencyanalyzer.php +++ b/lib/private/app/dependencyanalyzer.php @@ -48,6 +48,7 @@ class DependencyAnalyzer { $this->analyzeDatabases(); $this->analyzeCommands(); $this->analyzeLibraries(); + $this->analyzeOS(); return $this->missing; } @@ -135,6 +136,26 @@ class DependencyAnalyzer { } } + private function analyzeOS() { + if (!isset($this->dependencies['os'])) { + return; + } + + $oss = $this->dependencies['os']; + if (empty($oss)) { + return; + } + $oss = array_map(function($os) { + return $this->getValue($os); + }, $oss); + $currentOS = $this->platform->getOS(); + if (!in_array($currentOS, $oss)) { + $this->addMissing((string)$this->l->t('Following platforms are supported: %s', join(', ', $oss))); + } + } + + + /** * @param $element * @return mixed diff --git a/tests/data/app/expected-info.json b/tests/data/app/expected-info.json index a425622998b..b899df7a8d6 100644 --- a/tests/data/app/expected-info.json +++ b/tests/data/app/expected-info.json @@ -59,6 +59,7 @@ "@value": "intl" }, "curl" - ] + ], + "os": "Linux" } } diff --git a/tests/data/app/valid-info.xml b/tests/data/app/valid-info.xml index 0ea15b63a4b..42f4e3edb7f 100644 --- a/tests/data/app/valid-info.xml +++ b/tests/data/app/valid-info.xml @@ -28,5 +28,6 @@ xml intl curl + Linux diff --git a/tests/lib/app/dependencyanalyzer.php b/tests/lib/app/dependencyanalyzer.php index 872d5cfb2c5..1cd24193ea6 100644 --- a/tests/lib/app/dependencyanalyzer.php +++ b/tests/lib/app/dependencyanalyzer.php @@ -141,6 +141,34 @@ class DependencyAnalyzer extends \PHPUnit_Framework_TestCase { $this->assertEquals($expectedMissing, $missing); } + /** + * @dataProvider providesOS + * @param $expectedMissing + * @param $oss + */ + function testOS($expectedMissing, $oss) { + $app = array( + 'dependencies' => array() + ); + if (!is_null($oss)) { + $app['dependencies']['os'] = $oss; + } + + $analyser = new \OC\App\DependencyAnalyzer($app, $this->platformMock, $this->l10nMock); + $missing = $analyser->analyze(); + + $this->assertTrue(is_array($missing)); + $this->assertEquals($expectedMissing, $missing); + } + + function providesOS() { + return array( + array(array(), null), + array(array(), array()), + array(array('Following platforms are supported: WINNT'), array('WINNT')) + ); + } + function providesLibs() { return array( // we expect curl to exist