registration: Fix handling of MessagesDirs array and add tests
Previously the code was designed to handle:
"MessagesDirs": {
"FooBar": "i18n"
}
However, it can also be an array, and some extensions (VisualEditor)
use it like:
"MessagesDirs": {
"FooBar": [
"i18n",
"also-i18n"
]
}
This properly handles both strings and arrays and adds tests to verify
the behavior.
Change-Id: Iff1523b86f754cac1f5b8d822d4324c5fbfc1a50
This commit is contained in:
parent
576adbca56
commit
f2daeaa749
2 changed files with 32 additions and 3 deletions
|
|
@ -204,9 +204,11 @@ class ExtensionProcessor implements Processor {
|
|||
protected function extractMessageSettings( $dir, array $info ) {
|
||||
foreach ( array( 'ExtensionMessagesFiles', 'MessagesDirs' ) as $key ) {
|
||||
if ( isset( $info[$key] ) ) {
|
||||
$this->globals["wg$key"] += array_map( function( $file ) use ( $dir ) {
|
||||
return "$dir/$file";
|
||||
}, $info[$key] );
|
||||
foreach ( $info[$key] as $name => $files ) {
|
||||
foreach ( (array)$files as $file ) {
|
||||
$this->globals["wg$key"][$name][] = "$dir/$file";
|
||||
}
|
||||
}
|
||||
$this->processed[] = $key;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,6 +97,33 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
|
|||
$this->assertArrayNotHasKey( 'wg@IGNORED', $extracted['globals'] );
|
||||
}
|
||||
|
||||
public static function provideExtractMessageSettings() {
|
||||
$dir = __DIR__ . '/FooBar/';
|
||||
return array(
|
||||
array(
|
||||
array( 'MessagesDirs' => array( 'VisualEditor' => 'i18n' ) ),
|
||||
array( 'wgMessagesDirs' => array( 'VisualEditor' => array( $dir . 'i18n' ) ) )
|
||||
),
|
||||
array(
|
||||
array( 'MessagesDirs' => array( 'VisualEditor' => array( 'i18n', 'foobar' ) ) ),
|
||||
array( 'wgMessagesDirs' => array( 'VisualEditor' => array( $dir . 'i18n', $dir . 'foobar' ) ) )
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ExtensionProcessor::extractMessageSettings
|
||||
* @dataProvider provideExtractMessageSettings
|
||||
*/
|
||||
public function testExtractMessageSettings( $input, $expected ) {
|
||||
$processor = new ExtensionProcessor();
|
||||
$processor->extractInfo( $this->dir, $input + self::$default );
|
||||
$out = $processor->getExtractedInfo();
|
||||
foreach ( $expected as $key => $value ) {
|
||||
$this->assertEquals( $value, $out['globals'][$key] );
|
||||
}
|
||||
}
|
||||
|
||||
public static function provideSetToGlobal() {
|
||||
return array(
|
||||
array(
|
||||
|
|
|
|||
Loading…
Reference in a new issue