jenkins-bot has submitted this change and it was merged.
Change subject: Update support for JSON in mediawiki-defines.txt
......................................................................
Update support for JSON in mediawiki-defines.txt
* Updated support for JSON in mediawiki-defines.txt
* Added tests for JSON support
Change-Id: I3c982836ce3cadc448ca6f3fc5d5b4f166920c06
---
M ffs/MediaWikiExtensions.php
M tests/phpunit/MediaWikiExtensionTest.php
A tests/phpunit/data/MediaWikiExtensionTest-conf3.yaml
A tests/phpunit/data/MediaWikiExtensionTest-conf4.yaml
M tests/phpunit/data/mediawiki-extensions.txt
5 files changed, 101 insertions(+), 18 deletions(-)
Approvals:
Nikerabbit: Looks good to me, approved
jenkins-bot: Verified
diff --git a/ffs/MediaWikiExtensions.php b/ffs/MediaWikiExtensions.php
index 5a937a4..6a7de12 100644
--- a/ffs/MediaWikiExtensions.php
+++ b/ffs/MediaWikiExtensions.php
@@ -103,9 +103,13 @@
$conf['BASIC']['extensionurl'] = $info['url'];
}
- $conf['FILES']['class'] = 'MediaWikiExtensionFFS';
+ if ( $info['format'] === 'json' ) {
+ $conf['FILES']['class'] = 'JsonFFS';
+ } else {
+ $conf['FILES']['class'] = 'MediaWikiExtensionFFS';
+ }
+
$conf['FILES']['sourcePattern'] = $this->path . '/' .
$info['file'];
- // Kind of hacky, export path will be wrong if %GROUPROOT% not
used.
$target = str_replace( '%GROUPROOT%/', '',
$conf['FILES']['sourcePattern'] );
$conf['FILES']['targetPattern'] = $target;
@@ -182,13 +186,14 @@
} else {
list( $key, $value ) = array_map(
'trim', explode( '=', $line, 2 ) );
switch ( $key ) {
- case 'file':
- case 'var':
- case 'id':
- case 'descmsg':
- case 'desc':
- case 'magicfile':
case 'aliasfile':
+ case 'desc':
+ case 'descmsg':
+ case 'file':
+ case 'format':
+ case 'id':
+ case 'magicfile':
+ case 'var':
$newgroup[$key] =
$value;
break;
case 'optional':
@@ -251,10 +256,19 @@
$id = $this->idPrefix . preg_replace( '/\s+/',
'', strtolower( $name ) );
}
- if ( isset( $g['file'] ) ) {
- $file = $g['file'];
+ // Default message file format is currently php
+ if ( !isset( $g['format'] ) ) {
+ $g['format'] = 'php';
+ }
+
+ if ( !isset( $g['file'] ) ) {
+ if ( $g['format'] === 'json' ) {
+ $file = preg_replace( '/\s+/', '',
"$name/i18n/%CODE%.json" );
+ } else {
+ $file = preg_replace( '/\s+/', '',
"$name/$name.i18n.php" );
+ }
} else {
- $file = preg_replace( '/\s+/', '',
"$name/$name.i18n.php" );
+ $file = $g['file'];
}
if ( isset( $g['descmsg'] ) ) {
@@ -278,14 +292,15 @@
);
$copyvars = array(
- 'ignored',
- 'optional',
- 'var',
+ 'aliasfile',
'desc',
- 'prefix',
- 'mangle',
+ 'format',
+ 'ignored',
'magicfile',
- 'aliasfile'
+ 'mangle',
+ 'optional',
+ 'prefix',
+ 'var',
);
foreach ( $copyvars as $var ) {
diff --git a/tests/phpunit/MediaWikiExtensionTest.php
b/tests/phpunit/MediaWikiExtensionTest.php
index f063054..b94167b 100644
--- a/tests/phpunit/MediaWikiExtensionTest.php
+++ b/tests/phpunit/MediaWikiExtensionTest.php
@@ -19,7 +19,7 @@
$foo->register( $list, $deps, $autoload );
$this->assertEquals( 1, count( $deps ), 'A dependency to
definition file was added' );
- $this->assertEquals( 2, count( $list ), 'Two group were
creates' );
+ $this->assertEquals( 4, count( $list ), 'Four groups were
created' );
$this->assertArrayHasKey( 'ext-exampleextension', $list );
$expected = TranslateYaml::load( __DIR__ .
'/data/MediaWikiExtensionTest-conf1.yaml' );
@@ -28,5 +28,13 @@
$this->assertArrayHasKey( 'ext-wikimediamessages', $list );
$expected = TranslateYaml::load( __DIR__ .
'/data/MediaWikiExtensionTest-conf2.yaml' );
$this->assertEquals( $expected,
$list['ext-wikimediamessages']->getConfiguration() );
+
+ $this->assertArrayHasKey( 'ext-examplejsonextension', $list );
+ $expected = TranslateYaml::load( __DIR__ .
'/data/MediaWikiExtensionTest-conf3.yaml' );
+ $this->assertEquals( $expected,
$list['ext-examplejsonextension']->getConfiguration() );
+
+ $this->assertArrayHasKey( 'ext-exampleextension2', $list );
+ $expected = TranslateYaml::load( __DIR__ .
'/data/MediaWikiExtensionTest-conf4.yaml' );
+ $this->assertEquals( $expected,
$list['ext-exampleextension2']->getConfiguration() );
}
}
diff --git a/tests/phpunit/data/MediaWikiExtensionTest-conf3.yaml
b/tests/phpunit/data/MediaWikiExtensionTest-conf3.yaml
new file mode 100644
index 0000000..ab3b61c
--- /dev/null
+++ b/tests/phpunit/data/MediaWikiExtensionTest-conf3.yaml
@@ -0,0 +1,27 @@
+BASIC:
+ class: MediaWikiExtensionMessageGroup
+ id: ext-examplejsonextension
+ namespace: 8
+ label: Example JsonExtension
+ descriptionmsg: examplejsonextension-desc
+ extensionurl: false
+
+FILES:
+ class: JsonFFS
+ sourcePattern:
%GROUPROOT%/mediawiki-extensions/extensions/ExampleJsonExtension/i18n/%CODE%.json
+ targetPattern:
mediawiki-extensions/extensions/ExampleJsonExtension/i18n/%CODE%.json
+
+CHECKER:
+ class: MediaWikiMessageChecker
+ checks:
+ - pluralCheck
+ - pluralFormsCheck
+ - wikiParameterCheck
+ - wikiLinksCheck
+ - XhtmlCheck
+ - braceBalanceCheck
+ - pagenameMessagesCheck
+ - miscMWChecks
+
+INSERTABLES:
+ class: MediaWikiInsertablesSuggester
diff --git a/tests/phpunit/data/MediaWikiExtensionTest-conf4.yaml
b/tests/phpunit/data/MediaWikiExtensionTest-conf4.yaml
new file mode 100644
index 0000000..2d04b0c
--- /dev/null
+++ b/tests/phpunit/data/MediaWikiExtensionTest-conf4.yaml
@@ -0,0 +1,27 @@
+BASIC:
+ class: MediaWikiExtensionMessageGroup
+ id: ext-exampleextension2
+ namespace: 8
+ label: Example Extension 2
+ descriptionmsg: exampleextension2-desc
+ extensionurl: false
+
+FILES:
+ class: MediaWikiExtensionFFS
+ sourcePattern: %GROUPROOT%/mediawiki-extensions/extensions/foo
+ targetPattern: mediawiki-extensions/extensions/foo
+
+CHECKER:
+ class: MediaWikiMessageChecker
+ checks:
+ - pluralCheck
+ - pluralFormsCheck
+ - wikiParameterCheck
+ - wikiLinksCheck
+ - XhtmlCheck
+ - braceBalanceCheck
+ - pagenameMessagesCheck
+ - miscMWChecks
+
+INSERTABLES:
+ class: MediaWikiInsertablesSuggester
diff --git a/tests/phpunit/data/mediawiki-extensions.txt
b/tests/phpunit/data/mediawiki-extensions.txt
index 224e063..7b4279a 100644
--- a/tests/phpunit/data/mediawiki-extensions.txt
+++ b/tests/phpunit/data/mediawiki-extensions.txt
@@ -7,3 +7,9 @@
magicfile = FooBar.magic.php
Example Extension
+
+Example JsonExtension
+format = json
+
+Example Extension 2
+file = foo
--
To view, visit https://gerrit.wikimedia.org/r/102180
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I3c982836ce3cadc448ca6f3fc5d5b4f166920c06
Gerrit-PatchSet: 9
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: KartikMistry <[email protected]>
Gerrit-Reviewer: Amire80 <[email protected]>
Gerrit-Reviewer: KartikMistry <[email protected]>
Gerrit-Reviewer: Nikerabbit <[email protected]>
Gerrit-Reviewer: Santhosh <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits