diff options
author | Vincent Petry <pvince81@owncloud.com> | 2014-05-27 11:54:12 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2014-05-27 11:54:12 +0200 |
commit | d43a7c5f6ec2806c43c374d598c756a116c3d95b (patch) | |
tree | bc4cfd0a51ab46a2248439bef0b11aefbd7dc167 /tests | |
parent | a79f3fd1c0ddf9b8ac4d59ce2affccd4aabf83a0 (diff) | |
download | nextcloud-server-d43a7c5f6ec2806c43c374d598c756a116c3d95b.tar.gz nextcloud-server-d43a7c5f6ec2806c43c374d598c756a116c3d95b.zip |
Added requiremin/requiremax fields for apps
Apps can now specify a minimum and maximum version of ownCloud in which
they are supported.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/app.php | 274 |
1 files changed, 209 insertions, 65 deletions
diff --git a/tests/lib/app.php b/tests/lib/app.php index 683820cabb6..e2b578fe6b9 100644 --- a/tests/lib/app.php +++ b/tests/lib/app.php @@ -1,6 +1,7 @@ <?php /** * Copyright (c) 2012 Bernhard Posselt <dev@bernhard-posselt.com> + * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com> * This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. @@ -8,75 +9,218 @@ class Test_App extends PHPUnit_Framework_TestCase { - - public function testIsAppVersionCompatibleSingleOCNumber(){ - $oc = array(4); - $app = '4.0'; - - $this->assertTrue(OC_App::isAppVersionCompatible($oc, $app)); - } - - - public function testIsAppVersionCompatibleMultipleOCNumber(){ - $oc = array(4, 3, 1); - $app = '4.3'; - - $this->assertTrue(OC_App::isAppVersionCompatible($oc, $app)); - } - - - public function testIsAppVersionCompatibleSingleNumber(){ - $oc = array(4); - $app = '4'; - - $this->assertTrue(OC_App::isAppVersionCompatible($oc, $app)); - } - - - public function testIsAppVersionCompatibleSingleAppNumber(){ - $oc = array(4, 3); - $app = '4'; - - $this->assertTrue(OC_App::isAppVersionCompatible($oc, $app)); - } - - - public function testIsAppVersionCompatibleComplex(){ - $oc = array(5, 0, 0); - $app = '4.5.1'; - - $this->assertTrue(OC_App::isAppVersionCompatible($oc, $app)); - } - - - public function testIsAppVersionCompatibleShouldFail(){ - $oc = array(4, 3, 1); - $app = '4.3.2'; - - $this->assertFalse(OC_App::isAppVersionCompatible($oc, $app)); + function appVersionsProvider() { + return array( + // exact match + array( + '6.0.0.0', + array( + 'requiremin' => '6.0', + 'requiremax' => '6.0', + ), + true + ), + // in-between match + array( + '6.0.0.0', + array( + 'requiremin' => '5.0', + 'requiremax' => '7.0', + ), + true + ), + // app too old + array( + '6.0.0.0', + array( + 'requiremin' => '5.0', + 'requiremax' => '5.0', + ), + false + ), + // app too new + array( + '5.0.0.0', + array( + 'requiremin' => '6.0', + 'requiremax' => '6.0', + ), + false + ), + // only min specified + array( + '6.0.0.0', + array( + 'requiremin' => '6.0', + ), + true + ), + // only min specified fail + array( + '5.0.0.0', + array( + 'requiremin' => '6.0', + ), + false + ), + // only min specified legacy + array( + '6.0.0.0', + array( + 'require' => '6.0', + ), + true + ), + // only min specified legacy fail + array( + '4.0.0.0', + array( + 'require' => '6.0', + ), + false + ), + // only max specified + array( + '5.0.0.0', + array( + 'requiremax' => '6.0', + ), + true + ), + // only max specified fail + array( + '7.0.0.0', + array( + 'requiremax' => '6.0', + ), + false + ), + // variations of versions + // single OC number + array( + '4', + array( + 'require' => '4.0', + ), + true + ), + // multiple OC number + array( + '4.3.1', + array( + 'require' => '4.3', + ), + true + ), + // single app number + array( + '4', + array( + 'require' => '4', + ), + true + ), + // single app number fail + array( + '4.3', + array( + 'require' => '5', + ), + false + ), + // complex + array( + '5.0.0', + array( + 'require' => '4.5.1', + ), + true + ), + // complex fail + array( + '4.3.1', + array( + 'require' => '4.3.2', + ), + false + ), + // two numbers + array( + '4.3.1', + array( + 'require' => '4.4', + ), + false + ), + // one number fail + array( + '4.3.1', + array( + 'require' => '5', + ), + false + ), + // pre-alpha app + array( + '5.0.3', + array( + 'require' => '4.93', + ), + true + ), + // pre-alpha OC + array( + '6.90.0.2', + array( + 'require' => '6.90', + ), + true + ), + // pre-alpha OC max + array( + '6.90.0.2', + array( + 'requiremax' => '7', + ), + true + ), + // expect same major number match + array( + '5.0.3', + array( + 'require' => '5', + ), + true + ), + // expect same major number match + array( + '5.0.3', + array( + 'requiremax' => '5', + ), + true + ), + ); } - public function testIsAppVersionCompatibleShouldFailTwoVersionNumbers(){ - $oc = array(4, 3, 1); - $app = '4.4'; - - $this->assertFalse(OC_App::isAppVersionCompatible($oc, $app)); - } - - - public function testIsAppVersionCompatibleShouldWorkForPreAlpha(){ - $oc = array(5, 0, 3); - $app = '4.93'; - - $this->assertTrue(OC_App::isAppVersionCompatible($oc, $app)); + /** + * @dataProvider appVersionsProvider + */ + public function testIsAppCompatible($ocVersion, $appInfo, $expectedResult) { + $this->assertEquals($expectedResult, OC_App::isAppCompatible($ocVersion, $appInfo)); } - - public function testIsAppVersionCompatibleShouldFailOneVersionNumbers(){ - $oc = array(4, 3, 1); - $app = '5'; - - $this->assertFalse(OC_App::isAppVersionCompatible($oc, $app)); + /** + * Test that the isAppCompatible method also supports passing an array + * as $ocVersion + */ + public function testIsAppCompatibleWithArray() { + $ocVersion = array(6); + $appInfo = array( + 'requiremin' => '6', + 'requiremax' => '6', + ); + $this->assertTrue(OC_App::isAppCompatible($ocVersion, $appInfo)); } /** |