public function setUp() {
parent::setUp();
- $this->setMwGlobals( array(
- 'wgLanguageCode' => 'en',
- 'wgContLang' => Language::factory( 'en' ),
- // User language
- 'wgLang' => Language::factory( 'en' ),
+ $this->setMwGlobals( [
'wgAllowUserJs' => false,
'wgDefaultLanguageVariant' => false,
'wgMetaNamespace' => 'Project',
- 'wgLocalInterwikis' => array( 'localtestiw' ),
+ 'wgLocalInterwikis' => [ 'localtestiw' ],
'wgCapitalLinks' => true,
// NOTE: this is why global state is evil.
// TODO: refactor access to the interwiki codes so it can be injected.
- 'wgHooks' => array(
- 'InterwikiLoadPrefix' => array(
+ 'wgHooks' => [
+ 'InterwikiLoadPrefix' => [
function ( $prefix, &$data ) {
if ( $prefix === 'localtestiw' ) {
- $data = array( 'iw_url' => 'localtestiw' );
+ $data = [ 'iw_url' => 'localtestiw' ];
} elseif ( $prefix === 'remotetestiw' ) {
- $data = array( 'iw_url' => 'remotetestiw' );
+ $data = [ 'iw_url' => 'remotetestiw' ];
}
return false;
}
- )
- )
- ) );
+ ]
+ ]
+ ] );
+ $this->setUserLang( 'en' );
+ $this->setContentLang( 'en' );
}
/**
}
public static function provideFormat() {
- return array(
- array( NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ),
- array( NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'User:Hansi Maier#stuff and so on' ),
- array( false, 'Hansi_Maier', '', 'en', 'Hansi Maier' ),
- array(
+ return [
+ [ NS_MAIN, 'Foo_Bar', '', '', 'en', 'Foo Bar' ],
+ [ NS_USER, 'Hansi_Maier', 'stuff_and_so_on', '', 'en', 'User:Hansi Maier#stuff and so on' ],
+ [ false, 'Hansi_Maier', '', '', 'en', 'Hansi Maier' ],
+ [
NS_USER_TALK,
'hansi__maier',
'',
+ '',
'en',
'User talk:hansi maier',
'User talk:Hansi maier'
- ),
+ ],
// getGenderCache() provides a mock that considers first
// names ending in "a" to be female.
- array( NS_USER, 'Lisa_Müller', '', 'de', 'Benutzerin:Lisa Müller' ),
- );
+ [ NS_USER, 'Lisa_Müller', '', '', 'de', 'Benutzerin:Lisa Müller' ],
+ [ NS_MAIN, 'FooBar', '', 'remotetestiw', 'en', 'remotetestiw:FooBar' ],
+ ];
}
/**
* @dataProvider provideFormat
*/
- public function testFormat( $namespace, $text, $fragment, $lang, $expected, $normalized = null ) {
+ public function testFormat( $namespace, $text, $fragment, $interwiki, $lang, $expected,
+ $normalized = null
+ ) {
if ( $normalized === null ) {
$normalized = $expected;
}
$codec = $this->makeCodec( $lang );
- $actual = $codec->formatTitle( $namespace, $text, $fragment );
+ $actual = $codec->formatTitle( $namespace, $text, $fragment, $interwiki );
$this->assertEquals( $expected, $actual, 'formatted' );
$actual2 = $codec->formatTitle(
$parsed->getNamespace(),
$parsed->getText(),
- $parsed->getFragment()
+ $parsed->getFragment(),
+ $parsed->getInterwiki()
);
$this->assertEquals( $normalized, $actual2, 'normalized after round trip' );
}
public static function provideGetText() {
- return array(
- array( NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ),
- array( NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'Hansi Maier' ),
- );
+ return [
+ [ NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ],
+ [ NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'Hansi Maier' ],
+ ];
}
/**
}
public static function provideGetPrefixedText() {
- return array(
- array( NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ),
- array( NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'User:Hansi Maier' ),
+ return [
+ [ NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ],
+ [ NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'User:Hansi Maier' ],
// No capitalization or normalization is applied while formatting!
- array( NS_USER_TALK, 'hansi__maier', '', 'en', 'User talk:hansi maier' ),
+ [ NS_USER_TALK, 'hansi__maier', '', 'en', 'User talk:hansi maier' ],
// getGenderCache() provides a mock that considers first
// names ending in "a" to be female.
- array( NS_USER, 'Lisa_Müller', '', 'de', 'Benutzerin:Lisa Müller' ),
- );
+ [ NS_USER, 'Lisa_Müller', '', 'de', 'Benutzerin:Lisa Müller' ],
+ ];
}
/**
}
public static function provideGetFullText() {
- return array(
- array( NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ),
- array( NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'User:Hansi Maier#stuff and so on' ),
+ return [
+ [ NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ],
+ [ NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'User:Hansi Maier#stuff and so on' ],
// No capitalization or normalization is applied while formatting!
- array( NS_USER_TALK, 'hansi__maier', '', 'en', 'User talk:hansi maier' ),
- );
+ [ NS_USER_TALK, 'hansi__maier', '', 'en', 'User talk:hansi maier' ],
+ ];
}
/**
// TODO: test capitalization and trimming
// TODO: test unicode normalization
- return array(
- array( ' : Hansi_Maier _ ', NS_MAIN, 'en',
- new TitleValue( NS_MAIN, 'Hansi_Maier', '' ) ),
- array( 'User:::1', NS_MAIN, 'de',
- new TitleValue( NS_USER, '0:0:0:0:0:0:0:1', '' ) ),
- array( ' lisa Müller', NS_USER, 'de',
- new TitleValue( NS_USER, 'Lisa_Müller', '' ) ),
- array( 'benutzerin:lisa Müller#stuff', NS_MAIN, 'de',
- new TitleValue( NS_USER, 'Lisa_Müller', 'stuff' ) ),
-
- array( ':Category:Quux', NS_MAIN, 'en',
- new TitleValue( NS_CATEGORY, 'Quux', '' ) ),
- array( 'Category:Quux', NS_MAIN, 'en',
- new TitleValue( NS_CATEGORY, 'Quux', '' ) ),
- array( 'Category:Quux', NS_CATEGORY, 'en',
- new TitleValue( NS_CATEGORY, 'Quux', '' ) ),
- array( 'Quux', NS_CATEGORY, 'en',
- new TitleValue( NS_CATEGORY, 'Quux', '' ) ),
- array( ':Quux', NS_CATEGORY, 'en',
- new TitleValue( NS_MAIN, 'Quux', '' ) ),
+ return [
+ [ ' : Hansi_Maier _ ', NS_MAIN, 'en',
+ new TitleValue( NS_MAIN, 'Hansi_Maier', '' ) ],
+ [ 'User:::1', NS_MAIN, 'de',
+ new TitleValue( NS_USER, '0:0:0:0:0:0:0:1', '' ) ],
+ [ ' lisa Müller', NS_USER, 'de',
+ new TitleValue( NS_USER, 'Lisa_Müller', '' ) ],
+ [ 'benutzerin:lisa Müller#stuff', NS_MAIN, 'de',
+ new TitleValue( NS_USER, 'Lisa_Müller', 'stuff' ) ],
+
+ [ ':Category:Quux', NS_MAIN, 'en',
+ new TitleValue( NS_CATEGORY, 'Quux', '' ) ],
+ [ 'Category:Quux', NS_MAIN, 'en',
+ new TitleValue( NS_CATEGORY, 'Quux', '' ) ],
+ [ 'Category:Quux', NS_CATEGORY, 'en',
+ new TitleValue( NS_CATEGORY, 'Quux', '' ) ],
+ [ 'Quux', NS_CATEGORY, 'en',
+ new TitleValue( NS_CATEGORY, 'Quux', '' ) ],
+ [ ':Quux', NS_CATEGORY, 'en',
+ new TitleValue( NS_MAIN, 'Quux', '' ) ],
// getGenderCache() provides a mock that considers first
// names ending in "a" to be female.
- array( 'a b c', NS_MAIN, 'en',
- new TitleValue( NS_MAIN, 'A_b_c' ) ),
- array( ' a b c ', NS_MAIN, 'en',
- new TitleValue( NS_MAIN, 'A_b_c' ) ),
- array( ' _ Foo __ Bar_ _', NS_MAIN, 'en',
- new TitleValue( NS_MAIN, 'Foo_Bar' ) ),
+ [ 'a b c', NS_MAIN, 'en',
+ new TitleValue( NS_MAIN, 'A_b_c' ) ],
+ [ ' a b c ', NS_MAIN, 'en',
+ new TitleValue( NS_MAIN, 'A_b_c' ) ],
+ [ ' _ Foo __ Bar_ _', NS_MAIN, 'en',
+ new TitleValue( NS_MAIN, 'Foo_Bar' ) ],
// NOTE: cases copied from TitleTest::testSecureAndSplit. Keep in sync.
- array( 'Sandbox', NS_MAIN, 'en', ),
- array( 'A "B"', NS_MAIN, 'en', ),
- array( 'A \'B\'', NS_MAIN, 'en', ),
- array( '.com', NS_MAIN, 'en', ),
- array( '~', NS_MAIN, 'en', ),
- array( '"', NS_MAIN, 'en', ),
- array( '\'', NS_MAIN, 'en', ),
-
- array( 'Talk:Sandbox', NS_MAIN, 'en',
- new TitleValue( NS_TALK, 'Sandbox' ) ),
- array( 'Talk:Foo:Sandbox', NS_MAIN, 'en',
- new TitleValue( NS_TALK, 'Foo:Sandbox' ) ),
- array( 'File:Example.svg', NS_MAIN, 'en',
- new TitleValue( NS_FILE, 'Example.svg' ) ),
- array( 'File_talk:Example.svg', NS_MAIN, 'en',
- new TitleValue( NS_FILE_TALK, 'Example.svg' ) ),
- array( 'Foo/.../Sandbox', NS_MAIN, 'en',
- 'Foo/.../Sandbox' ),
- array( 'Sandbox/...', NS_MAIN, 'en',
- 'Sandbox/...' ),
- array( 'A~~', NS_MAIN, 'en',
- 'A~~' ),
+ [ 'Sandbox', NS_MAIN, 'en', ],
+ [ 'A "B"', NS_MAIN, 'en', ],
+ [ 'A \'B\'', NS_MAIN, 'en', ],
+ [ '.com', NS_MAIN, 'en', ],
+ [ '~', NS_MAIN, 'en', ],
+ [ '"', NS_MAIN, 'en', ],
+ [ '\'', NS_MAIN, 'en', ],
+
+ [ 'Talk:Sandbox', NS_MAIN, 'en',
+ new TitleValue( NS_TALK, 'Sandbox' ) ],
+ [ 'Talk:Foo:Sandbox', NS_MAIN, 'en',
+ new TitleValue( NS_TALK, 'Foo:Sandbox' ) ],
+ [ 'File:Example.svg', NS_MAIN, 'en',
+ new TitleValue( NS_FILE, 'Example.svg' ) ],
+ [ 'File_talk:Example.svg', NS_MAIN, 'en',
+ new TitleValue( NS_FILE_TALK, 'Example.svg' ) ],
+ [ 'Foo/.../Sandbox', NS_MAIN, 'en',
+ 'Foo/.../Sandbox' ],
+ [ 'Sandbox/...', NS_MAIN, 'en',
+ 'Sandbox/...' ],
+ [ 'A~~', NS_MAIN, 'en',
+ 'A~~' ],
// Length is 256 total, but only title part matters
- array( 'Category:' . str_repeat( 'x', 248 ), NS_MAIN, 'en',
+ [ 'Category:' . str_repeat( 'x', 248 ), NS_MAIN, 'en',
new TitleValue( NS_CATEGORY,
- 'X' . str_repeat( 'x', 247 ) ) ),
- array( str_repeat( 'x', 252 ), NS_MAIN, 'en',
- 'X' . str_repeat( 'x', 251 ) )
- );
+ 'X' . str_repeat( 'x', 247 ) ) ],
+ [ str_repeat( 'x', 252 ), NS_MAIN, 'en',
+ 'X' . str_repeat( 'x', 251 ) ]
+ ];
}
/**
public static function provideParseTitle_invalid() {
// TODO: test unicode errors
- return array(
- array( '#' ),
- array( '::' ),
- array( '::xx' ),
- array( '::##' ),
- array( ' :: x' ),
+ return [
+ [ '#' ],
+ [ '::' ],
+ [ '::xx' ],
+ [ '::##' ],
+ [ ' :: x' ],
- array( 'Talk:File:Foo.jpg' ),
- array( 'Talk:localtestiw:Foo' ),
- array( 'remotetestiw:Foo' ),
- array( '::1' ), // only valid in user namespace
- array( 'User::x' ), // leading ":" in a user name is only valid of IPv6 addresses
+ [ 'Talk:File:Foo.jpg' ],
+ [ 'Talk:localtestiw:Foo' ],
+ [ '::1' ], // only valid in user namespace
+ [ 'User::x' ], // leading ":" in a user name is only valid of IPv6 addresses
// NOTE: cases copied from TitleTest::testSecureAndSplit. Keep in sync.
- array( '' ),
- array( ':' ),
- array( '__ __' ),
- array( ' __ ' ),
+ [ '' ],
+ [ ':' ],
+ [ '__ __' ],
+ [ ' __ ' ],
// Bad characters forbidden regardless of wgLegalTitleChars
- array( 'A [ B' ),
- array( 'A ] B' ),
- array( 'A { B' ),
- array( 'A } B' ),
- array( 'A < B' ),
- array( 'A > B' ),
- array( 'A | B' ),
+ [ 'A [ B' ],
+ [ 'A ] B' ],
+ [ 'A { B' ],
+ [ 'A } B' ],
+ [ 'A < B' ],
+ [ 'A > B' ],
+ [ 'A | B' ],
// URL encoding
- array( 'A%20B' ),
- array( 'A%23B' ),
- array( 'A%2523B' ),
+ [ 'A%20B' ],
+ [ 'A%23B' ],
+ [ 'A%2523B' ],
// XML/HTML character entity references
// Note: Commented out because they are not marked invalid by the PHP test as
// Title::newFromText runs Sanitizer::decodeCharReferencesAndNormalize first.
// array( 'A é B' ),
// array( 'A é B' ),
// Subject of NS_TALK does not roundtrip to NS_MAIN
- array( 'Talk:File:Example.svg' ),
+ [ 'Talk:File:Example.svg' ],
// Directory navigation
- array( '.' ),
- array( '..' ),
- array( './Sandbox' ),
- array( '../Sandbox' ),
- array( 'Foo/./Sandbox' ),
- array( 'Foo/../Sandbox' ),
- array( 'Sandbox/.' ),
- array( 'Sandbox/..' ),
+ [ '.' ],
+ [ '..' ],
+ [ './Sandbox' ],
+ [ '../Sandbox' ],
+ [ 'Foo/./Sandbox' ],
+ [ 'Foo/../Sandbox' ],
+ [ 'Sandbox/.' ],
+ [ 'Sandbox/..' ],
// Tilde
- array( 'A ~~~ Name' ),
- array( 'A ~~~~ Signature' ),
- array( 'A ~~~~~ Timestamp' ),
- array( str_repeat( 'x', 256 ) ),
+ [ 'A ~~~ Name' ],
+ [ 'A ~~~~ Signature' ],
+ [ 'A ~~~~~ Timestamp' ],
+ [ str_repeat( 'x', 256 ) ],
// Namespace prefix without actual title
- array( 'Talk:' ),
- array( 'Category: ' ),
- array( 'Category: #bar' )
- );
+ [ 'Talk:' ],
+ [ 'Category: ' ],
+ [ 'Category: #bar' ]
+ ];
}
/**
}
public static function provideGetNamespaceName() {
- return array(
- array( NS_MAIN, 'Foo', 'en', '' ),
- array( NS_USER, 'Foo', 'en', 'User' ),
- array( NS_USER, 'Hansi Maier', 'de', 'Benutzer' ),
+ return [
+ [ NS_MAIN, 'Foo', 'en', '' ],
+ [ NS_USER, 'Foo', 'en', 'User' ],
+ [ NS_USER, 'Hansi Maier', 'de', 'Benutzer' ],
// getGenderCache() provides a mock that considers first
// names ending in "a" to be female.
- array( NS_USER, 'Lisa Müller', 'de', 'Benutzerin' ),
- );
+ [ NS_USER, 'Lisa Müller', 'de', 'Benutzerin' ],
+ ];
}
/**