Merge "new Create account contributors icon"
[lhc/web/wiklou.git] / tests / phpunit / includes / cache / MessageCacheTest.php
index 3b3e4a6..c550150 100644 (file)
@@ -31,27 +31,27 @@ class MessageCacheTest extends MediaWikiLangTestCase {
        function addDBData() {
                $this->configureLanguages();
 
-               // Set up messages and fallbacks ab -> ru -> de -> en
+               // Set up messages and fallbacks ab -> ru -> de
                $this->makePage( 'FallbackLanguageTest-Full', 'ab' );
                $this->makePage( 'FallbackLanguageTest-Full', 'ru' );
                $this->makePage( 'FallbackLanguageTest-Full', 'de' );
-               $this->makePage( 'FallbackLanguageTest-Full', 'en' );
 
                // Fallbacks where ab does not exist
                $this->makePage( 'FallbackLanguageTest-Partial', 'ru' );
                $this->makePage( 'FallbackLanguageTest-Partial', 'de' );
-               $this->makePage( 'FallbackLanguageTest-Partial', 'en' );
 
                // Fallback to the content language
                $this->makePage( 'FallbackLanguageTest-ContLang', 'de' );
-               $this->makePage( 'FallbackLanguageTest-ContLang', 'en' );
 
-               // Fallback to english
-               $this->makePage( 'FallbackLanguageTest-English', 'en' );
+               // Add customizations for an existing message.
+               $this->makePage( 'sunday', 'ru' );
 
                // Full key tests -- always want russian
                $this->makePage( 'MessageCacheTest-FullKeyTest', 'ab' );
                $this->makePage( 'MessageCacheTest-FullKeyTest', 'ru' );
+
+               // In content language -- get base if no derivative
+               $this->makePage( 'FallbackLanguageTest-NoDervContLang', 'de', 'de/none', false );
        }
 
        /**
@@ -59,17 +59,23 @@ class MessageCacheTest extends MediaWikiLangTestCase {
         *
         * @param string $title Title of page to be created
         * @param string $lang  Language and content of the created page
+        * @param string|null $content Content of the created page, or null for a generic string
+        * @param bool $createSubPage Set to false if a root page should be created
         */
-       protected function makePage( $title, $lang ) {
+       protected function makePage( $title, $lang, $content = null, $createSubPage = true ) {
                global $wgContLang;
 
-               $title = Title::newFromText(
-                       ($lang == $wgContLang->getCode()) ? $title : "$title/$lang",
-                       NS_MEDIAWIKI
-               );
+               if ( $content === null ) {
+                       $content = $lang;
+               }
+               if ( $lang !== $wgContLang->getCode() || $createSubPage ) {
+                       $title = "$title/$lang";
+               }
+
+               $title = Title::newFromText( $title, NS_MEDIAWIKI );
                $wikiPage = new WikiPage( $title );
-               $content = ContentHandler::makeContent( $lang, $title );
-               $wikiPage->doEditContent( $content, "$lang translation test case" );
+               $contentHandler = ContentHandler::makeContent( $content, $title );
+               $wikiPage->doEditContent( $contentHandler, "$lang translation test case" );
        }
 
        /**
@@ -82,13 +88,20 @@ class MessageCacheTest extends MediaWikiLangTestCase {
                $this->assertEquals( $expectedContent, $result, "Message fallback failed." );
        }
 
-       public static function provideMessagesForFallback() {
+       function provideMessagesForFallback() {
                return array(
                        array( 'FallbackLanguageTest-Full', 'ab', 'ab' ),
                        array( 'FallbackLanguageTest-Partial', 'ab', 'ru' ),
                        array( 'FallbackLanguageTest-ContLang', 'ab', 'de' ),
-                       array( 'FallbackLanguageTest-English', 'ab', 'en' ),
                        array( 'FallbackLanguageTest-None', 'ab', false ),
+
+                       // Existing message with customizations on the fallbacks
+                       array( 'sunday', 'ab', 'амҽыш' ),
+
+                       // bug 46579
+                       array( 'FallbackLanguageTest-NoDervContLang', 'de', 'de/none' ),
+                       // UI language different from content language should only use de/none as last option
+                       array( 'FallbackLanguageTest-NoDervContLang', 'fit', 'de/none' ),
                );
        }
 
@@ -103,7 +116,7 @@ class MessageCacheTest extends MediaWikiLangTestCase {
                $this->assertEquals( $expectedContent, $result, "Full key message fallback failed." );
        }
 
-       public static function provideMessagesForFullKeys() {
+       function provideMessagesForFullKeys() {
                return array(
                        array( 'MessageCacheTest-FullKeyTest/ru', 'ru', 'ru' ),
                        array( 'MessageCacheTest-FullKeyTest/ru', 'ab', 'ru' ),