Liangent has uploaded a new change for review. https://gerrit.wikimedia.org/r/76060
Change subject: Make LanguageFallbackChainFactory work with $wgDisabledVariants ...................................................................... Make LanguageFallbackChainFactory work with $wgDisabledVariants Change-Id: Ia11f744d3d1a5c4b71b590d25baa481ca7b3bd95 --- M lib/includes/LanguageFallbackChainFactory.php M lib/tests/phpunit/LanguageFallbackChainFactoryTest.php 2 files changed, 46 insertions(+), 4 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/60/76060/1 diff --git a/lib/includes/LanguageFallbackChainFactory.php b/lib/includes/LanguageFallbackChainFactory.php index e077ebf..23a359d 100644 --- a/lib/includes/LanguageFallbackChainFactory.php +++ b/lib/includes/LanguageFallbackChainFactory.php @@ -152,7 +152,7 @@ } foreach ( $variants as $variant ) { - if ( isset( $fetched[$variant] ) ) { + if ( isset( $fetched[$variant] ) || !$parentLanguage->hasVariant( $variant ) ) { continue; } diff --git a/lib/tests/phpunit/LanguageFallbackChainFactoryTest.php b/lib/tests/phpunit/LanguageFallbackChainFactoryTest.php index d9ced64..3696a76 100644 --- a/lib/tests/phpunit/LanguageFallbackChainFactoryTest.php +++ b/lib/tests/phpunit/LanguageFallbackChainFactoryTest.php @@ -34,13 +34,31 @@ } } + private function setupDisabledVariants( $disabledVariants ) { + global $wgDisabledVariants, $wgLangObjCacheSize; + $originalDisabledVariants = $wgDisabledVariants; + $originalLangObjCacheSize = $wgLangObjCacheSize; + if ( $disabledVariants ) { + $wgDisabledVariants = $disabledVariants; + } + $wgLangObjCacheSize = 0; + return array( $originalDisabledVariants, $originalLangObjCacheSize ); + } + + private function clearDisabledVariants( $state ) { + global $wgDisabledVariants, $wgLangObjCacheSize; + list( $wgDisabledVariants, $wgLangObjCacheSize ) = $state; + } + /** * @group WikibaseLib * @dataProvider providerNewFromLanguage */ - public function testNewFromLanguage( $lang, $mode, $expected ) { + public function testNewFromLanguage( $lang, $mode, $expected, $disabledVariants = null ) { + $state = $this->setupDisabledVariants( $disabledVariants ); $factory = new LanguageFallbackChainFactory(); $chain = $factory->newFromLanguage( \Language::factory( $lang ), $mode )->getFallbackChain(); + $this->clearDisabledVariants( $state ); $this->assertChainEquals( $expected, $chain ); } @@ -48,9 +66,11 @@ * @group WikibaseLib * @dataProvider providerNewFromLanguage */ - public function testNewFromLanguageCode( $lang, $mode, $expected ) { + public function testNewFromLanguageCode( $lang, $mode, $expected, $disabledVariants = null ) { + $state = $this->setupDisabledVariants( $disabledVariants ); $factory = new LanguageFallbackChainFactory(); $chain = $factory->newFromLanguageCode( $lang, $mode )->getFallbackChain(); + $this->clearDisabledVariants( $state ); $this->assertChainEquals( $expected, $chain ); } @@ -80,6 +100,16 @@ array( 'zh', 'zh-my' ), 'en', ) ), + array( 'zh', LanguageFallbackChainFactory::FALLBACK_ALL, array( + 'zh', + array( 'zh', 'zh-hans' ), + array( 'zh', 'zh-hant' ), + array( 'zh', 'zh-cn' ), + array( 'zh', 'zh-tw' ), + array( 'zh', 'zh-hk' ), + array( 'zh', 'zh-sg' ), + 'en', + ), array( 'zh-mo', 'zh-my' ) ), array( 'zh', LanguageFallbackChainFactory::FALLBACK_SELF, array( 'zh' ) ), array( 'zh', LanguageFallbackChainFactory::FALLBACK_VARIANTS, array( array( 'zh', 'zh-hans' ), @@ -109,6 +139,16 @@ array( 'zh-cn', 'zh-tw' ), 'en', ) ), + array( 'zh-cn', LanguageFallbackChainFactory::FALLBACK_ALL, array( + 'zh-cn', + array( 'zh-cn', 'zh-sg' ), + array( 'zh-cn', 'zh' ), + array( 'zh-cn', 'zh-hant' ), + array( 'zh-cn', 'zh-hk' ), + array( 'zh-cn', 'zh-tw' ), + 'zh-hans', + 'en', + ), array( 'zh-mo', 'zh-my', 'zh-hans' ) ), array( 'zh-cn', ~LanguageFallbackChainFactory::FALLBACK_VARIANTS, array( 'zh-cn', 'zh-hans', 'en' ) ), @@ -201,14 +241,16 @@ * @group WikibaseLib * @dataProvider providerNewFromLanguage */ - public function testNewFromUserAndLanguageCode( $lang, $mode, $expected ) { + public function testNewFromUserAndLanguageCode( $lang, $mode, $expected, $disabledVariants = null ) { if ( $mode !== LanguageFallbackChainFactory::FALLBACK_ALL ) { $this->assertTrue( true ); return; } + $state = $this->setupDisabledVariants( $disabledVariants ); $factory = new LanguageFallbackChainFactory(); $anon = new \User(); $chain = $factory->newFromUserAndLanguageCode( $anon, $lang )->getFallbackChain(); + $this->clearDisabledVariants( $state ); $this->assertChainEquals( $expected, $chain ); } -- To view, visit https://gerrit.wikimedia.org/r/76060 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia11f744d3d1a5c4b71b590d25baa481ca7b3bd95 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Liangent <liang...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits