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;
}
}
$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(