Localisation updates from http://translatewiki.net.
[mediawiki.git] / tests / phpunit / languages / LanguageDocumentationTest.php
blob78f2b4ea0086a70eb79d06a96220864518e4b006
1 <?php
2 /**
3 * @medium
4 */
5 class LanguageDocumentationTest extends MediaWikiTestCase {
7 protected static $keys;
9 static function setUpBeforeClass() {
10 self::$keys = array(
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;
27 /**
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'
36 /**
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.'
46 /**
47 * Compares en against messages.inc
49 function testMessageInMessagesincFile() {
50 $this->assertEquals(
51 array()
52 , array_diff( self::$keys['en'], self::$keys['messages.inc'] )
53 , 'All messages should be described in messages.inc!'
57 /**
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
67 * @group Utility
69 * @dataProvider provideLanguageKeys
71 function testLanguagesAreCompletelyTranslated( $lang ) {
72 $langKeys = Language::getMessageKeysFor( $lang );
74 $this->assertEquals(
75 array()
76 , array_diff( $langKeys, self::$keys['en'] )
77 , "{$lang} should have all the English message keys"
82 /**
83 * Provide all languages BUT english (en)
85 function provideLanguageKeys() {
86 $cases = array();
88 $langs = Language::getLanguageNames();
89 unset( $langs['en'] );
91 foreach( $langs as $code => $name ) {
92 $cases[] = array( $code );
94 return $cases;