From 91e194556c52d2f354344f930419eef2dd6267f0 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 4 Sep 2013 05:51:59 +0200 Subject: Update to MediaWiki 1.21.2 --- .../phpunit/languages/LanguageClassesTestCase.php | 100 +++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 tests/phpunit/languages/LanguageClassesTestCase.php (limited to 'tests/phpunit/languages/LanguageClassesTestCase.php') diff --git a/tests/phpunit/languages/LanguageClassesTestCase.php b/tests/phpunit/languages/LanguageClassesTestCase.php new file mode 100644 index 00000000..6659dad1 --- /dev/null +++ b/tests/phpunit/languages/LanguageClassesTestCase.php @@ -0,0 +1,100 @@ +getLang() method: + * + * @par Using the crafted language object: + * @code + * function testHasLanguageObject() { + * $langObject = $this->getLang(); + * $this->assertInstanceOf( 'LanguageFoo', + * $langObject + * ); + * } + * @endcode + */ +abstract class LanguageClassesTestCase extends MediaWikiTestCase { + + /** + * Regex used to find out the language code out of the class name + * used by setUpBeforeClass + */ + private static $reExtractLangFromClass = '/Language(.*)Test/'; + + /** + * Hold the language code we are going to use. This is extracted + * directly from the extending class. + */ + private static $LanguageClassCode; + + /** + * Internal language object + * + * A new object is created before each tests thanks to PHPUnit + * setUp() method, it is deleted after each test too. To get + * this object you simply use the getLang method. + * + * You must have setup a language code first. See $LanguageClassCode + * @code + * function testWeAreTheChampions() { + * $this->getLang(); # language object + * } + * @endcode + */ + private $languageObject; + + public static function setUpBeforeClass() { + $found = preg_match( self::$reExtractLangFromClass, + get_called_class(), $m ); + if ( $found ) { + # Normalize language code since classes uses underscores + $m[1] = str_replace( '_', '-', $m[1] ); + } else { + # Fallback to english language + $m[1] = 'en'; + wfDebug( + __METHOD__ . " could not extract a language name " + . "out of " . get_called_class() . " failling back to 'en'\n" + ); + } + // TODO: validate $m[1] which should be a valid language code + self::$LanguageClassCode = $m[1]; + } + + protected function getLang() { + return $this->languageObject; + } + + /** + * Create a new language object before each test. + */ + protected function setUp() { + parent::setUp(); + $this->languageObject = Language::factory( + self::$LanguageClassCode ); + } + + /** + * Delete the internal language object so each test start + * out with a fresh language instance. + */ + protected function tearDown() { + unset( $this->languageObject ); + parent::tearDown(); + } + +} -- cgit v1.2.2