* Helping class to run tests using a clean language instance.
*
* This is intended for the MediaWiki language class tests under
- * tests/phpunit/languages. You simply need to extends this test
- * and set it up with a language code using setUpBeforeClass:
- *
- * @par Setting up a language:
- * @code
- * class LanguageFooTest extends LanguageClassesTestCase {
- * public static function setUpBeforeClass() {
- * self::setLang( 'Foo' );
- * }
- * @endcode
+ * tests/phpunit/languages.
*
* Before each tests, a new language object is build which you
* can retrieve in your test using the $this->getLang() method:
* @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
*
*/
private $languageObject;
- public static function setUpBeforeClass() {
- $found = preg_match( self::$reExtractLangFromClass,
- get_called_class(), $m );
+ protected function getLang() {
+ return $this->languageObject;
+ }
+
+ /**
+ * Create a new language object before each test.
+ */
+ protected function setUp() {
+ parent::setUp();
+ $found = preg_match( '/Language(.+)Test/', get_called_class(), $m );
if ( $found ) {
# Normalize language code since classes uses underscores
$m[1] = str_replace( '_', '-', $m[1] );
);
}
// 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 );
+ $this->languageObject = Language::factory( $m[1] );
}
/**