5 class LanguageDocumentationTest
extends MediaWikiTestCase
{
7 protected static $keys;
9 static function setUpBeforeClass() {
11 'qqq' => Language
::getMessageKeysFor( 'qqq' ),
12 'en' => Language
::getMessageKeysFor( 'en' ),
15 global $IP, $wgMessageStructure;
16 if( !isset( $wgMessageStructure ) ) {
17 require_once( $IP . '/maintenance/language/messages.inc' );
20 foreach( $wgMessageStructure as $block ) {
21 foreach( $block as $key ) {
22 self
::$keys['messages.inc'][] = $key;
28 * Compares en against qqq, make sure all messages are documented
30 function testAllEnglishMessagesAreDocumentedInQqq() {
31 $delta = array_diff( self
::$keys['en'], self
::$keys['qqq'] );
32 $this->assertEmpty( $delta,
33 'All English messages should be documented in qqq'
37 * Compares qqq against en, make sure qqq does not document removed messages
39 function testQqqDocumentsExistingMessages() {
40 $delta = array_diff( self
::$keys['qqq'], self
::$keys['en'] );
41 $this->assertEmpty( $delta,
42 'Qqq should only documents existing English messages.'
47 * Compares en against messages.inc
49 function testMessageInMessagesincFile() {
52 , array_diff( self
::$keys['en'], self
::$keys['messages.inc'] )
53 , 'All messages should be described in messages.inc!'
58 * Tests that languages have all the keys defined using En as reference
60 * This test will emit lot of failure until nice translators
61 * from translatewiki.net finish up the translations. So this test
62 * should probably only be ran before a new MediaWiki release.
64 * @depends testAllEnglishMessagesAreDocumentedInQqq
65 * @depends testQqqDocumentsExistingMessages
69 * @dataProvider provideLanguageKeys
71 function testLanguagesAreCompletelyTranslated( $lang ) {
72 $langKeys = Language
::getMessageKeysFor( $lang );
76 , array_diff( $langKeys, self
::$keys['en'] )
77 , "{$lang} should have all the English message keys"
83 * Provide all languages BUT english (en)
85 function provideLanguageKeys() {
88 $langs = Language
::getLanguageNames();
89 unset( $langs['en'] );
91 foreach( $langs as $code => $name ) {
92 $cases[] = array( $code );