Language: Remove deprecated functions and constants

The functions are hard deprecated since MediaWiki 1.40.

Bug: T343185
Bug: T325974
Bug: T325982
Bug: T325962
Bug: T325986
Bug: T325979
Bug: T325981
Bug: T252095
Change-Id: I016b1c173126ac8ff264918279d0c7912c428699
This commit is contained in:
Fomafix 2023-07-09 08:15:03 +00:00 committed by Amir Sarabadani
parent 1741cf3ab5
commit 0f935809fd
6 changed files with 60 additions and 679 deletions

View file

@ -259,6 +259,46 @@ because of Phabricator reports.
* Title::newFromTitleValue(), deprecated since 1.34, has been removed.
* SpecialPageAction has been removed without deprecation. There were no known
uses outside of core.
* The following constants and methods in the Language class, hard deprecated
since 1.40, have been removed:
- ::ALL
- ::SUPPORTED
- ::MESSAGES_FALLBACKS
- ::STRICT_FALLBACKS
- ::factory()
- ::isSupportedLanguage()
- ::isWellFormedLanguageTag()
- ::isValidCode()
- ::isValidBuiltInCode()
- ::isKnownLanguageTag()
- ::getLocalisationCache()
- ::fetchLanguageNames()
- ::fetchLanguageName()
- ::getConverter()
- ::autoConvert()
- ::autoConvertToAllVariants()
- ::convert()
- ::convertNamespace()
- ::hasVariants()
- ::hasVariant()
- ::convertHtml()
- ::convertCategoryKey()
- ::getVariants()
- ::getPreferredVariant()
- ::getDefaultVariant()
- ::getURLVariant()
- ::getExtraHashOptions()
- ::getParentLanguage()
- ::getFileName()
- ::getMessagesFileName()
- ::getJsonMessagesFileName()
- ::getFallbackFor()
- ::getFallbacksFor()
- ::getFallbacksIncludingSiteLanguage()
- ::getMessagesFor()
- ::getMessageFor()
- ::getMessageKeysFor()
- ::getConvRuleTitle()
* ParserOutput::hideNewSection(), deprecated since 1.38, has been removed.
* Many LocalisationCache constants, properties and methods that have no known
usage outside of the class have been made private without deprecation.

File diff suppressed because one or more lines are too long

View file

@ -1,45 +0,0 @@
<?php
use MediaWiki\Languages\LanguageFallback;
use MediaWiki\MainConfigNames;
/**
* @group Language
* @coversDefaultClass Language
*/
class LanguageFallbackStaticMethodsTest extends MediaWikiIntegrationTestCase {
use LanguageFallbackTestTrait {
callMethod as protected traitCallMethod;
}
private function getCallee( array $options = [] ) {
if ( isset( $options['siteLangCode'] ) ) {
$this->overrideConfigValue( MainConfigNames::LanguageCode, $options['siteLangCode'] );
}
if ( isset( $options['fallbackMap'] ) ) {
$this->setService( 'LocalisationCache', $this->getMockLocalisationCache(
1, $options['fallbackMap'] ) );
}
return Language::class;
}
private function callMethod( $callee, $method, ...$args ) {
if ( $method === 'getFirst' ) {
$method = 'getFallbackFor';
} elseif ( $method === 'getAll' ) {
$method = 'getFallbacksFor';
} elseif ( $method === 'getAllIncludingSiteLanguage' ) {
$method = 'getFallbacksIncludingSiteLanguage';
}
$this->hideDeprecated( 'Language::' . $method );
return $this->traitCallMethod( $callee, $method, ...$args );
}
private function getMessagesKey() {
return LanguageFallback::MESSAGES;
}
private function getStrictKey() {
return LanguageFallback::STRICT;
}
}

View file

