From ee46548f57310b45ce723fd03ec29bfb686f8bc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Fri, 5 Dec 2014 14:51:41 +0100 Subject: [PATCH] adding dependencies for supported platforms --- lib/private/app/dependencyanalyzer.php | 21 +++++++++++++++++++ tests/data/app/expected-info.json | 3 ++- tests/data/app/valid-info.xml | 1 + tests/lib/app/dependencyanalyzer.php | 28 ++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/lib/private/app/dependencyanalyzer.php b/lib/private/app/dependencyanalyzer.php index af36637b67..2e83887238 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 a425622998..b899df7a8d 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 0ea15b63a4..42f4e3edb7 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 872d5cfb2c..1cd24193ea 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