+++ /dev/null
-<?php
-/**
- * @medium
- */
-class LanguageDocumentationTest extends MediaWikiTestCase {
-
- protected static $keys;
-
- static function setUpBeforeClass() {
- self::$keys = array(
- 'qqq' => Language::getMessageKeysFor( 'qqq' ),
- 'en' => Language::getMessageKeysFor( 'en' ),
- );
-
- global $IP, $wgMessageStructure;
- if( !isset( $wgMessageStructure ) ) {
- require_once( $IP . '/maintenance/language/messages.inc' );
- }
-
- foreach( $wgMessageStructure as $block ) {
- foreach( $block as $key ) {
- self::$keys['messages.inc'][] = $key;
- }
- }
- }
-
- /**
- * Compares en against qqq, make sure all messages are documented
- */
- function testAllEnglishMessagesAreDocumentedInQqq() {
- $delta = array_diff( self::$keys['en'], self::$keys['qqq'] );
- $this->assertEmpty( $delta,
- 'All English messages should be documented in qqq'
- );
- }
- /**
- * Compares qqq against en, make sure qqq does not document removed messages
- */
- function testQqqDocumentsExistingMessages() {
- $delta = array_diff( self::$keys['qqq'], self::$keys['en'] );
- $this->assertEmpty( $delta,
- 'Qqq should only documents existing English messages.'
- );
- }
-
- /**
- * Compares en against messages.inc
- */
- function testMessageInMessagesincFile() {
- $this->assertEquals(
- array()
- , array_diff( self::$keys['en'], self::$keys['messages.inc'] )
- , 'All messages should be described in messages.inc!'
- );
- }
-
- /**
- * Tests that languages have all the keys defined using En as reference
- *
- * This test will emit lot of failure until nice translators
- * from translatewiki.net finish up the translations. So this test
- * should probably only be ran before a new MediaWiki release.
- *
- * @depends testAllEnglishMessagesAreDocumentedInQqq
- * @depends testQqqDocumentsExistingMessages
- *
- * @group Utility
- *
- * @dataProvider provideLanguageKeys
- */
- function testLanguagesAreCompletelyTranslated( $lang ) {
- $langKeys = Language::getMessageKeysFor( $lang );
-
- $this->assertEquals(
- array()
- , array_diff( $langKeys, self::$keys['en'] )
- , "{$lang} should have all the English message keys"
- );
- }
-
-
- /**
- * Provide all languages BUT english (en)
- */
- function provideLanguageKeys() {
- $cases = array();
-
- $langs = Language::getLanguageNames();
- unset( $langs['en'] );
-
- foreach( $langs as $code => $name ) {
- $cases[] = array( $code );
- }
- return $cases;
- }
-}