Instead of using "skin" to check for skin dependencies, extension registration
now uses the correct key "skins" (from the schema).
Bug: T197478
Change-Id: I382fc79229e1406786f444192e6e3e3bde44d224
(cherry picked from commit
0f7e760334df920adca5f6340814ba028b95dae0)
}
break;
case 'extensions':
}
break;
case 'extensions':
foreach ( $values as $dependency => $constraint ) {
$extError = $this->handleExtensionDependency(
$dependency, $constraint, $extension, $dependencyType
foreach ( $values as $dependency => $constraint ) {
$extError = $this->handleExtensionDependency(
$dependency, $constraint, $extension, $dependencyType
* @param string $dependencyName The name of the dependency
* @param string $constraint The required version constraint for this dependency
* @param string $checkedExt The Extension, which depends on this dependency
* @param string $dependencyName The name of the dependency
* @param string $constraint The required version constraint for this dependency
* @param string $checkedExt The Extension, which depends on this dependency
- * @param string $type Either 'extension' or 'skin'
+ * @param string $type Either 'extensions' or 'skins'
* @return bool|array false for no errors, or an array of info
*/
private function handleExtensionDependency( $dependencyName, $constraint, $checkedExt,
* @return bool|array false for no errors, or an array of info
*/
private function handleExtensionDependency( $dependencyName, $constraint, $checkedExt,
'FakeExtension' => [
'MediaWiki' => $constraint,
],
'FakeExtension' => [
'MediaWiki' => $constraint,
],
}
public static function provideCheck() {
}
public static function provideCheck() {
*/
public function testType( $given, $expected ) {
$checker = new VersionChecker( '1.0.0' );
*/
public function testType( $given, $expected ) {
$checker = new VersionChecker( '1.0.0' );
- $checker
- ->setLoadedExtensionsAndSkins( [
+ $checker->setLoadedExtensionsAndSkins( [
'FakeDependency' => [
'version' => '1.0.0',
],
'FakeDependency' => [
'version' => '1.0.0',
],
] );
$this->assertEquals( $expected, $checker->checkArray( [
'FakeExtension' => $given,
] );
$this->assertEquals( $expected, $checker->checkArray( [
'FakeExtension' => $given,
}
public static function provideType() {
}
public static function provideType() {
- 'FakeDependency' => '1.0.0'
- ]
+ 'FakeDependency' => '1.0.0',
+ ],
+ 'MediaWiki' => '1.0.0',
- 'NoVersionGiven' => '*'
- ]
+ 'NoVersionGiven' => '*',
+ ],
[
'extensions' => [
'NoVersionGiven' => '1.0',
[
'extensions' => [
'NoVersionGiven' => '1.0',
+ ],
+ ],
+ [
+ [
+ 'incompatible' => 'FakeExtension',
+ 'type' => 'incompatible-extensions',
+ 'msg' => 'NoVersionGiven does not expose its version, but FakeExtension requires: 1.0.',
+ ],
- [ [
- 'incompatible' => 'FakeExtension',
- 'type' => 'incompatible-extensions',
- 'msg' => 'NoVersionGiven does not expose its version, but FakeExtension requires: 1.0.'
- ] ],
],
[
[
'extensions' => [
'Missing' => '*',
],
[
[
'extensions' => [
'Missing' => '*',
+ ],
+ ],
+ [
+ [
+ 'missing' => 'Missing',
+ 'type' => 'missing-extensions',
+ 'msg' => 'FakeExtension requires Missing to be installed.',
+ ],
- [ [
- 'missing' => 'Missing',
- 'type' => 'missing-extensions',
- 'msg' => 'FakeExtension requires Missing to be installed.',
- ] ],
],
[
[
'extensions' => [
'FakeDependency' => '2.0.0',
],
[
[
'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.'
- ] ],
- ]
+ ],
+ ],
+ [
+ [
+ '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' => '*',
+ ],
+ ],
+ [
+ [
+ 'missing' => 'FakeSkin',
+ 'type' => 'missing-skins',
+ 'msg' => 'FakeExtension requires FakeSkin to be installed.',
+ ],
+ ],
+ ],
*/
public function testInvalidConstraint() {
$checker = new VersionChecker( '1.0.0' );
*/
public function testInvalidConstraint() {
$checker = new VersionChecker( '1.0.0' );
- $checker
- ->setLoadedExtensionsAndSkins( [
+ $checker->setLoadedExtensionsAndSkins( [
'FakeDependency' => [
'version' => 'not really valid',
],
] );
'FakeDependency' => [
'version' => 'not really valid',
],
] );
- $this->assertEquals(
- [ [
+ $this->assertEquals( [
+ [
'type' => 'invalid-version',
'type' => 'invalid-version',
- 'msg' => "FakeDependency does not have a valid version string."
- ] ],
- $checker->checkArray( [
- 'FakeExtension' => [
- 'extensions' => [
- 'FakeDependency' => '1.24.3',
- ],
+ 'msg' => "FakeDependency does not have a valid version string.",
+ ],
+ ], $checker->checkArray( [
+ 'FakeExtension' => [
+ 'extensions' => [
+ 'FakeDependency' => '1.24.3',
$checker = new VersionChecker( '1.0.0' );
$checker = new VersionChecker( '1.0.0' );
- $checker
- ->setLoadedExtensionsAndSkins( [
+ $checker->setLoadedExtensionsAndSkins( [
'FakeDependency' => [
'version' => '1.24.3',
],
'FakeDependency' => [
'version' => '1.24.3',
],
$checker->checkArray( [
'FakeExtension' => [
'FakeDependency' => 'not really valid',
$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' => '*',
+ ],
+ ],
+ ] ) );
+ }