X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fregistration%2FVersionCheckerTest.php;h=b668a9adb0472d2c8e3ae9822a6dcd4685cf5df6;hb=500d7b8525cd2c8272eb82fe4b1713680e9aeac7;hp=5dc7a969cb6eb93f3d67a2677206079319aa3471;hpb=5c357bf6c28eb0c3462374e088a6583eecbd2953;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/registration/VersionCheckerTest.php b/tests/phpunit/includes/registration/VersionCheckerTest.php index 5dc7a969cb..b668a9adb0 100644 --- a/tests/phpunit/includes/registration/VersionCheckerTest.php +++ b/tests/phpunit/includes/registration/VersionCheckerTest.php @@ -17,8 +17,7 @@ class VersionCheckerTest extends PHPUnit\Framework\TestCase { 'FakeExtension' => [ 'MediaWiki' => $constraint, ], - ] ) - ); + ] ) ); } public static function provideCheck() { @@ -50,8 +49,7 @@ class VersionCheckerTest extends PHPUnit\Framework\TestCase { */ public function testType( $given, $expected ) { $checker = new VersionChecker( '1.0.0' ); - $checker - ->setLoadedExtensionsAndSkins( [ + $checker->setLoadedExtensionsAndSkins( [ 'FakeDependency' => [ 'version' => '1.0.0', ], @@ -59,8 +57,7 @@ class VersionCheckerTest extends PHPUnit\Framework\TestCase { ] ); $this->assertEquals( $expected, $checker->checkArray( [ 'FakeExtension' => $given, - ] ) - ); + ] ) ); } public static function provideType() { @@ -69,22 +66,22 @@ class VersionCheckerTest extends PHPUnit\Framework\TestCase { [ [ 'extensions' => [ - 'FakeDependency' => '1.0.0' - ] + 'FakeDependency' => '1.0.0', + ], ], - [] + [], ], [ [ - 'MediaWiki' => '1.0.0' + 'MediaWiki' => '1.0.0', ], - [] + [], ], [ [ 'extensions' => [ - 'NoVersionGiven' => '*' - ] + 'NoVersionGiven' => '*', + ], ], [], ], @@ -92,27 +89,59 @@ class VersionCheckerTest extends PHPUnit\Framework\TestCase { [ 'extensions' => [ 'NoVersionGiven' => '1.0', - ] + ], + ], + [ + [ + 'incompatible' => 'FakeExtension', + 'type' => 'incompatible-extensions', + 'msg' => 'NoVersionGiven does not expose its version, but FakeExtension requires: 1.0.', + ], ], - [ 'NoVersionGiven does not expose its version, but FakeExtension requires: 1.0.' ], ], [ [ 'extensions' => [ 'Missing' => '*', - ] + ], + ], + [ + [ + 'missing' => 'Missing', + 'type' => 'missing-extensions', + 'msg' => 'FakeExtension requires Missing to be installed.', + ], ], - [ 'FakeExtension requires Missing to be installed.' ], ], [ [ 'extensions' => [ 'FakeDependency' => '2.0.0', - ] + ], + ], + [ + [ + 'incompatible' => 'FakeExtension', + 'type' => 'incompatible-extensions', + // phpcs:ignore Generic.Files.LineLength.TooLong + 'msg' => 'FakeExtension is not compatible with the current installed version of FakeDependency (1.0.0), it requires: 2.0.0.', + ], + ], + ], + [ + [ + 'skins' => [ + 'FakeSkin' => '*', + ], ], - // phpcs:ignore Generic.Files.LineLength.TooLong - [ 'FakeExtension is not compatible with the current installed version of FakeDependency (1.0.0), it requires: 2.0.0.' ], - ] + [ + [ + 'missing' => 'FakeSkin', + 'type' => 'missing-skins', + 'msg' => 'FakeExtension requires FakeSkin to be installed.', + ], + ], + ], ]; } @@ -122,25 +151,26 @@ class VersionCheckerTest extends PHPUnit\Framework\TestCase { */ public function testInvalidConstraint() { $checker = new VersionChecker( '1.0.0' ); - $checker - ->setLoadedExtensionsAndSkins( [ + $checker->setLoadedExtensionsAndSkins( [ 'FakeDependency' => [ 'version' => 'not really valid', ], ] ); - $this->assertEquals( [ "FakeDependency does not have a valid version string." ], - $checker->checkArray( [ - 'FakeExtension' => [ - 'extensions' => [ - 'FakeDependency' => '1.24.3', - ], + $this->assertEquals( [ + [ + 'type' => 'invalid-version', + 'msg' => "FakeDependency does not have a valid version string.", + ], + ], $checker->checkArray( [ + 'FakeExtension' => [ + 'extensions' => [ + 'FakeDependency' => '1.24.3', ], - ] ) - ); + ], + ] ) ); $checker = new VersionChecker( '1.0.0' ); - $checker - ->setLoadedExtensionsAndSkins( [ + $checker->setLoadedExtensionsAndSkins( [ 'FakeDependency' => [ 'version' => '1.24.3', ], @@ -150,7 +180,28 @@ class VersionCheckerTest extends PHPUnit\Framework\TestCase { $checker->checkArray( [ 'FakeExtension' => [ 'FakeDependency' => 'not really valid', - ] + ], ] ); } + + /** + * T197478 + */ + public function testInvalidDependency() { + $checker = new VersionChecker( '1.0.0' ); + $this->setExpectedException( UnexpectedValueException::class, + 'Dependency type skin unknown in FakeExtension' ); + $this->assertEquals( [ + [ + 'type' => 'invalid-version', + 'msg' => 'FakeDependency does not have a valid version string.', + ], + ], $checker->checkArray( [ + 'FakeExtension' => [ + 'skin' => [ + 'FakeSkin' => '*', + ], + ], + ] ) ); + } }