From d6d7f4355106dd74a7280d594d03e3ea6fb29b6f Mon Sep 17 00:00:00 2001 From: "Mark A. Hershberger" Date: Sun, 7 Mar 2010 00:30:02 +0000 Subject: [PATCH] * Fix search-replace problems in MediaWiki_Setup.php * Use the proper Search* class depending on database setup. * Rename SearchMySQLTest to SearchDbTest since it isn't mysql-specific. * Clean up code in SearchEngineTest.php to make it easier to add searchable pages. --- maintenance/tests/MediaWiki_Setup.php | 4 +- .../{SearchMySQLTest.php => SearchDbTest.php} | 13 ++- maintenance/tests/SearchEngineTest.php | 89 +++++++------------ 3 files changed, 43 insertions(+), 63 deletions(-) rename maintenance/tests/{SearchMySQLTest.php => SearchDbTest.php} (53%) diff --git a/maintenance/tests/MediaWiki_Setup.php b/maintenance/tests/MediaWiki_Setup.php index 5483907f23..3957d38b3a 100644 --- a/maintenance/tests/MediaWiki_Setup.php +++ b/maintenance/tests/MediaWiki_Setup.php @@ -10,9 +10,9 @@ abstract class MediaWiki_Setup extends PHPUnit_Framework_TestCase { foreach( $tables as $table ) $oldTableNames[$table] = $db->tableName( $table ); if($db->getType() == 'oracle') { - $wgDBprefix === 'pt_'; + $wgDBprefix = 'pt_'; } else { - $wgDBprefix === 'parsertest_'; + $wgDBprefix = 'parsertest_'; } $db->tablePrefix( $wgDBprefix ); diff --git a/maintenance/tests/SearchMySQLTest.php b/maintenance/tests/SearchDbTest.php similarity index 53% rename from maintenance/tests/SearchMySQLTest.php rename to maintenance/tests/SearchDbTest.php index 0c2ad2293a..1f22340b5d 100644 --- a/maintenance/tests/SearchMySQLTest.php +++ b/maintenance/tests/SearchDbTest.php @@ -1,12 +1,16 @@ markTestSkipped("This test can't (yet?) be run with the parser tests"); + global $wgDBprefix, $wgDBtype; + + if($wgDBprefix === "parsertest_" || + ($wgDBtype === 'oracle' && $wgDBprefix === 'pt_')) { + $this->markTestSkipped("This test can't (yet?) be run with the parser tests"); + } $GLOBALS['wgContLang'] = new Language; $this->db = $this->buildTestDatabase( @@ -14,7 +18,8 @@ class SearchMySQLTest extends SearchEngineTest { if( $this->db ) { $this->insertSearchData(); } - $this->search = new SearchMySQL( $this->db ); + $searchType = preg_replace("/Database/", "Search", get_class($this->db)); + $this->search = new $searchType( $this->db ); } function tearDown() { diff --git a/maintenance/tests/SearchEngineTest.php b/maintenance/tests/SearchEngineTest.php index 0cae2d42f6..8f6b86b2c8 100644 --- a/maintenance/tests/SearchEngineTest.php +++ b/maintenance/tests/SearchEngineTest.php @@ -7,64 +7,39 @@ require_once( 'MediaWiki_Setup.php' ); */ class SearchEngineTest extends MediaWiki_Setup { var $db, $search; + private $count = 0; - function insertSearchData() { - $this->db->safeQuery( <<db->tableName( 'page' ) ); - $this->db->safeQuery( <<db->tableName( 'revision' ) ); - $this->db->safeQuery( <<db->tableName( 'text' ) ); - $this->db->safeQuery( <<db->tableName( 'searchindex' ) ); + function insertSearchData() { + $this->insertPage("Main_Page", "This is a main page", 0); + $this->insertPage('Main_Page', 'This is a talk page to the main page, see [[smithee]]', 1); + $this->insertPage('Smithee', 'A smithee is one who smiths. See also [[Alan Smithee]]', 0); + $this->insertPage('Smithee', 'This article sucks.', 1); + $this->insertPage('Unrelated_page', 'Nothing in this page is about the S word.', 0); + $this->insertPage('Another_page', 'This page also is unrelated.', 0); + $this->insertPage('Help', 'Help me!', 4); + $this->insertPage('Thppt', 'Blah blah', 0); + $this->insertPage('Alan_Smithee', 'yum', 0); + $this->insertPage('Pages', 'are food', 0); + $this->insertPage('DblPageOne', 'ABCDEF', 0); + $this->insertPage('DblPageTwo', 'ABCDE', 0); + $this->insertPage('DblPageTwoLow', 'abcde', 0); + } + + function normalize( $text ) { + return strtolower(preg_replace("/[^[:alnum:] ]/", " ", $text)); + } + + function insertPage( $pageName, $text, $ns ) { + $this->count++; + $this->db->safeQuery( 'INSERT INTO ! (page_id,page_namespace,page_title,page_latest) VALUES (?,?,?,?)', + $this->db->tableName( 'page' ), $this->count, $ns, $pageName, $this->count ); + $this->db->safeQuery( 'INSERT INTO ! (rev_id,rev_page) VALUES (?, ?)', + $this->db->tableName( 'revision' ), $this->count, $this->count ); + $this->db->safeQuery( 'INSERT INTO ! (old_id,old_text) VALUES (?, ?)', + $this->db->tableName( 'text' ), $this->count, $text ); + $this->db->safeQuery( 'INSERT INTO ! (si_page,si_title,si_text) VALUES (?, ?, ?)', + $this->db->tableName( 'searchindex' ), $this->count, + $this->normalize( $pageName ), $this->normalize( $text ) ); } function fetchIds( $results ) { -- 2.20.1