From 44a19685317de16f5afe42b710d8d412352d7fe9 Mon Sep 17 00:00:00 2001 From: Ori Livneh Date: Fri, 28 Mar 2014 13:36:26 -0700 Subject: [PATCH] Temporarily remove tests added in I8eef5a165 Although the tests themselves pass, their introduction to the codebase pushed the total number of tests past some threshold at which Jenkins starts segfaulting. So remove the tests as a temporary workaround, and revert this patch once the bug with Wikimedia's Jenkins deployment (bug 43972) is resolved. Change-Id: I5722faf0e4216e1c1f98ecc1f2dba744b240b7d3 --- tests/phpunit/includes/TitleTest.php | 70 ---- .../title/MediaWikiPageLinkRendererTest.php | 160 -------- .../title/MediaWikiTitleCodecTest.php | 372 ------------------ .../phpunit/includes/title/TitleValueTest.php | 100 ----- 4 files changed, 702 deletions(-) delete mode 100644 tests/phpunit/includes/title/MediaWikiPageLinkRendererTest.php delete mode 100644 tests/phpunit/includes/title/MediaWikiTitleCodecTest.php delete mode 100644 tests/phpunit/includes/title/TitleValueTest.php diff --git a/tests/phpunit/includes/TitleTest.php b/tests/phpunit/includes/TitleTest.php index 809382488d..a332368e00 100644 --- a/tests/phpunit/includes/TitleTest.php +++ b/tests/phpunit/includes/TitleTest.php @@ -517,74 +517,4 @@ class TitleTest extends MediaWikiTestCase { array( 'User:John_Doe/subOne', 'subOne' ), ); } - - public function provideNewFromTitleValue() { - return array( - array( new TitleValue( NS_MAIN, 'Foo' ) ), - array( new TitleValue( NS_MAIN, 'Foo', 'bar' ) ), - array( new TitleValue( NS_USER, 'Hansi_Maier' ) ), - ); - } - - /** - * @dataProvider provideNewFromTitleValue - */ - public function testNewFromTitleValue( TitleValue $value ) { - $title = Title::newFromTitleValue( $value ); - - $dbkey = str_replace( ' ', '_', $value->getText() ); - $this->assertEquals( $dbkey, $title->getDBkey() ); - $this->assertEquals( $value->getNamespace(), $title->getNamespace() ); - $this->assertEquals( $value->getFragment(), $title->getFragment() ); - } - - public function provideGetTitleValue() { - return array( - array( 'Foo' ), - array( 'Foo#bar' ), - array( 'User:Hansi_Maier' ), - ); - } - - /** - * @dataProvider provideGetTitleValue - */ - public function testGetTitleValue( $text ) { - $title = Title::newFromText( $text ); - $value = $title->getTitleValue(); - - $dbkey = str_replace( ' ', '_', $value->getText() ); - $this->assertEquals( $title->getDBkey(), $dbkey ); - $this->assertEquals( $title->getNamespace(), $value->getNamespace() ); - $this->assertEquals( $title->getFragment(), $value->getFragment() ); - } - - public function provideGetFragment() { - return array( - array( 'Foo', '' ), - array( 'Foo#bar', 'bar' ), - array( 'Foo#bär', 'bär' ), - - // Inner whitespace is normalized - array( 'Foo#bar_bar', 'bar bar' ), - array( 'Foo#bar bar', 'bar bar' ), - array( 'Foo#bar bar', 'bar bar' ), - - // Leading whitespace is kept, trailing whitespace is trimmed. - // XXX: Is this really want we want? - array( 'Foo#_bar_bar_', ' bar bar' ), - array( 'Foo# bar bar ', ' bar bar' ), - ); - } - - /** - * @dataProvider provideGetFragment - * - * @param $full - * @param $fragment - */ - public function testGetFragment( $full, $fragment ) { - $title = Title::newFromText( $full ); - $this->assertEquals( $fragment, $title->getFragment() ); - } } diff --git a/tests/phpunit/includes/title/MediaWikiPageLinkRendererTest.php b/tests/phpunit/includes/title/MediaWikiPageLinkRendererTest.php deleted file mode 100644 index 73d7ff9572..0000000000 --- a/tests/phpunit/includes/title/MediaWikiPageLinkRendererTest.php +++ /dev/null @@ -1,160 +0,0 @@ -getMockBuilder( 'GenderCache' ) - ->disableOriginalConstructor() - ->getMock(); - - $genderCache->expects( $this->any() ) - ->method( 'getGenderOf' ) - ->will( $this->returnValue( 'female' ) ); - - return $genderCache; - } - - public function provideGetPageUrl() { - return array( - array( - new TitleValue( NS_MAIN, 'Foo_Bar' ), - array(), - '/Foo_Bar' - ), - array( - new TitleValue( NS_USER, 'Hansi_Maier', 'stuff' ), - array( 'foo' => 'bar' ), - '/User:Hansi_Maier?foo=bar#stuff' - ), - ); - } - - /** - * @dataProvider provideGetPageUrl - */ - public function testGetPageUrl( TitleValue $title, $params, $url ) { - // NOTE: was of Feb 2014, MediaWikiPageLinkRenderer *ignores* the - // WikitextTitleFormatter we pass here, and relies on the Linker - // class for generating the link! This may break the test e.g. - // of Linker uses a different language for the namespace names. - - $lang = Language::factory( 'en' ); - - $formatter = new MediaWikiTitleCodec( $lang, $this->getGenderCache() ); - $renderer = new MediaWikiPageLinkRenderer( $formatter, '/' ); - $actual = $renderer->getPageUrl( $title, $params ); - - $this->assertEquals( $url, $actual ); - } - - public function provideRenderHtmlLink() { - return array( - array( - new TitleValue( NS_MAIN, 'Foo_Bar' ), - 'Foo Bar', - '!Foo Bar!' - ), - array( - //NOTE: Linker doesn't include fragments in "broken" links - //NOTE: once this no longer uses Linker, we will get "2" instead of "User" for the namespace. - new TitleValue( NS_USER, 'Hansi_Maier', 'stuff' ), - 'Hansi Maier\'s Stuff', - '!renderWikitextLink( $title, $text ); - - $this->assertEquals( $expected, $actual ); - } -} diff --git a/tests/phpunit/includes/title/MediaWikiTitleCodecTest.php b/tests/phpunit/includes/title/MediaWikiTitleCodecTest.php deleted file mode 100644 index e4f9396b6f..0000000000 --- a/tests/phpunit/includes/title/MediaWikiTitleCodecTest.php +++ /dev/null @@ -1,372 +0,0 @@ -setMwGlobals( array( - 'wgLanguageCode' => 'en', - 'wgContLang' => Language::factory( 'en' ), - // User language - 'wgLang' => Language::factory( 'en' ), - 'wgAllowUserJs' => false, - 'wgDefaultLanguageVariant' => false, - 'wgLocalInterwikis' => array( 'localtestiw' ), - - // NOTE: this is why global state is evil. - // TODO: refactor access to the interwiki codes so it can be injected. - 'wgHooks' => array( - 'InterwikiLoadPrefix' => array( - function ( $prefix, &$data ) { - if ( $prefix === 'localtestiw' ) { - $data = array( 'iw_url' => 'localtestiw' ); - } elseif ( $prefix === 'remotetestiw' ) { - $data = array( 'iw_url' => 'remotetestiw' ); - } - return false; - } - ) - ) - ) ); - } - - /** - * Returns a mock GenderCache that will consider a user "female" if the - * first part of the user name ends with "a". - * - * @return GenderCache - */ - private function getGenderCache() { - $genderCache = $this->getMockBuilder( 'GenderCache' ) - ->disableOriginalConstructor() - ->getMock(); - - $genderCache->expects( $this->any() ) - ->method( 'getGenderOf' ) - ->will( $this->returnCallback( function( $userName ) { - return preg_match( '/^[^- _]+a( |_|$)/u', $userName ) ? 'female' : 'male'; - } ) ); - - return $genderCache; - } - - protected function makeCodec( $lang ) { - $gender = $this->getGenderCache(); - $lang = Language::factory( $lang ); - return new MediaWikiTitleCodec( $lang, $gender ); - } - - public 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( 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' ), - ); - } - - /** - * @dataProvider provideFormat - */ - public function testFormat( $namespace, $text, $fragment, $lang, $expected, $normalized = null ) { - if ( $normalized === null ) { - $normalized = $expected; - } - - $codec = $this->makeCodec( $lang ); - $actual = $codec->formatTitle( $namespace, $text, $fragment ); - - $this->assertEquals( $expected, $actual, 'formatted' ); - - // test round trip - $parsed = $codec->parseTitle( $actual, NS_MAIN ); - $actual2 = $codec->formatTitle( $parsed->getNamespace(), $parsed->getText(), $parsed->getFragment() ); - - $this->assertEquals( $normalized, $actual2, 'normalized after round trip' ); - } - - public function provideGetText() { - return array( - array( NS_MAIN, 'Foo_Bar', '', 'en', 'Foo Bar' ), - array( NS_USER, 'Hansi_Maier', 'stuff_and_so_on', 'en', 'Hansi Maier' ), - ); - } - - /** - * @dataProvider provideGetText - */ - public function testGetText( $namespace, $dbkey, $fragment, $lang, $expected ) { - $codec = $this->makeCodec( $lang ); - $title = new TitleValue( $namespace, $dbkey, $fragment ); - - $actual = $codec->getText( $title ); - - $this->assertEquals( $expected, $actual ); - } - - public 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' ), - - // No capitalization or normalization is applied while formatting! - array( 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' ), - ); - } - - /** - * @dataProvider provideGetPrefixedText - */ - public function testGetPrefixedText( $namespace, $dbkey, $fragment, $lang, $expected ) { - $codec = $this->makeCodec( $lang ); - $title = new TitleValue( $namespace, $dbkey, $fragment ); - - $actual = $codec->getPrefixedText( $title ); - - $this->assertEquals( $expected, $actual ); - } - - public 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' ), - - // No capitalization or normalization is applied while formatting! - array( NS_USER_TALK, 'hansi__maier', '', 'en', 'User talk:hansi maier' ), - ); - } - - /** - * @dataProvider provideGetFullText - */ - public function testGetFullText( $namespace, $dbkey, $fragment, $lang, $expected ) { - $codec = $this->makeCodec( $lang ); - $title = new TitleValue( $namespace, $dbkey, $fragment ); - - $actual = $codec->getFullText( $title ); - - $this->assertEquals( $expected, $actual ); - } - - public function provideParseTitle() { - //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', '' ) ), - - // 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' ) ), - - //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~~' ), - // Length is 256 total, but only title part matters - array( '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 ) ) - ); - } - - /** - * @dataProvider provideParseTitle - */ - public function testParseTitle( $text, $ns, $lang, $title = null ) { - if ( $title === null ) { - $title = str_replace( ' ', '_', trim( $text ) ); - } - - if ( is_string( $title ) ) { - $title = new TitleValue( NS_MAIN, $title, '' ); - } - - $codec = $this->makeCodec( $lang ); - $actual = $codec->parseTitle( $text, $ns ); - - $this->assertEquals( $title, $actual ); - } - - public function provideParseTitle_invalid() { - //TODO: test unicode errors - - return array( - array( '#' ), - array( '::' ), - array( '::xx' ), - array( '::##' ), - array( ' :: 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 - - //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' ), - // URL encoding - array( 'A%20B' ), - array( 'A%23B' ), - array( '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' ), - //array( 'A é B' ), - // Subject of NS_TALK does not roundtrip to NS_MAIN - array( 'Talk:File:Example.svg' ), - // Directory navigation - array( '.' ), - array( '..' ), - array( './Sandbox' ), - array( '../Sandbox' ), - array( 'Foo/./Sandbox' ), - array( 'Foo/../Sandbox' ), - array( 'Sandbox/.' ), - array( 'Sandbox/..' ), - // Tilde - array( 'A ~~~ Name' ), - array( 'A ~~~~ Signature' ), - array( 'A ~~~~~ Timestamp' ), - array( str_repeat( 'x', 256 ) ), - // Namespace prefix without actual title - array( 'Talk:' ), - array( 'Category: ' ), - array( 'Category: #bar' ) - ); - } - - /** - * @dataProvider provideParseTitle_invalid - */ - public function testParseTitle_invalid( $text ) { - $this->setExpectedException( 'MalformedTitleException' ); - - $codec = $this->makeCodec( 'en' ); - $codec->parseTitle( $text, NS_MAIN ); - } - - public function provideGetNamespaceName() { - return array( - array( NS_MAIN, 'Foo', 'en', '' ), - array( NS_USER, 'Foo', 'en', 'User' ), - array( 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' ), - ); - } - - /** - * @dataProvider provideGetNamespaceName - * - * @param $namespace - * @param $text - * @param $lang - * @param $expected - * - * @internal param \TitleValue $title - */ - public function testGetNamespaceName( $namespace, $text, $lang, $expected ) { - $codec = $this->makeCodec( $lang ); - $name = $codec->getNamespaceName( $namespace, $text ); - - $this->assertEquals( $expected, $name ); - } -} diff --git a/tests/phpunit/includes/title/TitleValueTest.php b/tests/phpunit/includes/title/TitleValueTest.php deleted file mode 100644 index 3ba008d6c4..0000000000 --- a/tests/phpunit/includes/title/TitleValueTest.php +++ /dev/null @@ -1,100 +0,0 @@ -assertEquals( NS_USER, $title->getNamespace() ); - $this->assertEquals( 'TestThis', $title->getText() ); - $this->assertEquals( 'stuff', $title->getFragment() ); - } - - public function badConstructorProvider() { - return array( - array( 'foo', 'title', 'fragment' ), - array( null, 'title', 'fragment' ), - array( 2.3, 'title', 'fragment' ), - - array( NS_MAIN, 5, 'fragment' ), - array( NS_MAIN, null, 'fragment' ), - array( NS_MAIN, '', 'fragment' ), - array( NS_MAIN, 'foo bar', '' ), - array( NS_MAIN, 'bar_', '' ), - array( NS_MAIN, '_foo', '' ), - array( NS_MAIN, ' eek ', '' ), - - array( NS_MAIN, 'title', 5 ), - array( NS_MAIN, 'title', null ), - array( NS_MAIN, 'title', array() ), - ); - } - - /** - * @dataProvider badConstructorProvider - */ - public function testConstructionErrors( $ns, $text, $fragment ) { - $this->setExpectedException( 'InvalidArgumentException' ); - new TitleValue( $ns, $text, $fragment ); - } - - public function fragmentTitleProvider() { - return array( - array( new TitleValue( NS_MAIN, 'Test' ), 'foo' ), - array( new TitleValue( NS_TALK, 'Test', 'foo' ), '' ), - array( new TitleValue( NS_CATEGORY, 'Test', 'foo' ), 'bar' ), - ); - } - - /** - * @dataProvider fragmentTitleProvider - */ - public function testCreateFragmentTitle( TitleValue $title, $fragment ) { - $fragmentTitle = $title->createFragmentTitle( $fragment ); - - $this->assertEquals( $title->getNamespace(), $fragmentTitle->getNamespace() ); - $this->assertEquals( $title->getText(), $fragmentTitle->getText() ); - $this->assertEquals( $fragment, $fragmentTitle->getFragment() ); - } - - public function getTextProvider() { - return array( - array( 'Foo', 'Foo' ), - array( 'Foo_Bar', 'Foo Bar' ), - ); - } - - /** - * @dataProvider getTextProvider - */ - public function testGetText( $dbkey, $text ) { - $title = new TitleValue( NS_MAIN, $dbkey ); - - $this->assertEquals( $text, $title->getText() ); - } -} -- 2.20.1