summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2014-05-27 11:54:12 +0200
committerVincent Petry <pvince81@owncloud.com>2014-05-27 11:54:12 +0200
commitd43a7c5f6ec2806c43c374d598c756a116c3d95b (patch)
treebc4cfd0a51ab46a2248439bef0b11aefbd7dc167 /tests
parenta79f3fd1c0ddf9b8ac4d59ce2affccd4aabf83a0 (diff)
downloadnextcloud-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.php274
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));
}
/**