@ -6,6 +6,7 @@ use MediaWiki\Languages\LanguageConverterFactory;
use MediaWiki\Languages\LanguageFallback;
use MediaWiki\Languages\LanguageNameUtils;
use MediaWiki\MainConfigNames;
use MediaWiki\MediaWikiServices;
use MediaWiki\Tests\Unit\DummyServicesTrait;
use MediaWiki\User\UserIdentityValue;
use Wikimedia\TestingAccessWrapper;
@ -1712,33 +1713,6 @@ class LanguageIntegrationTest extends LanguageClassesTestCase {
$this->assertEquals( "a{$c}b{$c}c{$and}{$s}d", $lang->listToText( [ 'a', 'b', 'c', 'd' ] ) );
}
/**
* @dataProvider provideGetParentLanguage
* @covers Language::getParentLanguage
*/
public function testGetParentLanguage( $code, $expected, $comment ) {
$this->hideDeprecated( 'Language::factory' );
$this->hideDeprecated( 'Language::getParentLanguage' );
$lang = Language::factory( $code );
if ( $expected === null ) {
$this->assertNull( $lang->getParentLanguage(), $comment );
} else {
$this->assertEquals( $expected, $lang->getParentLanguage()->getCode(), $comment );
}
}
public static function provideGetParentLanguage() {
return [
[ 'zh-cn', 'zh', 'zh is the parent language of zh-cn' ],
[ 'zh', 'zh', 'zh is defined as the parent language of zh, '
. 'because zh converter can convert zh-cn to zh' ],
[ 'zh-invalid', null, 'do not be fooled by arbitrarily composed language codes' ],
[ 'de-formal', null, 'de does not have converter' ],
[ 'de', null, 'de does not have converter' ],
[ 'ike-cans', 'iu', 'do not simply strip out the subcode' ],
];
}
/**
* Example of the real localisation files being loaded.
*
@ -1788,21 +1762,6 @@ class LanguageIntegrationTest extends LanguageClassesTestCase {
);
}
/**
* @covers Language::hasVariant
*/
public function testHasVariant() {
$this->hideDeprecated( 'Language::hasVariant' );
$this->hideDeprecated( 'Language::factory' );
// See LanguageSrTest::testHasVariant() for additional tests
$en = Language::factory( 'en' );
$this->assertTrue( $en->hasVariant( 'en' ), 'base is always a variant' );
$this->assertFalse( $en->hasVariant( 'en-bogus' ), 'bogus en variant' );
$bogus = Language::factory( 'bogus' );
$this->assertTrue( $bogus->hasVariant( 'bogus' ), 'base is always a variant' );
}
/**
* @covers Language::equals
*/
@ -1853,23 +1812,19 @@ class LanguageIntegrationTest extends LanguageClassesTestCase {
// The following methods are for LanguageNameUtilsTestTrait
private function isSupportedLanguage( $code ) {
$this->hideDeprecated( 'Language::isSupportedLanguage' );
return Language::isSupportedLanguage( $code );
return $this->getServiceContainer()->getLanguageNameUtils()->isSupportedLanguage( $code );
}
private function isValidCode( $code ) {
$this->hideDeprecated( 'Language::isValidCode' );
return Language::isValidCode( $code );
return $this->getServiceContainer()->getLanguageNameUtils()->isValidCode( $code );
}
private function isValidBuiltInCode( $code ) {
$this->hideDeprecated( 'Language::isValidBuiltInCode' );
return Language::isValidBuiltInCode( $code );
return $this->getServiceContainer()->getLanguageNameUtils()->isValidBuiltInCode( $code );
}
private function isKnownLanguageTag( $code ) {
$this->hideDeprecated( 'Language::isKnownLanguageTag' );
return Language::isKnownLanguageTag( $code );
return $this->getServiceContainer()->getLanguageNameUtils()->isKnownLanguageTag( $code );
}
protected function setLanguageTemporaryHook( string $hookName, $handler ): void {
@ -1893,57 +1848,49 @@ class LanguageIntegrationTest extends LanguageClassesTestCase {
$this->overrideConfigValues( $options );
}
$this->hideDeprecated( 'Language::fetchLanguageName' );
$this->hideDeprecated( 'Language::fetchLanguageNames' );
$langNameUtils = MediaWikiServices::getInstance()->getLanguageNameUtils();
$this->assertSame( $expected,
Language::fetchLanguageNames( ...$otherArgs )[strtolower( $code )] ?? '' );
$this->assertSame( $expected, Language::fetchLanguageName( $code, ...$otherArgs ) );
$langNameUtils->getLanguageNames( ...$otherArgs )[strtolower( $code )] ?? '' );
$this->assertSame( $expected, $langNameUtils->getLanguageName( $code, ...$otherArgs ) );
}
private function getLanguageNames( ...$args ) {
$this->hideDeprecated( 'Language::fetchLanguageNames' );
return Language::fetchLanguageNames( ...$args );
return MediaWikiServices::getInstance()->getLanguageNameUtils()->getLanguageNames( ...$args );
}
private function getLanguageName( ...$args ) {
$this->hideDeprecated( 'Language::fetchLanguageName' );
return Language::fetchLanguageName( ...$args );
return MediaWikiServices::getInstance()->getLanguageNameUtils()->getLanguageName( ...$args );
}
private function getFileName( ...$args ) {
$this->hideDeprecated( 'Language::getFileName' );
return Language::getFileName( ...$args );
return MediaWikiServices::getInstance()->getLanguageNameUtils()->getFileName( ...$args );
}
private function getMessagesFileName( $code ) {
$this->hideDeprecated( 'Language::getMessagesFileName' );
return Language::getMessagesFileName( $code );
return MediaWikiServices::getInstance()->getLanguageNameUtils()->getMessagesFileName( $code );
}
private function getJsonMessagesFileName( $code ) {
$this->hideDeprecated( 'Language::getJsonMessagesFileName' );
return Language::getJsonMessagesFileName( $code );
return MediaWikiServices::getInstance()->getLanguageNameUtils()->getJsonMessagesFileName( $code );
}
/**
* @todo This really belongs in the cldr extension's tests.
*
* @covers MediaWiki\Languages\LanguageNameUtils::isKnownLanguageTag
* @covers Language::isKnownLanguageTag
*/
public function testCldr() {
if ( !ExtensionRegistry::getInstance()->isLoaded( 'CLDR' ) ) {
$this->markTestSkipped( 'The CLDR extension is not installed.' );
}
$this->hideDeprecated( 'Language::isKnownLanguageTag' );
$this->hideDeprecated( 'Language::fetchLanguageName' );
$languageNameUtils = $this->getServiceContainer()->getLanguageNameUtils();
// "pal" is an ancient language, which probably will not appear in Names.php, but appears in
// CLDR in English
$this->assertTrue( Language::isKnownLanguageTag( 'pal' ) );
$this->assertTrue( $languageNameUtils->isKnownLanguageTag( 'pal' ) );
$this->assertSame( 'allemand', Language::fetchLanguageName( 'de', 'fr' ) );
$this->assertSame( 'allemand', $languageNameUtils->fetchLanguageName( 'de', 'fr' ) );
}
/**

View file

@ -22,12 +22,12 @@ trait LanguageFallbackTestTrait {
abstract protected function getCallee( array $options = [] );
/**
* @return int Value that was historically in Language::MESSAGES_FALLBACKS
* @return int Value from LanguageFallback:MESSAGES
*/
abstract protected function getMessagesKey();
/**
* @return int Value that was historically in Language::STRICT_FALLBACKS
* @return int Value from LanguageFallback::STRICT
*/
abstract protected function getStrictKey();
@ -72,14 +72,10 @@ trait LanguageFallbackTestTrait {
* @param array $options
* @dataProvider provideGetAll
* @covers MediaWiki\Languages\LanguageFallback::getFirst
* @covers Language::getFallbackFor
*/
public function testGetFirst( $code, array $expected, array $options = [] ) {
$callee = $this->getCallee( $options );
// One behavior difference between the old static methods and the new instance methods:
// returning null instead of false.
$defaultExpected = is_object( $callee ) ? null : false;
$this->assertSame( $expected[0] ?? $defaultExpected,
$this->assertSame( $expected[0] ?? null,
$this->callMethod( $callee, 'getFirst', $code ) );
}
@ -89,7 +85,6 @@ trait LanguageFallbackTestTrait {
* @param array $options
* @dataProvider provideGetAll
* @covers MediaWiki\Languages\LanguageFallback::getAll
* @covers Language::getFallbacksFor
*/
public function testGetAll( $code, array $expected, array $options = [] ) {
$this->assertSame( $expected,
@ -102,7 +97,6 @@ trait LanguageFallbackTestTrait {
* @param array $options
* @dataProvider provideGetAll
* @covers MediaWiki\Languages\LanguageFallback::getAll
* @covers Language::getFallbacksFor
*/
public function testGetAll_messages( $code, array $expected, array $options = [] ) {
$this->assertSame( $expected,
@ -127,7 +121,6 @@ trait LanguageFallbackTestTrait {
* @param array $options
* @dataProvider provideGetAll_strict
* @covers MediaWiki\Languages\LanguageFallback::getAll
* @covers Language::getFallbacksFor
*/
public function testGetAll_strict( $code, array $expected, array $options = [] ) {
$this->assertSame( $expected,
@ -148,7 +141,6 @@ trait LanguageFallbackTestTrait {
/**
* @covers MediaWiki\Languages\LanguageFallback::getAll
* @covers Language::getFallbacksFor
*/
public function testGetAll_invalidMode() {
$this->expectException( InvalidArgumentException::class );
@ -172,7 +164,6 @@ trait LanguageFallbackTestTrait {
* @param int $expectedGets
* @dataProvider provideGetAllIncludingSiteLanguage
* @covers MediaWiki\Languages\LanguageFallback::getAllIncludingSiteLanguage
* @covers Language::getFallbacksIncludingSiteLanguage
*/
public function testGetAllIncludingSiteLanguage(
$code, $siteLangCode, array $expected, $expectedGets = 1

View file

@ -11,8 +11,7 @@ const DEFINED = LanguageNameUtils::DEFINED;
const SUPPORTED = LanguageNameUtils::SUPPORTED;
/**
* For code shared between LanguageNameUtilsTest and LanguageTest.
* @internal For use by LanguageNameUtilsTest and LanguageTest only.
* @internal For use by LanguageNameUtilsTest only.
*/
trait LanguageNameUtilsTestTrait {
abstract protected function isSupportedLanguage( $code );
@ -21,7 +20,6 @@ trait LanguageNameUtilsTestTrait {
* @dataProvider provideIsSupportedLanguage
* @covers MediaWiki\Languages\LanguageNameUtils::__construct
* @covers MediaWiki\Languages\LanguageNameUtils::isSupportedLanguage
* @covers Language::isSupportedLanguage
*/
public function testIsSupportedLanguage( $code, $expected ) {
$this->assertSame( $expected, $this->isSupportedLanguage( $code ) );
@ -51,7 +49,6 @@ trait LanguageNameUtilsTestTrait {
*
* @dataProvider provideIsValidCode
* @covers MediaWiki\Languages\LanguageNameUtils::isValidCode
* @covers Language::isValidCode
*
* @param string $code
* @param bool $expected
@ -92,7 +89,6 @@ trait LanguageNameUtilsTestTrait {
/**
* @dataProvider provideIsValidBuiltInCode
* @covers MediaWiki\Languages\LanguageNameUtils::isValidBuiltInCode
* @covers Language::isValidBuiltInCode
*
* @param string $code
* @param bool $expected
@ -122,7 +118,6 @@ trait LanguageNameUtilsTestTrait {
/**
* @dataProvider provideIsKnownLanguageTag
* @covers MediaWiki\Languages\LanguageNameUtils::isKnownLanguageTag
* @covers Language::isKnownLanguageTag
*
* @param string $code
* @param bool $expected
@ -162,8 +157,6 @@ trait LanguageNameUtilsTestTrait {
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNames
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNamesUncached
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageName
* @covers Language::fetchLanguageNames
* @covers Language::fetchLanguageName
*/
public function testGetLanguageNames( $expected, $code, ...$otherArgs ) {
$this->clearLanguageHook( 'LanguageGetTranslatedLanguageNames' );
@ -202,8 +195,6 @@ trait LanguageNameUtilsTestTrait {
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNames
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNamesUncached
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageName
* @covers Language::fetchLanguageNames
* @covers Language::fetchLanguageName
*/
public function testGetLanguageNames_withHook( $expected, $code, ...$otherArgs ) {
$this->setLanguageTemporaryHook( 'LanguageGetTranslatedLanguageNames',
@ -262,8 +253,6 @@ trait LanguageNameUtilsTestTrait {
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNames
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNamesUncached
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageName
* @covers Language::fetchLanguageNames
* @covers Language::fetchLanguageName
*/
public function testGetLanguageNames_ExtraLanguageNames( $expected, $code, ...$otherArgs ) {
$this->setLanguageTemporaryHook( 'LanguageGetTranslatedLanguageNames',
@ -296,8 +285,6 @@ trait LanguageNameUtilsTestTrait {
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNames
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNamesUncached
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageName
* @covers Language::fetchLanguageNames
* @covers Language::fetchLanguageName
*/
public function testGetLanguageNames_parameterDefault() {
$this->setLanguageTemporaryHook( 'LanguageGetTranslatedLanguageNames',
@ -317,7 +304,6 @@ trait LanguageNameUtilsTestTrait {
* @dataProvider provideGetLanguageNames_sorted
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNames
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNamesUncached
* @covers Language::fetchLanguageNames
*/
public function testGetLanguageNames_sorted( ...$args ) {
$names = $this->getLanguageNames( ...$args );
@ -342,7 +328,6 @@ trait LanguageNameUtilsTestTrait {
/**
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNames
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNamesUncached
* @covers Language::fetchLanguageNames
*/
public function testGetLanguageNames_hookNotCalledForAutonyms() {
$count = 0;
@ -366,8 +351,6 @@ trait LanguageNameUtilsTestTrait {
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNames
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNamesUncached
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageName
* @covers Language::fetchLanguageNames
* @covers Language::fetchLanguageName
*/
public function testGetLanguageNames_pigLatin( $expected, ...$otherArgs ) {
$this->setLanguageTemporaryHook( 'LanguageGetTranslatedLanguageNames',
@ -405,8 +388,6 @@ trait LanguageNameUtilsTestTrait {
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNames
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNamesUncached
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageName
* @covers Language::fetchLanguageNames
* @covers Language::fetchLanguageName
*/
public function testGetLanguageNames_pigLatinNotSupported() {
// Pig Latin is "not supported" when UsePigLatinVariant is false
@ -425,8 +406,6 @@ trait LanguageNameUtilsTestTrait {
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNames
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageNamesUncached
* @covers MediaWiki\Languages\LanguageNameUtils::getLanguageName
* @covers Language::fetchLanguageNames
* @covers Language::fetchLanguageName
*/
public function testGetLanguageNames_pigLatinAndExtraLanguageNames() {
$this->assertGetLanguageNames(
@ -444,7 +423,6 @@ trait LanguageNameUtilsTestTrait {
/**
* @dataProvider provideGetFileName
* @covers MediaWiki\Languages\LanguageNameUtils::getFileName
* @covers Language::getFileName
*/
public function testGetFileName( $expected, ...$args ) {
$this->assertSame( $expected, $this->getFileName( ...$args ) );
@ -465,7 +443,6 @@ trait LanguageNameUtilsTestTrait {
/**
* @dataProvider provideGetMessagesFileName
* @covers MediaWiki\Languages\LanguageNameUtils::getMessagesFileName
* @covers Language::getMessagesFileName
*
* @param string $code
* @param string $expected
@ -485,7 +462,6 @@ trait LanguageNameUtilsTestTrait {
/**
* @covers MediaWiki\Languages\LanguageNameUtils::getMessagesFileName
* @covers Language::getMessagesFileName
*/
public function testGetMessagesFileName_withHook() {
$called = 0;
@ -510,7 +486,6 @@ trait LanguageNameUtilsTestTrait {
/**
* @covers MediaWiki\Languages\LanguageNameUtils::getJsonMessagesFileName
* @covers Language::getJsonMessagesFileName
*/
public function testGetJsonMessagesFileName() {
global $IP;
@ -528,9 +503,6 @@ trait LanguageNameUtilsTestTrait {
* @covers MediaWiki\Languages\LanguageNameUtils::getFileName
* @covers MediaWiki\Languages\LanguageNameUtils::getMessagesFileName
* @covers MediaWiki\Languages\LanguageNameUtils::getJsonMessagesFileName
* @covers Language::getFileName
* @covers Language::getMessagesFileName
* @covers Language::getJsonMessagesFileName
*
* @param callable $callback Will throw when passed $code
* @param string $code