@ -67,14 +67,68 @@ class UpdaterTest extends \Test\TestCase {
*/
public function versionCompatibilityTestData () {
return [
[ '1.0.0.0' , '2.2.0' , true ],
[ '1.1.1.1' , '2.0.0' , true ],
[ '5.0.3' , '4.0.3' , false ],
[ '12.0.3' , '13.4.5' , true ],
[ '1' , '2' , true ],
[ '2' , '2' , true ],
[ '6.0.5' , '6.0.6' , true ],
[ '5.0.6' , '7.0.4' , false ],
[ '1' , '2' , '1' , true ],
[ '2' , '2' , '2' , true ],
[ '6.0.5.0' , '6.0.6.0' , '5.0' , true ],
[ '5.0.6.0' , '7.0.4.0' , '6.0' , false ],
// allow upgrading within the same major release
[ '8.0.0.0' , '8.0.0.0' , '8.0' , true ],
[ '8.0.0.0' , '8.0.0.4' , '8.0' , true ],
[ '8.0.0.0' , '8.0.1.0' , '8.0' , true ],
[ '8.0.0.0' , '8.0.2.0' , '8.0' , true ],
// does not allow downgrading within the same major release
[ '8.0.1.0' , '8.0.0.0' , '8.0' , false ],
[ '8.0.2.0' , '8.0.1.0' , '8.0' , false ],
[ '8.0.0.4' , '8.0.0.0' , '8.0' , false ],
// allows upgrading within the patch version
[ '8.0.0.0' , '8.0.0.1' , '8.0' , true ],
[ '8.0.0.0' , '8.0.0.2' , '8.0' , true ],
// does not allow downgrading within the same major release
[ '8.0.0.1' , '8.0.0.0' , '8.0' , false ],
[ '8.0.0.2' , '8.0.0.0' , '8.0' , false ],
// allow upgrading to the next major release
[ '8.0.0.0' , '8.1.0.0' , '8.0' , true ],
[ '8.0.0.0' , '8.1.1.0' , '8.0' , true ],
[ '8.0.0.0' , '8.1.1.5' , '8.0' , true ],
[ '8.0.0.2' , '8.1.1.5' , '8.0' , true ],
[ '8.1.0.0' , '8.2.0.0' , '8.1' , true ],
[ '8.1.0.2' , '8.2.0.4' , '8.1' , true ],
[ '8.1.0.5' , '8.2.0.1' , '8.1' , true ],
[ '8.1.0.0' , '8.2.1.0' , '8.1' , true ],
[ '8.1.0.2' , '8.2.1.5' , '8.1' , true ],
[ '8.1.0.5' , '8.2.1.1' , '8.1' , true ],
// does not allow downgrading to the previous major release
[ '8.1.0.0' , '8.0.0.0' , '7.0' , false ],
[ '8.1.1.0' , '8.0.0.0' , '7.0' , false ],
// does not allow skipping major releases
[ '8.0.0.0' , '8.2.0.0' , '8.1' , false ],
[ '8.0.0.0' , '8.2.1.0' , '8.1' , false ],
[ '8.0.0.0' , '9.0.1.0' , '8.2' , false ],
[ '8.0.0.0' , '10.0.0.0' , '9.3' , false ],
// allows updating to the next major release
[ '8.2.0.0' , '9.0.0.0' , '8.2' , true ],
[ '8.2.0.0' , '9.0.0.0' , '8.2' , true ],
[ '8.2.0.0' , '9.0.1.0' , '8.2' , true ],
[ '8.2.0.0' , '9.0.1.1' , '8.2' , true ],
[ '8.2.0.2' , '9.0.1.1' , '8.2' , true ],
[ '8.2.2.0' , '9.0.1.0' , '8.2' , true ],
[ '8.2.2.2' , '9.0.1.1' , '8.2' , true ],
[ '9.0.0.0' , '9.1.0.0' , '9.0' , true ],
[ '9.0.0.0' , '9.1.0.2' , '9.0' , true ],
[ '9.0.0.2' , '9.1.0.1' , '9.0' , true ],
[ '9.1.0.0' , '9.2.0.0' , '9.1' , true ],
[ '9.2.0.0' , '9.3.0.0' , '9.2' , true ],
[ '9.3.0.0' , '10.0.0.0' , '9.3' , true ],
// does not allow updating to the next major release (first number)
[ '9.0.0.0' , '8.2.0.0' , '8.1' , false ],
// other cases
[ '8.0.0.0' , '8.1.5.0' , '8.0' , true ],
[ '8.2.0.0' , '9.0.0.0' , '8.2' , true ],
[ '8.2.0.0' , '9.1.0.0' , '9.0' , false ],
[ '9.0.0.0' , '8.1.0.0' , '8.0' , false ],
[ '9.0.0.0' , '8.0.0.0' , '7.0' , false ],
[ '9.1.0.0' , '8.0.0.0' , '7.0' , false ],
[ '8.2.0.0' , '8.1.0.0' , '8.0' , false ],
];
}
@ -106,9 +160,9 @@ class UpdaterTest extends \Test\TestCase {
* @ param string $newVersion
* @ param bool $result
*/
public function testIsUpgradePossible ( $oldVersion , $newVersion , $result ) {
public function testIsUpgradePossible ( $oldVersion , $newVersion , $allowedVersion , $ result ) {
$updater = new Updater ( $this -> httpHelper , $this -> config );
$this -> assertSame ( $result , $updater -> isUpgradePossible ( $oldVersion , $newVersion ));
$this -> assertSame ( $result , $updater -> isUpgradePossible ( $oldVersion , $newVersion , $allowedVersion ));
}
public function testCheckInCache () {