From 0ca1132ea9de9546cac4b93f105c3eccf26a9f4e Mon Sep 17 00:00:00 2001 From: Chad Horohoe Date: Fri, 14 Jun 2013 16:20:09 -0400 Subject: [PATCH] Remove Selenium tests from core This never really worked properly, doesn't conform to coding conventions, and isn't actually used by anyone for testing. Our selenium stuff these days are in the qa/browsertests repo Change-Id: I8f1efaa118fe41821fb3f4a6099d75a33681f17b --- docs/hooks.txt | 2 - includes/DefaultSettings.php | 9 - includes/SeleniumWebSettings.php | 221 --- includes/WebStart.php | 4 - tests/RunSeleniumTests.php | 258 --- tests/TestsAutoLoader.php | 11 - .../includes/SeleniumConfigurationTest.php | 222 --- tests/selenium/Selenium.php | 191 -- tests/selenium/SeleniumConfig.php | 80 - tests/selenium/SeleniumLoader.php | 9 - tests/selenium/SeleniumServerManager.php | 252 --- tests/selenium/SeleniumTestCase.php | 127 -- tests/selenium/SeleniumTestConsoleLogger.php | 25 - tests/selenium/SeleniumTestConstants.php | 24 - tests/selenium/SeleniumTestHTMLLogger.php | 36 - tests/selenium/SeleniumTestListener.php | 65 - tests/selenium/SeleniumTestSuite.php | 57 - tests/selenium/data/SimpleSeleniumTestDB.sql | 1453 ---------------- .../data/SimpleSeleniumTestImages.zip | Bin 21993 -> 0 bytes tests/selenium/data/Wikipedia-logo-v2-de.png | Bin 21479 -> 0 bytes .../data/mediawiki118_fresh_installation.sql | 1543 ----------------- .../MediaWikiButtonsAvailabilityTestCase.php | 90 - ...iaWikiDifferentDatabaseAccountTestCase.php | 73 - ...ediaWikiDifferntDatabasePrefixTestCase.php | 88 - ...ikiErrorsConnectToDatabasePageTestCase.php | 131 -- .../MediaWikiErrorsNamepageTestCase.php | 119 -- .../MediaWikiHelpFieldHintTestCase.php | 128 -- .../MediaWikiInstallationCommonFunction.php | 259 --- .../installer/MediaWikiInstallationConfig.php | 45 - .../MediaWikiInstallationMessage.php | 53 - .../MediaWikiInstallationVariables.php | 73 - .../installer/MediaWikiInstallerTestSuite.php | 49 - .../MediaWikiMySQLDataBaseTestCase.php | 71 - .../MediaWikiMySQLiteDataBaseTestCase.php | 73 - .../MediaWikiOnAlreadyInstalledTestCase.php | 65 - .../MediaWikiRestartInstallationTestCase.php | 104 -- .../MediaWikiRightFrameworkLinksTestCase.php | 83 - ...diaWikiUpgradeExistingDatabaseTestCase.php | 111 -- .../MediaWikiUserInterfaceTestCase.php | 494 ------ tests/selenium/installer/README.txt | 32 - tests/selenium/selenium_settings.ini.sample | 32 - .../selenium_settings_grid.ini.sample | 16 - .../suites/AddContentToNewPageTestCase.php | 171 -- tests/selenium/suites/AddNewPageTestCase.php | 59 - .../selenium/suites/CreateAccountTestCase.php | 109 -- .../suites/DeletePageAdminTestCase.php | 82 - .../selenium/suites/EmailPasswordTestCase.php | 74 - .../selenium/suites/MediaWikiEditorConfig.php | 41 - .../suites/MediaWikiEditorTestSuite.php | 19 - .../suites/MediaWikiExtraTestSuite.php | 21 - .../suites/MediawikiCoreSmokeTestCase.php | 70 - .../suites/MediawikiCoreSmokeTestSuite.php | 19 - tests/selenium/suites/MovePageTestCase.php | 111 -- .../suites/MyContributionsTestCase.php | 59 - tests/selenium/suites/MyWatchListTestCase.php | 51 - tests/selenium/suites/PageDeleteTestSuite.php | 15 - tests/selenium/suites/PageSearchTestCase.php | 98 -- tests/selenium/suites/PreviewPageTestCase.php | 48 - tests/selenium/suites/SavePageTestCase.php | 53 - .../selenium/suites/SimpleSeleniumConfig.php | 30 - .../suites/SimpleSeleniumTestCase.php | 39 - .../suites/SimpleSeleniumTestSuite.php | 26 - .../suites/UserPreferencesTestCase.php | 170 -- 63 files changed, 8143 deletions(-) delete mode 100644 includes/SeleniumWebSettings.php delete mode 100644 tests/RunSeleniumTests.php delete mode 100644 tests/phpunit/includes/SeleniumConfigurationTest.php delete mode 100644 tests/selenium/Selenium.php delete mode 100644 tests/selenium/SeleniumConfig.php delete mode 100644 tests/selenium/SeleniumLoader.php delete mode 100644 tests/selenium/SeleniumServerManager.php delete mode 100644 tests/selenium/SeleniumTestCase.php delete mode 100644 tests/selenium/SeleniumTestConsoleLogger.php delete mode 100644 tests/selenium/SeleniumTestConstants.php delete mode 100644 tests/selenium/SeleniumTestHTMLLogger.php delete mode 100644 tests/selenium/SeleniumTestListener.php delete mode 100644 tests/selenium/SeleniumTestSuite.php delete mode 100644 tests/selenium/data/SimpleSeleniumTestDB.sql delete mode 100644 tests/selenium/data/SimpleSeleniumTestImages.zip delete mode 100644 tests/selenium/data/Wikipedia-logo-v2-de.png delete mode 100644 tests/selenium/data/mediawiki118_fresh_installation.sql delete mode 100644 tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiInstallationCommonFunction.php delete mode 100644 tests/selenium/installer/MediaWikiInstallationConfig.php delete mode 100644 tests/selenium/installer/MediaWikiInstallationMessage.php delete mode 100644 tests/selenium/installer/MediaWikiInstallationVariables.php delete mode 100644 tests/selenium/installer/MediaWikiInstallerTestSuite.php delete mode 100644 tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiRestartInstallationTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php delete mode 100644 tests/selenium/installer/MediaWikiUserInterfaceTestCase.php delete mode 100644 tests/selenium/installer/README.txt delete mode 100644 tests/selenium/selenium_settings.ini.sample delete mode 100644 tests/selenium/selenium_settings_grid.ini.sample delete mode 100644 tests/selenium/suites/AddContentToNewPageTestCase.php delete mode 100644 tests/selenium/suites/AddNewPageTestCase.php delete mode 100644 tests/selenium/suites/CreateAccountTestCase.php delete mode 100644 tests/selenium/suites/DeletePageAdminTestCase.php delete mode 100644 tests/selenium/suites/EmailPasswordTestCase.php delete mode 100644 tests/selenium/suites/MediaWikiEditorConfig.php delete mode 100644 tests/selenium/suites/MediaWikiEditorTestSuite.php delete mode 100644 tests/selenium/suites/MediaWikiExtraTestSuite.php delete mode 100644 tests/selenium/suites/MediawikiCoreSmokeTestCase.php delete mode 100644 tests/selenium/suites/MediawikiCoreSmokeTestSuite.php delete mode 100644 tests/selenium/suites/MovePageTestCase.php delete mode 100644 tests/selenium/suites/MyContributionsTestCase.php delete mode 100644 tests/selenium/suites/MyWatchListTestCase.php delete mode 100644 tests/selenium/suites/PageDeleteTestSuite.php delete mode 100644 tests/selenium/suites/PageSearchTestCase.php delete mode 100644 tests/selenium/suites/PreviewPageTestCase.php delete mode 100644 tests/selenium/suites/SavePageTestCase.php delete mode 100644 tests/selenium/suites/SimpleSeleniumConfig.php delete mode 100644 tests/selenium/suites/SimpleSeleniumTestCase.php delete mode 100644 tests/selenium/suites/SimpleSeleniumTestSuite.php delete mode 100644 tests/selenium/suites/UserPreferencesTestCase.php diff --git a/docs/hooks.txt b/docs/hooks.txt index ff0a864c82..46949eab25 100644 --- a/docs/hooks.txt +++ b/docs/hooks.txt @@ -1990,8 +1990,6 @@ $title : Current Title object being displayed in search results. 'SearchableNamespaces': An option to modify which namespaces are searchable. &$arr : Array of namespaces ($nsId => $name) which will be used. -'SeleniumSettings': TODO - 'SetupAfterCache': Called in Setup.php, after cache objects are set 'ShowMissingArticle': Called when generating the output for a non-existent page. diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index b560baf225..f86b09d17e 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -6287,15 +6287,6 @@ $wgPoolCounterConf = null; */ $wgUploadMaintenance = false; -/** - * Allows running of selenium tests via maintenance/tests/RunSeleniumTests.php - */ -$wgEnableSelenium = false; -$wgSeleniumTestConfigs = array(); -$wgSeleniumConfigFile = null; -$wgDBtestuser = ''; //db user that has permission to create and drop the test databases only -$wgDBtestpassword = ''; - /** * Associative array mapping namespace IDs to the name of the content model pages in that namespace should have by * default (use the CONTENT_MODEL_XXX constants). If no special content type is defined for a given namespace, diff --git a/includes/SeleniumWebSettings.php b/includes/SeleniumWebSettings.php deleted file mode 100644 index 2fcbe65f6d..0000000000 --- a/includes/SeleniumWebSettings.php +++ /dev/null @@ -1,221 +0,0 @@ - 0 ) { - $expire = time() + 600; - setcookie( - $cookieName, - $setupTestSuiteName, - $expire, - $wgCookiePath, - $wgCookieDomain, - $wgCookieSecure, - true - ); - } - - $testIncludes = array(); // array containing all the includes needed for this test - $testGlobalConfigs = array(); // an array containing all the global configs needed for this test - $testResourceFiles = array(); // an array containing all the resource files needed for this test - $callback = $wgSeleniumTestConfigs[$setupTestSuiteName]; - call_user_func_array( $callback, array( &$testIncludes, &$testGlobalConfigs, &$testResourceFiles ) ); - - if ( isset( $testResourceFiles['images'] ) ) { - $testImageZip = $testResourceFiles['images']; - } - - if ( isset( $testResourceFiles['db'] ) ) { - $testSqlFile = $testResourceFiles['db']; - $testResourceName = getTestResourceNameFromTestSuiteName( $setupTestSuiteName ); - - switchToTestResources( $testResourceName, false ); // false means do not switch database yet - setupTestResources( $testResourceName, $testSqlFile, $testImageZip ); - } -} - -// clear the cookie based on a request param -if ( isset( $_GET['clearTestSuite'] ) ) { - $testSuiteName = getTestSuiteNameFromCookie( $cookieName ); - - $expire = time() - 600; - setcookie( - $cookieName, - '', - $expire, - $wgCookiePath, - $wgCookieDomain, - $wgCookieSecure, - true - ); - - $testResourceName = getTestResourceNameFromTestSuiteName( $testSuiteName ); - teardownTestResources( $testResourceName ); -} - -// if a cookie is found, run the appropriate callback to get the config params. -if ( isset( $_COOKIE[$cookieName] ) ) { - $testSuiteName = getTestSuiteNameFromCookie( $cookieName ); - if ( !isset( $wgSeleniumTestConfigs[$testSuiteName] ) ) { - return; - } - - $testIncludes = array(); // array containing all the includes needed for this test - $testGlobalConfigs = array(); // an array containing all the global configs needed for this test - $testResourceFiles = array(); // an array containing all the resource files needed for this test - $callback = $wgSeleniumTestConfigs[$testSuiteName]; - call_user_func_array( $callback, array( &$testIncludes, &$testGlobalConfigs, &$testResourceFiles ) ); - - if ( isset( $testResourceFiles['db'] ) ) { - $testResourceName = getTestResourceNameFromTestSuiteName( $testSuiteName ); - switchToTestResources( $testResourceName ); - } - foreach ( $testIncludes as $includeFile ) { - $file = $IP . '/' . $includeFile; - require_once $file; - } - foreach ( $testGlobalConfigs as $key => $value ) { - if ( is_array( $value ) ) { - $GLOBALS[$key] = array_merge( $GLOBALS[$key], $value ); - } else { - $GLOBALS[$key] = $value; - } - } -} - -wfProfileOut( $fname ); - -function getTestSuiteNameFromCookie( $cookieName ) { - $testSuiteName = null; - if ( isset( $_COOKIE[$cookieName] ) ) { - $testSuiteName = $_COOKIE[$cookieName]; - } - return $testSuiteName; -} - -function getTestResourceNameFromTestSuiteName( $testSuiteName ) { - $testResourceName = null; - if ( isset( $testSuiteName ) ) { - $testResourceName = $testSuiteName; - } - return $testResourceName; -} - -function getTestUploadPathFromResourceName( $testResourceName ) { - global $IP; - $testUploadPath = "$IP/images/$testResourceName"; - return $testUploadPath; -} - -function setupTestResources( $testResourceName, $testSqlFile, $testImageZip ) { - global $wgDBname; - - // Basic security. Do not allow to drop productive database. - if ( $testResourceName == $wgDBname ) { - die( 'Cannot override productive database.' ); - } - if ( $testResourceName == '' ) { - die( 'Cannot identify a test the resources should be installed for.' ); - } - - // create tables - $dbw = wfGetDB( DB_MASTER ); - $dbw->query( 'DROP DATABASE IF EXISTS ' . $testResourceName ); - $dbw->query( 'CREATE DATABASE ' . $testResourceName ); - - // do not set the new DB name before database is setup - $wgDBname = $testResourceName; - $dbw->selectDB( $testResourceName ); - // populate from SQL file - if ( $testSqlFile ) { - $dbw->sourceFile( $testSqlFile ); - } - - // create test image dir - $testUploadPath = getTestUploadPathFromResourceName( $testResourceName ); - if ( !file_exists( $testUploadPath ) ) { - mkdir( $testUploadPath ); - } - - if ( $testImageZip ) { - $zip = new ZipArchive(); - $zip->open( $testImageZip ); - $zip->extractTo( $testUploadPath ); - $zip->close(); - } -} - -function teardownTestResources( $testResourceName ) { - // remove test database - $dbw = wfGetDB( DB_MASTER ); - $dbw->query( 'DROP DATABASE IF EXISTS ' . $testResourceName ); - - $testUploadPath = getTestUploadPathFromResourceName( $testResourceName ); - // remove test image dir - if ( file_exists( $testUploadPath ) ) { - wfRecursiveRemoveDir( $testUploadPath ); - } -} - -function switchToTestResources( $testResourceName, $switchDB = true ) { - global $wgDBuser, $wgDBpassword, $wgDBname; - global $wgDBtestuser, $wgDBtestpassword; - global $wgUploadPath; - - if ( $switchDB ) { - $wgDBname = $testResourceName; - } - $wgDBuser = $wgDBtestuser; - $wgDBpassword = $wgDBtestpassword; - - $testUploadPath = getTestUploadPathFromResourceName( $testResourceName ); - $wgUploadPath = $testUploadPath; -} diff --git a/includes/WebStart.php b/includes/WebStart.php index 16658d3863..901b1e8e36 100644 --- a/includes/WebStart.php +++ b/includes/WebStart.php @@ -139,10 +139,6 @@ if ( defined( 'MW_CONFIG_CALLBACK' ) ) { require_once MW_CONFIG_FILE; } -if ( $wgEnableSelenium ) { - require_once "$IP/includes/SeleniumWebSettings.php"; -} - wfProfileOut( 'WebStart.php-conf' ); wfProfileIn( 'WebStart.php-ob_start' ); diff --git a/tests/RunSeleniumTests.php b/tests/RunSeleniumTests.php deleted file mode 100644 index c25dff7fcd..0000000000 --- a/tests/RunSeleniumTests.php +++ /dev/null @@ -1,258 +0,0 @@ -#!/usr/bin/env php -=' ) ) { - # PHPUnit 3.5.0 introduced a nice autoloader based on class name - require_once 'PHPUnit/Autoload.php'; -} else { - # Keep the old pre PHPUnit 3.5.0 behavior for compatibility - require_once 'PHPUnit/TextUI/Command.php'; -} - -require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; -include_once 'PHPUnit/Util/Log/JUnit.php'; - -require_once __DIR__ . "/selenium/SeleniumServerManager.php"; - -class SeleniumTester extends Maintenance { - protected $selenium; - protected $serverManager; - protected $seleniumServerExecPath; - - public function __construct() { - parent::__construct(); - $this->mDescription = "Selenium Test Runner. For documentation, visit http://www.mediawiki.org/wiki/SeleniumFramework"; - $this->addOption( 'port', 'Port used by selenium server. Default: 4444', false, true ); - $this->addOption( 'host', 'Host selenium server. Default: $wgServer . $wgScriptPath', false, true ); - $this->addOption( 'testBrowser', 'The browser used during testing. Default: firefox', false, true ); - $this->addOption( 'wikiUrl', 'The Mediawiki installation to point to. Default: http://localhost', false, true ); - $this->addOption( 'username', 'The login username for sunning tests. Default: empty', false, true ); - $this->addOption( 'userPassword', 'The login password for running tests. Default: empty', false, true ); - $this->addOption( 'seleniumConfig', 'Location of the selenium config file. Default: empty', false, true ); - $this->addOption( 'list-browsers', 'List the available browsers.' ); - $this->addOption( 'verbose', 'Be noisier.' ); - $this->addOption( 'startserver', 'Start Selenium Server (on localhost) before the run.' ); - $this->addOption( 'stopserver', 'Stop Selenium Server (on localhost) after the run.' ); - $this->addOption( 'jUnitLogFile', 'Log results in a specified JUnit log file. Default: empty', false, true ); - $this->addOption( 'runAgainstGrid', 'The test will be run against a Selenium Grid. Default: false.', false, true ); - $this->deleteOption( 'dbpass' ); - $this->deleteOption( 'dbuser' ); - $this->deleteOption( 'globals' ); - $this->deleteOption( 'wiki' ); - } - - public function listBrowsers() { - $desc = "Available browsers:\n"; - - foreach ( $this->selenium->getAvailableBrowsers() as $k => $v ) { - $desc .= " $k => $v\n"; - } - - echo $desc; - } - - protected function startServer() { - if ( $this->seleniumServerExecPath == '' ) { - die( "The selenium server exec path is not set in " . - "selenium_settings.ini. Cannot start server \n" . - "as requested - terminating RunSeleniumTests\n" ); - } - $this->serverManager = new SeleniumServerManager( 'true', - $this->selenium->getPort(), - $this->seleniumServerExecPath ); - switch ( $this->serverManager->start() ) { - case 'started': - break; - case 'failed': - die( "Unable to start the Selenium Server - " . - "terminating RunSeleniumTests\n" ); - case 'running': - echo "Warning: The Selenium Server is " . - "already running\n"; - break; - } - - return; - } - - protected function stopServer() { - if ( !isset( $this->serverManager ) ) { - echo "Warning: Request to stop Selenium Server, but it was " . - "not stared by RunSeleniumTests\n" . - "RunSeleniumTests cannot stop a Selenium Server it " . - "did not start\n"; - } else { - switch ( $this->serverManager->stop() ) { - case 'stopped': - break; - case 'failed': - echo "unable to stop the Selenium Server\n"; - } - } - return; - } - - protected function runTests( $seleniumTestSuites = array() ) { - $result = new PHPUnit_Framework_TestResult; - $result->addListener( new SeleniumTestListener( $this->selenium->getLogger() ) ); - if ( $this->selenium->getJUnitLogFile() ) { - $jUnitListener = new PHPUnit_Util_Log_JUnit( $this->selenium->getJUnitLogFile(), true ); - $result->addListener( $jUnitListener ); - } - - foreach ( $seleniumTestSuites as $testSuiteName => $testSuiteFile ) { - require $testSuiteFile; - $suite = new $testSuiteName(); - $suite->setName( $testSuiteName ); - $suite->addTests(); - - try { - $suite->run( $result ); - } catch ( Testing_Selenium_Exception $e ) { - $suite->tearDown(); - throw new MWException( $e->getMessage() ); - } - } - - if ( $this->selenium->getJUnitLogFile() ) { - $jUnitListener->flush(); - } - } - - public function execute() { - global $wgServer, $wgScriptPath, $wgHooks; - - $seleniumSettings = array(); - $seleniumBrowsers = array(); - $seleniumTestSuites = array(); - - $configFile = $this->getOption( 'seleniumConfig', '' ); - if ( strlen( $configFile ) > 0 ) { - $this->output( "Using Selenium Configuration file: " . $configFile . "\n" ); - SeleniumConfig::getSeleniumSettings( $seleniumSettings, - $seleniumBrowsers, - $seleniumTestSuites, - $configFile ); - } elseif ( !isset( $wgHooks['SeleniumSettings'] ) ) { - $this->output( "No command line, configuration file or configuration hook found.\n" ); - SeleniumConfig::getSeleniumSettings( $seleniumSettings, - $seleniumBrowsers, - $seleniumTestSuites - ); - } else { - $this->output( "Using 'SeleniumSettings' hook for configuration.\n" ); - wfRunHooks( 'SeleniumSettings', array( $seleniumSettings, - $seleniumBrowsers, - $seleniumTestSuites ) ); - } - - // State for starting/stopping the Selenium server has nothing to do with the Selenium - // class. Keep this state local to SeleniumTester class. Using getOption() is clumsy, but - // the Maintenance class does not have a setOption() - if ( !isset( $seleniumSettings['startserver'] ) ) { - $this->getOption( 'startserver', true ); - } - if ( !isset( $seleniumSettings['stopserver'] ) ) { - $this->getOption( 'stopserver', true ); - } - if ( !isset( $seleniumSettings['seleniumserverexecpath'] ) ) { - $seleniumSettings['seleniumserverexecpath'] = ''; - } - $this->seleniumServerExecPath = $seleniumSettings['seleniumserverexecpath']; - - //set reasonable defaults if we did not find the settings - if ( !isset( $seleniumBrowsers ) ) { - $seleniumBrowsers = array( 'firefox' => '*firefox' ); - } - if ( !isset( $seleniumSettings['host'] ) ) { - $seleniumSettings['host'] = $wgServer . $wgScriptPath; - } - if ( !isset( $seleniumSettings['port'] ) ) { - $seleniumSettings['port'] = '4444'; - } - if ( !isset( $seleniumSettings['wikiUrl'] ) ) { - $seleniumSettings['wikiUrl'] = 'http://localhost'; - } - if ( !isset( $seleniumSettings['username'] ) ) { - $seleniumSettings['username'] = ''; - } - if ( !isset( $seleniumSettings['userPassword'] ) ) { - $seleniumSettings['userPassword'] = ''; - } - if ( !isset( $seleniumSettings['testBrowser'] ) ) { - $seleniumSettings['testBrowser'] = 'firefox'; - } - if ( !isset( $seleniumSettings['jUnitLogFile'] ) ) { - $seleniumSettings['jUnitLogFile'] = false; - } - if ( !isset( $seleniumSettings['runAgainstGrid'] ) ) { - $seleniumSettings['runAgainstGrid'] = false; - } - - // Setup Selenium class - $this->selenium = new Selenium(); - $this->selenium->setAvailableBrowsers( $seleniumBrowsers ); - $this->selenium->setRunAgainstGrid( $this->getOption( 'runAgainstGrid', $seleniumSettings['runAgainstGrid'] ) ); - $this->selenium->setUrl( $this->getOption( 'wikiUrl', $seleniumSettings['wikiUrl'] ) ); - $this->selenium->setBrowser( $this->getOption( 'testBrowser', $seleniumSettings['testBrowser'] ) ); - $this->selenium->setPort( $this->getOption( 'port', $seleniumSettings['port'] ) ); - $this->selenium->setHost( $this->getOption( 'host', $seleniumSettings['host'] ) ); - $this->selenium->setUser( $this->getOption( 'username', $seleniumSettings['username'] ) ); - $this->selenium->setPass( $this->getOption( 'userPassword', $seleniumSettings['userPassword'] ) ); - $this->selenium->setVerbose( $this->hasOption( 'verbose' ) ); - $this->selenium->setJUnitLogFile( $this->getOption( 'jUnitLogFile', $seleniumSettings['jUnitLogFile'] ) ); - - if ( $this->hasOption( 'list-browsers' ) ) { - $this->listBrowsers(); - exit( 0 ); - } - if ( $this->hasOption( 'startserver' ) ) { - $this->startServer(); - } - - $logger = new SeleniumTestConsoleLogger; - $this->selenium->setLogger( $logger ); - - $this->runTests( $seleniumTestSuites ); - - if ( $this->hasOption( 'stopserver' ) ) { - $this->stopServer(); - } - } -} - -$maintClass = "SeleniumTester"; - -require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/tests/TestsAutoLoader.php b/tests/TestsAutoLoader.php index 1e9c2af986..7e53826ece 100644 --- a/tests/TestsAutoLoader.php +++ b/tests/TestsAutoLoader.php @@ -97,15 +97,4 @@ $wgAutoloadClasses += array( # tests/parser 'ParserTest' => "$testDir/parser/parserTest.inc", 'ParserTestParserHook' => "$testDir/parser/parserTestsParserHook.php", - - # tests/selenium - 'Selenium' => "$testDir/selenium/Selenium.php", - 'SeleniumLoader' => "$testDir/selenium/SeleniumLoader.php", - 'SeleniumTestCase' => "$testDir/selenium/SeleniumTestCase.php", - 'SeleniumTestConsoleLogger' => "$testDir/selenium/SeleniumTestConsoleLogger.php", - 'SeleniumTestConstants' => "$testDir/selenium/SeleniumTestConstants.php", - 'SeleniumTestHTMLLogger' => "$testDir/selenium/SeleniumTestHTMLLogger.php", - 'SeleniumTestListener' => "$testDir/selenium/SeleniumTestListener.php", - 'SeleniumTestSuite' => "$testDir/selenium/SeleniumTestSuite.php", - 'SeleniumConfig' => "$testDir/selenium/SeleniumConfig.php", ); diff --git a/tests/phpunit/includes/SeleniumConfigurationTest.php b/tests/phpunit/includes/SeleniumConfigurationTest.php deleted file mode 100644 index 4b49f639e8..0000000000 --- a/tests/phpunit/includes/SeleniumConfigurationTest.php +++ /dev/null @@ -1,222 +0,0 @@ - '*firefox', - 'iexplorer' => '*iexploreproxy', - 'chrome' => '*chrome' - ); - /** - * Array of expected selenium settings from $testConfig0 - */ - private $testSettings0 = array( - 'host' => 'localhost', - 'port' => 'foobarr', - 'wikiUrl' => 'http://localhost/deployment', - 'username' => 'xxxxxxx', - 'userPassword' => '', - 'testBrowser' => 'chrome', - 'startserver' => null, - 'stopserver' => null, - 'seleniumserverexecpath' => null, - 'jUnitLogFile' => null, - 'runAgainstGrid' => null - ); - /** - * Array of expected testSuites from $testConfig0 - */ - private $testSuites0 = array( - 'SimpleSeleniumTestSuite' => 'tests/selenium/SimpleSeleniumTestSuite.php', - 'TestSuiteName' => 'testSuitePath' - ); - - /** - * Another sample selenium settings file contents - */ - private $testConfig1 = - ' -[SeleniumSettings] -host = "localhost" -testBrowser = "firefox" -'; - /** - * Expected browsers from $testConfig1 - */ - private $testBrowsers1 = null; - /** - * Expected selenium settings from $testConfig1 - */ - private $testSettings1 = array( - 'host' => 'localhost', - 'port' => null, - 'wikiUrl' => null, - 'username' => null, - 'userPassword' => null, - 'testBrowser' => 'firefox', - 'startserver' => null, - 'stopserver' => null, - 'seleniumserverexecpath' => null, - 'jUnitLogFile' => null, - 'runAgainstGrid' => null - ); - /** - * Expected test suites from $testConfig1 - */ - private $testSuites1 = null; - - - protected function setUp() { - parent::setUp(); - if ( !defined( 'SELENIUMTEST' ) ) { - define( 'SELENIUMTEST', true ); - } - } - - /** - * Clean up the temporary file used to store the selenium settings. - */ - protected function tearDown() { - if ( strlen( $this->tempFileName ) > 0 ) { - unlink( $this->tempFileName ); - unset( $this->tempFileName ); - } - parent::tearDown(); - } - - /** - * @expectedException MWException - * @group SeleniumFramework - */ - public function testErrorOnIncorrectConfigFile() { - $seleniumSettings = array(); - $seleniumBrowsers = array(); - $seleniumTestSuites = array(); - - SeleniumConfig::getSeleniumSettings( $seleniumSettings, - $seleniumBrowsers, - $seleniumTestSuites, - "Some_fake_settings_file.ini" ); - } - - /** - * @expectedException MWException - * @group SeleniumFramework - */ - public function testErrorOnMissingConfigFile() { - $seleniumSettings = array(); - $seleniumBrowsers = array(); - $seleniumTestSuites = array(); - $this->setMwGlobals( 'wgSeleniumConfigFile', '' ); - - SeleniumConfig::getSeleniumSettings( $seleniumSettings, - $seleniumBrowsers, - $seleniumTestSuites ); - } - - /** - * @group SeleniumFramework - */ - public function testUsesGlobalVarForConfigFile() { - $seleniumSettings = array(); - $seleniumBrowsers = array(); - $seleniumTestSuites = array(); - $this->writeToTempFile( $this->testConfig0 ); - $this->setMwGlobals( 'wgSeleniumConfigFile', $this->tempFileName ); - - SeleniumConfig::getSeleniumSettings( $seleniumSettings, - $seleniumBrowsers, - $seleniumTestSuites ); - $this->assertEquals( $seleniumSettings, $this->testSettings0, - 'The selenium settings should have been read from the file defined in $wgSeleniumConfigFile' - ); - $this->assertEquals( $seleniumBrowsers, $this->testBrowsers0, - 'The available browsers should have been read from the file defined in $wgSeleniumConfigFile' - ); - $this->assertEquals( $seleniumTestSuites, $this->testSuites0, - 'The test suites should have been read from the file defined in $wgSeleniumConfigFile' - ); - } - - /** - * @group SeleniumFramework - * @dataProvider sampleConfigs - */ - public function testgetSeleniumSettings( $sampleConfig, $expectedSettings, $expectedBrowsers, $expectedSuites ) { - $this->writeToTempFile( $sampleConfig ); - $seleniumSettings = array(); - $seleniumBrowsers = array(); - $seleniumTestSuites = null; - - SeleniumConfig::getSeleniumSettings( $seleniumSettings, - $seleniumBrowsers, - $seleniumTestSuites, - $this->tempFileName ); - - $this->assertEquals( $seleniumSettings, $expectedSettings, - "The selenium settings for the following test configuration was not retrieved correctly" . $sampleConfig - ); - $this->assertEquals( $seleniumBrowsers, $expectedBrowsers, - "The available browsers for the following test configuration was not retrieved correctly" . $sampleConfig - ); - $this->assertEquals( $seleniumTestSuites, $expectedSuites, - "The test suites for the following test configuration was not retrieved correctly" . $sampleConfig - ); - } - - /** - * create a temp file and write text to it. - * @param $testToWrite the text to write to the temp file - */ - private function writeToTempFile( $textToWrite ) { - $this->tempFileName = tempnam( sys_get_temp_dir(), 'test_settings.' ); - $tempFile = fopen( $this->tempFileName, "w" ); - fwrite( $tempFile, $textToWrite ); - fclose( $tempFile ); - } - - /** - * Returns an array containing: - * The contents of the selenium cingiguration ini file - * The expected selenium configuration array that getSeleniumSettings should return - * The expected available browsers array that getSeleniumSettings should return - * The expected test suites arrya that getSeleniumSettings should return - */ - public function sampleConfigs() { - return array( - array( $this->testConfig0, $this->testSettings0, $this->testBrowsers0, $this->testSuites0 ), - array( $this->testConfig1, $this->testSettings1, $this->testBrowsers1, $this->testSuites1 ) - ); - } -} diff --git a/tests/selenium/Selenium.php b/tests/selenium/Selenium.php deleted file mode 100644 index 935d692d28..0000000000 --- a/tests/selenium/Selenium.php +++ /dev/null @@ -1,191 +0,0 @@ -tester = new Testing_Selenium( $this->browser, self::$url, $this->host, - $this->port, $this->timeout ); - if ( method_exists( $this->tester, "setVerbose" ) ) { - $this->tester->setVerbose( $this->verbose ); - } - - $this->tester->start(); - $this->isStarted = true; - } - - public function stop() { - $this->tester->stop(); - $this->tester = null; - $this->isStarted = false; - } - - public function login() { - if ( strlen( $this->user ) == 0 ) { - return; - } - $this->open( self::$url . '/index.php?title=Special:Userlogin' ); - $this->type( 'wpName1', $this->user ); - $this->type( 'wpPassword1', $this->pass ); - $this->click( "//input[@id='wpLoginAttempt']" ); - $this->waitForPageToLoad( 10000 ); - - // after login we redirect to the main page. So check whether the "Prefernces" top menu item exists - $value = $this->isElementPresent( "//li[@id='pt-preferences']" ); - - if ( $value != true ) { - throw new Testing_Selenium_Exception( "Login Failed" ); - } - - } - - public static function getInstance() { - if ( null === self::$_instance ) { - throw new MWException( "No instance set yet" ); - } - - return self::$_instance; - } - - public function loadPage( $title, $action ) { - $this->open( self::$url . '/index.php?title=' . $title . '&action=' . $action ); - } - - public function setLogger( $logger ) { - $this->logger = $logger; - } - - public function getLogger() { - return $this->logger; - } - - public function log( $message ) { - $this->logger->write( $message ); - } - - public function setUrl( $url ) { - self::$url = $url; - } - - public static function getUrl() { - return self::$url; - } - - public function setPort( $port ) { - $this->port = $port; - } - - public function getPort() { - return $this->port; - } - - public function setUser( $user ) { - $this->user = $user; - } - - // Function to get username - public function getUser() { - return $this->user; - } - - - public function setPass( $pass ) { - $this->pass = $pass; - } - - //add function to get password - public function getPass() { - return $this->pass; - } - - public function setHost( $host ) { - $this->host = $host; - } - - public function setVerbose( $verbose ) { - $this->verbose = $verbose; - } - - public function setAvailableBrowsers( $availableBrowsers ) { - $this->browsers = $availableBrowsers; - } - - public function setJUnitLogfile( $junitlogfile ) { - $this->junitlogfile = $junitlogfile; - } - - public function getJUnitLogfile() { - return $this->junitlogfile; - } - - public function setRunAgainstGrid( $runagainstgrid ) { - $this->runagainstgrid = $runagainstgrid; - } - - public function setBrowser( $b ) { - if ( $this->runagainstgrid ) { - $this->browser = $b; - return true; - } - if ( !isset( $this->browsers[$b] ) ) { - throw new MWException( "Invalid Browser: $b.\n" ); - } - - $this->browser = $this->browsers[$b]; - } - - public function getAvailableBrowsers() { - return $this->browsers; - } - - public function __call( $name, $args ) { - $t = call_user_func_array( array( $this->tester, $name ), $args ); - return $t; - } - - // Prevent external cloning - protected function __clone() {} - // Prevent external construction - // protected function __construct() {} -} diff --git a/tests/selenium/SeleniumConfig.php b/tests/selenium/SeleniumConfig.php deleted file mode 100644 index 0823275c17..0000000000 --- a/tests/selenium/SeleniumConfig.php +++ /dev/null @@ -1,80 +0,0 @@ - false, 'true' => true, 'null' => null ); - list( $key, $value ) = explode( '=', $iniLine, 2 ); - $key = trim( $key ); - $value = trim( $value ); - - if ( isset( $specialValues[$value] ) ) { - $value = $specialValues[$value]; - } else { - $value = trim( $value, '"' ); - } - - /* Support one-level arrays */ - if ( preg_match( '/^([A-Za-z]+)\[([A-Za-z]+)\]/', $key, $m ) ) { - $key = $m[1]; - $value = array( $m[2] => $value ); - } - - return array( $key => $value ); - } -} diff --git a/tests/selenium/SeleniumLoader.php b/tests/selenium/SeleniumLoader.php deleted file mode 100644 index 1a860f4b72..0000000000 --- a/tests/selenium/SeleniumLoader.php +++ /dev/null @@ -1,9 +0,0 @@ - - * http://citizendium.org/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * http://www.gnu.org/copyleft/gpl.html - */ - -class SeleniumServerManager { - private $SeleniumStartServer = false; - private $OS = ''; - private $SeleniumServerPid = 'NaN'; - private $SeleniumServerPort = 4444; - private $SeleniumServerStartTimeout = 10; // 10 secs. - private $SeleniumServerExecPath; - - public function __construct( $startServer, - $serverPort, - $serverExecPath ) { - $this->OS = (string)PHP_OS; - - if ( isset( $startServer ) ) { - $this->SeleniumStartServer = $startServer; - } - - if ( isset( $serverPort ) ) { - $this->SeleniumServerPort = $serverPort; - } - - if ( isset( $serverExecPath ) ) { - $this->SeleniumServerExecPath = $serverExecPath; - } - - return; - } - - // Getters for certain private attributes. No setters, since they - // should not change after the manager object is created. - - public function getSeleniumStartServer() { - return $this->SeleniumStartServer; - } - - public function getSeleniumServerPort() { - return $this->SeleniumServerPort; - } - - public function getSeleniumServerPid() { - return $this->SeleniumServerPid; - } - - // Changing value of SeleniumStartServer allows starting server after - // creation of the class instance. Only allow setting SeleniumStartServer - // to true, since after server is started, it is shut down by stop(). - - public function setSeleniumStartServer( $startServer ) { - if ( $startServer == true ) { - $this->SeleniumStartServer = true; - } - } - - // return values are: 1) started - server started, 2) failed - - // server not started, 3) running - instructed to start server, but - // server already running - - public function start() { - - if ( !$this->SeleniumStartServer ) { - return 'failed'; - } - - // commented out cases are untested - - switch ( $this->OS ) { - case "Linux": -# case' CYGWIN_NT-5.1': - case 'Darwin': -# case 'FreeBSD': -# case 'HP-UX': -# case 'IRIX64': -# case 'NetBSD': -# case 'OpenBSD': -# case 'SunOS': -# case 'Unix': - // *nix based OS - return $this->startServerOnUnix(); - break; - case "Windows": - case "WIN32": - case "WINNT": - // Windows - return $this->startServerOnWindows(); - break; - default: - // An untested OS - return 'failed'; - break; - } - } - - public function stop() { - - // commented out cases are untested - - switch ( $this->OS ) { - case "Linux": -# case' CYGWIN_NT-5.1': - case 'Darwin': -# case 'FreeBSD': -# case 'HP-UX': -# case 'IRIX64': -# case 'NetBSD': -# case 'OpenBSD': -# case 'SunOS': -# case 'Unix': - // *nix based OS - return $this->stopServerOnUnix(); - break; - case "Windows": - case "WIN32": - case "WINNT": - // Windows - return $this->stopServerOnWindows(); - break; - default: - // An untested OS - return 'failed'; - break; - } - } - - private function startServerOnUnix() { - - $output = array(); - $user = $_ENV['USER']; - // @todo FIXME: This should be a little more generalized :) - if ( PHP_OS == 'Darwin' ) { - // Mac OS X's ps barfs on the 'w' param, but doesn't need it. - $ps = "ps -U %s"; - } else { - // Good on Linux - $ps = "ps -U %s w"; - } - $psCommand = sprintf( $ps, escapeshellarg( $user ) ); - exec( $psCommand . " | grep -i selenium-server", $output ); - - // Start server. If there is already a server running, - // return running. - - if ( isset( $this->SeleniumServerExecPath ) ) { - $found = 0; - foreach ( $output as $string ) { - $found += preg_match( - '~^(.*)java(.+)-jar(.+)selenium-server~', - $string ); - } - if ( $found == 0 ) { - - // Didn't find the selenium server. Start it up. - // First set up comamand line suffix. - // NB: $! is pid of last job run in background - // The echo guarentees it is put into $op when - // the exec command is run. - - $commandSuffix = ' > /dev/null 2>&1' . ' & echo $!'; - $portText = ' -port ' . $this->SeleniumServerPort; - $command = "java -jar " . - escapeshellarg( $this->SeleniumServerExecPath ) . - $portText . $commandSuffix; - exec( $command, $op ); - $pid = (int)$op[0]; - if ( $pid != "" ) { - $this->SeleniumServerPid = $pid; - } else { - $this->SeleniumServerPid = 'NaN'; - // Server start failed. - return 'failed'; - } - // Wait for the server to startup and listen - // on its port. Note: this solution kinda - // stinks, since it uses a wait loop - dnessett - - wfSuppressWarnings(); - for ( $cnt = 1; - $cnt <= $this->SeleniumServerStartTimeout; - $cnt++ ) { - $fp = fsockopen( 'localhost', - $this->SeleniumServerPort, - $errno, $errstr, 0 ); - if ( !$fp ) { - sleep( 1 ); - continue; - // Server start succeeded. - } else { - fclose( $fp ); - return 'started'; - } - } - wfRestoreWarnings(); - echo "Starting Selenium server timed out.\n"; - return 'failed'; - } else { - // server already running. - return 'running'; - } - - } - - // No Server execution path defined. - return 'failed'; - } - - private function startServerOnWindows() { - // Unimplemented. - return 'failed'; - } - - private function stopServerOnUnix() { - - if ( !empty( $this->SeleniumServerPid ) && - $this->SeleniumServerPid != 'NaN' - ) { - exec( "kill -9 " . $this->SeleniumServerPid ); - return 'stopped'; - } else { - return 'failed'; - } - } - - private function stopServerOnWindows() { - // Unimplemented. - return 'failed'; - - } -} diff --git a/tests/selenium/SeleniumTestCase.php b/tests/selenium/SeleniumTestCase.php deleted file mode 100644 index a2676caf2b..0000000000 --- a/tests/selenium/SeleniumTestCase.php +++ /dev/null @@ -1,127 +0,0 @@ -selenium = Selenium::getInstance(); - } - - public function tearDown() { - - } - - public function __call( $method, $args ) { - return call_user_func_array( array( $this->selenium, $method ), $args ); - } - - public function assertSeleniumAttributeEquals( $attribute, $value ) { - $attr = $this->getAttribute( $attribute ); - $this->assertEquals( $attr, $value ); - } - - public function assertSeleniumHTMLContains( $element, $text ) { - $innerHTML = $this->getText( $element ); - // or assertContains - $this->assertRegExp( "/$text/", $innerHTML ); - } - - - /** - * Create a test fixture page if one does not exist - * @param $pageName The fixture page name. If none is supplied, it uses SeleniumTestConstants::WIKI_INTERNAL_LINK - */ - function createTestPageIfMissing( $pageName = null ) { - if ( $pageName == null ) { - $pageName = SeleniumTestConstants::WIKI_INTERNAL_LINK; - } - $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $pageName ); - $this->click( SeleniumTestConstants::BUTTON_SEARCH ); - $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME ); - $this->click( SeleniumTestConstants::LINK_START . $pageName ); - $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME ); - $location = $this->getLocation() . "\n"; - if ( strpos( $location, '&redlink=1' ) !== false ) { - $this->type( SeleniumTestConstants::TEXT_EDITOR, "Test fixture page. No real content here" ); - $this->click( SeleniumTestConstants::BUTTON_SAVE ); - $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME ); - $this->assertTrue( $this->isTextPresent( $pageName ), - $this->getText( SeleniumTestConstants::TEXT_PAGE_HEADING ) ); - } - } - - /** - * Create a test page using date as part of the name so that it is unique - * @param $pagePrefix The prefix to use for the page name. The current date will be appended to this to make it unique - * @param $watchThis Whether to add the page to my watchlist. Defaults to false. - */ - function createNewTestPage( $pagePrefix, $watchThis = false ) { - $pageName = $pagePrefix . date( "Ymd-His" ); - $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $pageName ); - $this->click( SeleniumTestConstants::BUTTON_SEARCH ); - $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME ); - $this->click( SeleniumTestConstants::LINK_START . $pageName ); - $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME ); - $location = $this->getLocation() . "\n"; - $this->assertContains( '&redlink=1', $location ) . - $this->type( SeleniumTestConstants::TEXT_EDITOR, "Test fixture page. No real content here" ); - if ( $watchThis ) { - $this->click( "wpWatchthis" ); - } - $this->click( SeleniumTestConstants::BUTTON_SAVE ); - $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME ); - $this->assertTrue( $this->isTextPresent( $pageName ), - $this->getText( SeleniumTestConstants::TEXT_PAGE_HEADING ) ); - return $pageName; - } - - public function getExistingPage() { - $this->open( $this->getUrl() . - '/index.php?title=Main_Page&action=edit' ); - $this->type( "searchInput", "new" ); - $this->click( "searchGoButton" ); - $this->waitForPageToLoad( "30000" ); - } - - public function getNewPage( $pageName ) { - - $this->open( $this->getUrl() . - '/index.php?title=Main_Page&action=edit' ); - $this->type( "searchInput", $pageName ); - $this->click( "searchGoButton" ); - $this->waitForPageToLoad( "30000" ); - $this->click( "link=" . $pageName ); - $this->waitForPageToLoad( "600000" ); - - - } - - // Loading the mediawiki editor - public function loadWikiEditor() { - $this->open( $this->getUrl() . - '/index.php?title=Main_Page&action=edit' ); - } - - // Clear the content of the mediawiki editor - public function clearWikiEditor() { - $this->type( "wpTextbox1", "" ); - } - - // Click on the 'Show preview' button of the mediawiki editor - public function clickShowPreviewBtn() { - $this->click( "wpPreview" ); - } - - // Click on the 'Save Page' button of the mediawiki editor - public function clickSavePageBtn() { - $this->click( "wpSave" ); - } - - // Click on the 'Edit' link - public function clickEditLink() { - $this->click( "link=Edit" ); - $this->waitForPageToLoad( "30000" ); - } -} diff --git a/tests/selenium/SeleniumTestConsoleLogger.php b/tests/selenium/SeleniumTestConsoleLogger.php deleted file mode 100644 index b6f5496ce9..0000000000 --- a/tests/selenium/SeleniumTestConsoleLogger.php +++ /dev/null @@ -1,25 +0,0 @@ -'; - $out .= htmlentities( $message ); - // if ( $mode == SeleniumTestSuite::RESULT_OK ) $out .= ''; - if ( $mode != SeleniumTestSuite::CONTINUE_LINE ) { - $out .= "\n"; - } - - echo $out; - } -} diff --git a/tests/selenium/SeleniumTestConstants.php b/tests/selenium/SeleniumTestConstants.php deleted file mode 100644 index 1defb73c3f..0000000000 --- a/tests/selenium/SeleniumTestConstants.php +++ /dev/null @@ -1,24 +0,0 @@ -addHeadItem( 'selenium', '' ); - } - - public function write( $message, $mode = false ) { - global $wgOut; - $out = ''; - if ( $mode == SeleniumTestSuite::RESULT_OK ) { - $out .= ''; - } - $out .= htmlspecialchars( $message ); - if ( $mode == SeleniumTestSuite::RESULT_OK ) { - $out .= ''; - } - if ( $mode != SeleniumTestSuite::CONTINUE_LINE ) { - $out .= '
'; - } - - $wgOut->addHTML( $out ); - } -} diff --git a/tests/selenium/SeleniumTestListener.php b/tests/selenium/SeleniumTestListener.php deleted file mode 100644 index dc0ac66c41..0000000000 --- a/tests/selenium/SeleniumTestListener.php +++ /dev/null @@ -1,65 +0,0 @@ -logger = $loggerInstance; - } - - public function addError( PHPUnit_Framework_Test $test, Exception $e, $time ) { - $this->logger->write( 'Error: ' . $e->getMessage() ); - $this->tests_failed++; - } - - public function addFailure( PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time ) { - $this->logger->write( 'Failed: ' . $e->getMessage() ); - $this->tests_failed++; - } - - public function addIncompleteTest( PHPUnit_Framework_Test $test, Exception $e, $time ) { - $this->logger->write( 'Incomplete.' ); - $this->tests_failed++; - } - - public function addSkippedTest( PHPUnit_Framework_Test $test, Exception $e, $time ) { - $this->logger->write( 'Skipped.' ); - $this->tests_failed++; - } - - public function startTest( PHPUnit_Framework_Test $test ) { - $this->logger->write( - 'Testing ' . $test->getName() . ' ... ', - SeleniumTestSuite::CONTINUE_LINE - ); - } - - public function endTest( PHPUnit_Framework_Test $test, $time ) { - if ( !$test->hasFailed() ) { - $this->logger->write( 'OK', SeleniumTestSuite::RESULT_OK ); - $this->tests_ok++; - } - } - - public function startTestSuite( PHPUnit_Framework_TestSuite $suite ) { - $this->logger->write( 'Testsuite ' . $suite->getName() . ' started.' ); - $this->tests_ok = 0; - $this->tests_failed = 0; - } - - public function endTestSuite( PHPUnit_Framework_TestSuite $suite ) { - $this->logger->write( 'Testsuite ' . $suite->getName() . ' ended.' ); - if ( $this->tests_ok > 0 || $this->tests_failed > 0 ) { - $this->logger->write( ' OK: ' . $this->tests_ok . ' Failed: ' . $this->tests_failed ); - } - $this->tests_ok = 0; - $this->tests_failed = 0; - } - - public function statusMessage( $message ) { - $this->logger->write( $message ); - } -} - diff --git a/tests/selenium/SeleniumTestSuite.php b/tests/selenium/SeleniumTestSuite.php deleted file mode 100644 index 8c21f21c69..0000000000 --- a/tests/selenium/SeleniumTestSuite.php +++ /dev/null @@ -1,57 +0,0 @@ -isSetUp ) { - return; - } - $this->isSetUp = true; - $this->selenium = Selenium::getInstance(); - $this->selenium->start(); - if ( $this->triggerClientTestResources ) { - $this->selenium->open( $this->selenium->getUrl() . '/index.php?setupTestSuite=' . $this->getName() ); - //wait a little longer for the db operation - $this->selenium->waitForPageToLoad( 6000 ); - } - if ( $this->loginBeforeTests ) { - $this->login(); - } - } - - public function tearDown() { - if ( $this->triggerClientTestResources ) { - $this->selenium->open( $this->selenium->getUrl() . '/index.php?clearTestSuite=' . $this->getName() ); - } - $this->selenium->stop(); - } - - public function login() { - $this->selenium->login(); - } - - public function loadPage( $title, $action ) { - $this->selenium->loadPage( $title, $action ); - } - - protected function setLoginBeforeTests( $loginBeforeTests = true ) { - $this->loginBeforeTests = $loginBeforeTests; - } - - protected function setTriggerClientTestResources( $triggerClientTestResources = true ) { - $this->triggerClientTestResources = $triggerClientTestResources; - } -} diff --git a/tests/selenium/data/SimpleSeleniumTestDB.sql b/tests/selenium/data/SimpleSeleniumTestDB.sql deleted file mode 100644 index 99ae477931..0000000000 --- a/tests/selenium/data/SimpleSeleniumTestDB.sql +++ /dev/null @@ -1,1453 +0,0 @@ --- MySQL dump 10.13 Distrib 5.1.41, for debian-linux-gnu (x86_64) --- --- Host: localhost Database: test_wiki --- ------------------------------------------------------ --- Server version 5.1.41-3ubuntu12.7 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `mw_archive` --- - -DROP TABLE IF EXISTS `mw_archive`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_archive` ( - `ar_namespace` int(11) NOT NULL DEFAULT '0', - `ar_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', - `ar_text` mediumblob NOT NULL, - `ar_comment` tinyblob NOT NULL, - `ar_user` int(10) unsigned NOT NULL DEFAULT '0', - `ar_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, - `ar_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `ar_minor_edit` tinyint(4) NOT NULL DEFAULT '0', - `ar_flags` tinyblob NOT NULL, - `ar_rev_id` int(10) unsigned DEFAULT NULL, - `ar_text_id` int(10) unsigned DEFAULT NULL, - `ar_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0', - `ar_len` int(10) unsigned DEFAULT NULL, - `ar_page_id` int(10) unsigned DEFAULT NULL, - `ar_parent_id` int(10) unsigned DEFAULT NULL, - KEY `name_title_timestamp` (`ar_namespace`,`ar_title`,`ar_timestamp`), - KEY `usertext_timestamp` (`ar_user_text`,`ar_timestamp`), - KEY `ar_revid` (`ar_rev_id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_archive` --- - -LOCK TABLES `mw_archive` WRITE; -/*!40000 ALTER TABLE `mw_archive` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_archive` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_category` --- - -DROP TABLE IF EXISTS `mw_category`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_category` ( - `cat_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `cat_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, - `cat_pages` int(11) NOT NULL DEFAULT '0', - `cat_subcats` int(11) NOT NULL DEFAULT '0', - `cat_files` int(11) NOT NULL DEFAULT '0', - `cat_hidden` tinyint(3) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`cat_id`), - UNIQUE KEY `cat_title` (`cat_title`), - KEY `cat_pages` (`cat_pages`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_category` --- - -LOCK TABLES `mw_category` WRITE; -/*!40000 ALTER TABLE `mw_category` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_category` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_categorylinks` --- - -DROP TABLE IF EXISTS `mw_categorylinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_categorylinks` ( - `cl_from` int(10) unsigned NOT NULL DEFAULT '0', - `cl_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', - `cl_sortkey` varbinary(230) NOT NULL DEFAULT '', - `cl_sortkey_prefix` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', - `cl_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `cl_collation` varbinary(32) NOT NULL DEFAULT '', - `cl_type` enum('page','subcat','file') NOT NULL DEFAULT 'page', - UNIQUE KEY `cl_from` (`cl_from`,`cl_to`), - KEY `cl_sortkey` (`cl_to`,`cl_type`,`cl_sortkey`,`cl_from`), - KEY `cl_timestamp` (`cl_to`,`cl_timestamp`), - KEY `cl_collation` (`cl_collation`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_categorylinks` --- - -LOCK TABLES `mw_categorylinks` WRITE; -/*!40000 ALTER TABLE `mw_categorylinks` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_categorylinks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_change_tag` --- - -DROP TABLE IF EXISTS `mw_change_tag`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_change_tag` ( - `ct_rc_id` int(11) DEFAULT NULL, - `ct_log_id` int(11) DEFAULT NULL, - `ct_rev_id` int(11) DEFAULT NULL, - `ct_tag` varchar(255) NOT NULL, - `ct_params` blob, - UNIQUE KEY `change_tag_rc_tag` (`ct_rc_id`,`ct_tag`), - UNIQUE KEY `change_tag_log_tag` (`ct_log_id`,`ct_tag`), - UNIQUE KEY `change_tag_rev_tag` (`ct_rev_id`,`ct_tag`), - KEY `change_tag_tag_id` (`ct_tag`,`ct_rc_id`,`ct_rev_id`,`ct_log_id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_change_tag` --- - -LOCK TABLES `mw_change_tag` WRITE; -/*!40000 ALTER TABLE `mw_change_tag` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_change_tag` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_external_user` --- - -DROP TABLE IF EXISTS `mw_external_user`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_external_user` ( - `eu_local_id` int(10) unsigned NOT NULL, - `eu_external_id` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, - PRIMARY KEY (`eu_local_id`), - UNIQUE KEY `eu_external_id` (`eu_external_id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_external_user` --- - -LOCK TABLES `mw_external_user` WRITE; -/*!40000 ALTER TABLE `mw_external_user` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_external_user` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_externallinks` --- - -DROP TABLE IF EXISTS `mw_externallinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_externallinks` ( - `el_from` int(10) unsigned NOT NULL DEFAULT '0', - `el_to` blob NOT NULL, - `el_index` blob NOT NULL, - KEY `el_from` (`el_from`,`el_to`(40)), - KEY `el_to` (`el_to`(60),`el_from`), - KEY `el_index` (`el_index`(60)) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_externallinks` --- - -LOCK TABLES `mw_externallinks` WRITE; -/*!40000 ALTER TABLE `mw_externallinks` DISABLE KEYS */; -INSERT INTO `mw_externallinks` VALUES (1,'http://meta.wikimedia.org/wiki/Help:Contents','http://org.wikimedia.meta./wiki/Help:Contents'),(1,'http://www.mediawiki.org/wiki/Manual:Configuration_settings','http://org.mediawiki.www./wiki/Manual:Configuration_settings'),(1,'http://www.mediawiki.org/wiki/Manual:FAQ','http://org.mediawiki.www./wiki/Manual:FAQ'),(1,'https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce','https://org.wikimedia.lists./mailman/listinfo/mediawiki-announce'); -/*!40000 ALTER TABLE `mw_externallinks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_filearchive` --- - -DROP TABLE IF EXISTS `mw_filearchive`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_filearchive` ( - `fa_id` int(11) NOT NULL AUTO_INCREMENT, - `fa_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', - `fa_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT '', - `fa_storage_group` varbinary(16) DEFAULT NULL, - `fa_storage_key` varbinary(64) DEFAULT '', - `fa_deleted_user` int(11) DEFAULT NULL, - `fa_deleted_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `fa_deleted_reason` text, - `fa_size` int(10) unsigned DEFAULT '0', - `fa_width` int(11) DEFAULT '0', - `fa_height` int(11) DEFAULT '0', - `fa_metadata` mediumblob, - `fa_bits` int(11) DEFAULT '0', - `fa_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL, - `fa_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') DEFAULT 'unknown', - `fa_minor_mime` varbinary(100) DEFAULT 'unknown', - `fa_description` tinyblob, - `fa_user` int(10) unsigned DEFAULT '0', - `fa_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL, - `fa_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `fa_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`fa_id`), - KEY `fa_name` (`fa_name`,`fa_timestamp`), - KEY `fa_storage_group` (`fa_storage_group`,`fa_storage_key`), - KEY `fa_deleted_timestamp` (`fa_deleted_timestamp`), - KEY `fa_user_timestamp` (`fa_user_text`,`fa_timestamp`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_filearchive` --- - -LOCK TABLES `mw_filearchive` WRITE; -/*!40000 ALTER TABLE `mw_filearchive` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_filearchive` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_hitcounter` --- - -DROP TABLE IF EXISTS `mw_hitcounter`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_hitcounter` ( - `hc_id` int(10) unsigned NOT NULL -) ENGINE=MEMORY DEFAULT CHARSET=latin1 MAX_ROWS=25000; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_hitcounter` --- - -LOCK TABLES `mw_hitcounter` WRITE; -/*!40000 ALTER TABLE `mw_hitcounter` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_hitcounter` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_image` --- - -DROP TABLE IF EXISTS `mw_image`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_image` ( - `img_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', - `img_size` int(10) unsigned NOT NULL DEFAULT '0', - `img_width` int(11) NOT NULL DEFAULT '0', - `img_height` int(11) NOT NULL DEFAULT '0', - `img_metadata` mediumblob NOT NULL, - `img_bits` int(11) NOT NULL DEFAULT '0', - `img_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL, - `img_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown', - `img_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown', - `img_description` tinyblob NOT NULL, - `img_user` int(10) unsigned NOT NULL DEFAULT '0', - `img_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, - `img_timestamp` varbinary(14) NOT NULL DEFAULT '', - `img_sha1` varbinary(32) NOT NULL DEFAULT '', - PRIMARY KEY (`img_name`), - KEY `img_usertext_timestamp` (`img_user_text`,`img_timestamp`), - KEY `img_size` (`img_size`), - KEY `img_timestamp` (`img_timestamp`), - KEY `img_sha1` (`img_sha1`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_image` --- - -LOCK TABLES `mw_image` WRITE; -/*!40000 ALTER TABLE `mw_image` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_image` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_imagelinks` --- - -DROP TABLE IF EXISTS `mw_imagelinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_imagelinks` ( - `il_from` int(10) unsigned NOT NULL DEFAULT '0', - `il_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', - UNIQUE KEY `il_from` (`il_from`,`il_to`), - UNIQUE KEY `il_to` (`il_to`,`il_from`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_imagelinks` --- - -LOCK TABLES `mw_imagelinks` WRITE; -/*!40000 ALTER TABLE `mw_imagelinks` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_imagelinks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_interwiki` --- - -DROP TABLE IF EXISTS `mw_interwiki`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_interwiki` ( - `iw_prefix` varchar(32) NOT NULL, - `iw_url` blob NOT NULL, - `iw_api` blob NOT NULL, - `iw_wikiid` varchar(64) NOT NULL, - `iw_local` tinyint(1) NOT NULL, - `iw_trans` tinyint(4) NOT NULL DEFAULT '0', - UNIQUE KEY `iw_prefix` (`iw_prefix`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_interwiki` --- - -LOCK TABLES `mw_interwiki` WRITE; -/*!40000 ALTER TABLE `mw_interwiki` DISABLE KEYS */; -INSERT INTO `mw_interwiki` VALUES ('acronym','http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=$1','','',0,0),('advogato','http://www.advogato.org/$1','','',0,0),('annotationwiki','http://www.seedwiki.com/page.cfm?wikiid=368&doc=$1','','',0,0),('arxiv','http://www.arxiv.org/abs/$1','','',0,0),('c2find','http://c2.com/cgi/wiki?FindPage&value=$1','','',0,0),('cache','http://www.google.com/search?q=cache:$1','','',0,0),('commons','http://commons.wikimedia.org/wiki/$1','','',0,0),('corpknowpedia','http://corpknowpedia.org/wiki/index.php/$1','','',0,0),('dictionary','http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1','','',0,0),('disinfopedia','http://www.disinfopedia.org/wiki.phtml?title=$1','','',0,0),('docbook','http://wiki.docbook.org/topic/$1','','',0,0),('doi','http://dx.doi.org/$1','','',0,0),('drumcorpswiki','http://www.drumcorpswiki.com/index.php/$1','','',0,0),('dwjwiki','http://www.suberic.net/cgi-bin/dwj/wiki.cgi?$1','','',0,0),('elibre','http://enciclopedia.us.es/index.php/$1','','',0,0),('emacswiki','http://www.emacswiki.org/cgi-bin/wiki.pl?$1','','',0,0),('foldoc','http://foldoc.org/?$1','','',0,0),('foxwiki','http://fox.wikis.com/wc.dll?Wiki~$1','','',0,0),('freebsdman','http://www.FreeBSD.org/cgi/man.cgi?apropos=1&query=$1','','',0,0),('gej','http://www.esperanto.de/cgi-bin/aktivikio/wiki.pl?$1','','',0,0),('gentoo-wiki','http://gentoo-wiki.com/$1','','',0,0),('google','http://www.google.com/search?q=$1','','',0,0),('googlegroups','http://groups.google.com/groups?q=$1','','',0,0),('hammondwiki','http://www.dairiki.org/HammondWiki/$1','','',0,0),('hewikisource','http://he.wikisource.org/wiki/$1','','',1,0),('hrwiki','http://www.hrwiki.org/index.php/$1','','',0,0),('imdb','http://us.imdb.com/Title?$1','','',0,0),('jargonfile','http://sunir.org/apps/meta.pl?wiki=JargonFile&redirect=$1','','',0,0),('jspwiki','http://www.jspwiki.org/wiki/$1','','',0,0),('keiki','http://kei.ki/en/$1','','',0,0),('kmwiki','http://kmwiki.wikispaces.com/$1','','',0,0),('linuxwiki','http://linuxwiki.de/$1','','',0,0),('lojban','http://www.lojban.org/tiki/tiki-index.php?page=$1','','',0,0),('lqwiki','http://wiki.linuxquestions.org/wiki/$1','','',0,0),('lugkr','http://lug-kr.sourceforge.net/cgi-bin/lugwiki.pl?$1','','',0,0),('mathsongswiki','http://SeedWiki.com/page.cfm?wikiid=237&doc=$1','','',0,0),('meatball','http://www.usemod.com/cgi-bin/mb.pl?$1','','',0,0),('mediawikiwiki','http://www.mediawiki.org/wiki/$1','','',0,0),('mediazilla','https://bugzilla.wikimedia.org/$1','','',1,0),('memoryalpha','http://www.memory-alpha.org/en/index.php/$1','','',0,0),('metawiki','http://sunir.org/apps/meta.pl?$1','','',0,0),('metawikimedia','http://meta.wikimedia.org/wiki/$1','','',0,0),('moinmoin','http://purl.net/wiki/moin/$1','','',0,0),('mozillawiki','http://wiki.mozilla.org/index.php/$1','','',0,0),('mw','http://www.mediawiki.org/wiki/$1','','',0,0),('oeis','http://www.research.att.com/cgi-bin/access.cgi/as/njas/sequences/eisA.cgi?Anum=$1','','',0,0),('openfacts','http://openfacts.berlios.de/index.phtml?title=$1','','',0,0),('openwiki','http://openwiki.com/?$1','','',0,0),('pmeg','http://www.bertilow.com/pmeg/$1.php','','',0,0),('ppr','http://c2.com/cgi/wiki?$1','','',0,0),('pythoninfo','http://wiki.python.org/moin/$1','','',0,0),('rfc','http://www.rfc-editor.org/rfc/rfc$1.txt','','',0,0),('s23wiki','http://is-root.de/wiki/index.php/$1','','',0,0),('seattlewiki','http://seattle.wikia.com/wiki/$1','','',0,0),('seattlewireless','http://seattlewireless.net/?$1','','',0,0),('senseislibrary','http://senseis.xmp.net/?$1','','',0,0),('sourceforge','http://sourceforge.net/$1','','',0,0),('squeak','http://wiki.squeak.org/squeak/$1','','',0,0),('susning','http://www.susning.nu/$1','','',0,0),('svgwiki','http://wiki.svg.org/$1','','',0,0),('tavi','http://tavi.sourceforge.net/$1','','',0,0),('tejo','http://www.tejo.org/vikio/$1','','',0,0),('theopedia','http://www.theopedia.com/$1','','',0,0),('tmbw','http://www.tmbw.net/wiki/$1','','',0,0),('tmnet','http://www.technomanifestos.net/?$1','','',0,0),('tmwiki','http://www.EasyTopicMaps.com/?page=$1','','',0,0),('twiki','http://twiki.org/cgi-bin/view/$1','','',0,0),('uea','http://www.tejo.org/uea/$1','','',0,0),('unreal','http://wiki.beyondunreal.com/wiki/$1','','',0,0),('usemod','http://www.usemod.com/cgi-bin/wiki.pl?$1','','',0,0),('vinismo','http://vinismo.com/en/$1','','',0,0),('webseitzwiki','http://webseitz.fluxent.com/wiki/$1','','',0,0),('why','http://clublet.com/c/c/why?$1','','',0,0),('wiki','http://c2.com/cgi/wiki?$1','','',0,0),('wikia','http://www.wikia.com/wiki/$1','','',0,0),('wikibooks','http://en.wikibooks.org/wiki/$1','','',1,0),('wikicities','http://www.wikia.com/wiki/$1','','',0,0),('wikif1','http://www.wikif1.org/$1','','',0,0),('wikihow','http://www.wikihow.com/$1','','',0,0),('wikimedia','http://wikimediafoundation.org/wiki/$1','','',0,0),('wikinews','http://en.wikinews.org/wiki/$1','','',1,0),('wikinfo','http://www.wikinfo.org/index.php/$1','','',0,0),('wikipedia','http://en.wikipedia.org/wiki/$1','','',1,0),('wikiquote','http://en.wikiquote.org/wiki/$1','','',1,0),('wikisource','http://wikisource.org/wiki/$1','','',1,0),('wikispecies','http://species.wikimedia.org/wiki/$1','','',1,0),('wikitravel','http://wikitravel.org/en/$1','','',0,0),('wikiversity','http://en.wikiversity.org/wiki/$1','','',1,0),('wikt','http://en.wiktionary.org/wiki/$1','','',1,0),('wiktionary','http://en.wiktionary.org/wiki/$1','','',1,0),('wlug','http://www.wlug.org.nz/$1','','',0,0),('zwiki','http://zwiki.org/$1','','',0,0),('zzz wiki','http://wiki.zzz.ee/index.php/$1','','',0,0); -/*!40000 ALTER TABLE `mw_interwiki` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_ipblocks` --- - -DROP TABLE IF EXISTS `mw_ipblocks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_ipblocks` ( - `ipb_id` int(11) NOT NULL AUTO_INCREMENT, - `ipb_address` tinyblob NOT NULL, - `ipb_user` int(10) unsigned NOT NULL DEFAULT '0', - `ipb_by` int(10) unsigned NOT NULL DEFAULT '0', - `ipb_by_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', - `ipb_reason` tinyblob NOT NULL, - `ipb_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `ipb_auto` tinyint(1) NOT NULL DEFAULT '0', - `ipb_anon_only` tinyint(1) NOT NULL DEFAULT '0', - `ipb_create_account` tinyint(1) NOT NULL DEFAULT '1', - `ipb_enable_autoblock` tinyint(1) NOT NULL DEFAULT '1', - `ipb_expiry` varbinary(14) NOT NULL DEFAULT '', - `ipb_range_start` tinyblob NOT NULL, - `ipb_range_end` tinyblob NOT NULL, - `ipb_deleted` tinyint(1) NOT NULL DEFAULT '0', - `ipb_block_email` tinyint(1) NOT NULL DEFAULT '0', - `ipb_allow_usertalk` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`ipb_id`), - UNIQUE KEY `ipb_address` (`ipb_address`(255),`ipb_user`,`ipb_auto`,`ipb_anon_only`), - KEY `ipb_user` (`ipb_user`), - KEY `ipb_range` (`ipb_range_start`(8),`ipb_range_end`(8)), - KEY `ipb_timestamp` (`ipb_timestamp`), - KEY `ipb_expiry` (`ipb_expiry`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_ipblocks` --- - -LOCK TABLES `mw_ipblocks` WRITE; -/*!40000 ALTER TABLE `mw_ipblocks` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_ipblocks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_iwlinks` --- - -DROP TABLE IF EXISTS `mw_iwlinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_iwlinks` ( - `iwl_from` int(10) unsigned NOT NULL DEFAULT '0', - `iwl_prefix` varbinary(20) NOT NULL DEFAULT '', - `iwl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', - UNIQUE KEY `iwl_from` (`iwl_from`,`iwl_prefix`,`iwl_title`), - UNIQUE KEY `iwl_prefix_title_from` (`iwl_prefix`,`iwl_title`,`iwl_from`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_iwlinks` --- - -LOCK TABLES `mw_iwlinks` WRITE; -/*!40000 ALTER TABLE `mw_iwlinks` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_iwlinks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_job` --- - -DROP TABLE IF EXISTS `mw_job`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_job` ( - `job_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `job_cmd` varbinary(60) NOT NULL DEFAULT '', - `job_namespace` int(11) NOT NULL, - `job_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, - `job_params` blob NOT NULL, - PRIMARY KEY (`job_id`), - KEY `job_cmd` (`job_cmd`,`job_namespace`,`job_title`,`job_params`(128)) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_job` --- - -LOCK TABLES `mw_job` WRITE; -/*!40000 ALTER TABLE `mw_job` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_job` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_l10n_cache` --- - -DROP TABLE IF EXISTS `mw_l10n_cache`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_l10n_cache` ( - `lc_lang` varbinary(32) NOT NULL, - `lc_key` varchar(255) NOT NULL, - `lc_value` mediumblob NOT NULL, - KEY `lc_lang_key` (`lc_lang`,`lc_key`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_l10n_cache` --- - -LOCK TABLES `mw_l10n_cache` WRITE; -/*!40000 ALTER TABLE `mw_l10n_cache` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_l10n_cache` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_langlinks` --- - -DROP TABLE IF EXISTS `mw_langlinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_langlinks` ( - `ll_from` int(10) unsigned NOT NULL DEFAULT '0', - `ll_lang` varbinary(20) NOT NULL DEFAULT '', - `ll_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', - UNIQUE KEY `ll_from` (`ll_from`,`ll_lang`), - KEY `ll_lang` (`ll_lang`,`ll_title`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_langlinks` --- - -LOCK TABLES `mw_langlinks` WRITE; -/*!40000 ALTER TABLE `mw_langlinks` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_langlinks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_log_search` --- - -DROP TABLE IF EXISTS `mw_log_search`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_log_search` ( - `ls_field` varbinary(32) NOT NULL, - `ls_value` varchar(255) NOT NULL, - `ls_log_id` int(10) unsigned NOT NULL DEFAULT '0', - UNIQUE KEY `ls_field_val` (`ls_field`,`ls_value`,`ls_log_id`), - KEY `ls_log_id` (`ls_log_id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_log_search` --- - -LOCK TABLES `mw_log_search` WRITE; -/*!40000 ALTER TABLE `mw_log_search` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_log_search` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_logging` --- - -DROP TABLE IF EXISTS `mw_logging`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_logging` ( - `log_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `log_type` varbinary(32) NOT NULL DEFAULT '', - `log_action` varbinary(32) NOT NULL DEFAULT '', - `log_timestamp` binary(14) NOT NULL DEFAULT '19700101000000', - `log_user` int(10) unsigned NOT NULL DEFAULT '0', - `log_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', - `log_namespace` int(11) NOT NULL DEFAULT '0', - `log_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', - `log_page` int(10) unsigned DEFAULT NULL, - `log_comment` varchar(255) NOT NULL DEFAULT '', - `log_params` blob NOT NULL, - `log_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`log_id`), - KEY `type_time` (`log_type`,`log_timestamp`), - KEY `user_time` (`log_user`,`log_timestamp`), - KEY `page_time` (`log_namespace`,`log_title`,`log_timestamp`), - KEY `times` (`log_timestamp`), - KEY `log_user_type_time` (`log_user`,`log_type`,`log_timestamp`), - KEY `log_page_id_time` (`log_page`,`log_timestamp`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_logging` --- - -LOCK TABLES `mw_logging` WRITE; -/*!40000 ALTER TABLE `mw_logging` DISABLE KEYS */; -INSERT INTO `mw_logging` VALUES (1,'patrol','patrol','20110110173131',1,'WikiSysop',0,'TestResources',2,'','2\n0\n1',0); -/*!40000 ALTER TABLE `mw_logging` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_math` --- - -DROP TABLE IF EXISTS `mw_math`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_math` ( - `math_inputhash` varbinary(16) NOT NULL, - `math_outputhash` varbinary(16) NOT NULL, - `math_html_conservativeness` tinyint(4) NOT NULL, - `math_html` text, - `math_mathml` text, - UNIQUE KEY `math_inputhash` (`math_inputhash`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_math` --- - -LOCK TABLES `mw_math` WRITE; -/*!40000 ALTER TABLE `mw_math` DISABLE KEYS */; -/*!40000 ALTER TABLE `mw_math` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_module_deps` --- - -DROP TABLE IF EXISTS `mw_module_deps`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_module_deps` ( - `md_module` varbinary(255) NOT NULL, - `md_skin` varbinary(32) NOT NULL, - `md_deps` mediumblob NOT NULL, - UNIQUE KEY `md_module_skin` (`md_module`,`md_skin`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_module_deps` --- - -LOCK TABLES `mw_module_deps` WRITE; -/*!40000 ALTER TABLE `mw_module_deps` DISABLE KEYS */; -INSERT INTO `mw_module_deps` VALUES ('ext.vector.collapsibleNav','vector','[\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/portal-break.png\",\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/open.png\",\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/closed-ltr.png\"]'),('jquery.wikiEditor','vector','[\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading.gif\"]'),('jquery.wikiEditor.toolbar','vector','{\"0\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/base.png\",\"1\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading.gif\",\"2\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/button-sprite.png\",\"3\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-right.png\",\"4\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-left.png\",\"5\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-down.png\",\"7\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading-small.gif\"}'),('mediawiki.legacy.shared','vector','[\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/feed-icon.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/remove.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/add.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/ajax-loader.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/spinner.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/help-question.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/help-question-hover.gif\"]'),('skins.vector','vector','{\"0\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/page-base.png\",\"1\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/border.png\",\"2\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/page-fade.png\",\"4\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-break.png\",\"5\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-normal-fade.png\",\"6\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-current-fade.png\",\"8\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/arrow-down-icon.png\",\"11\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/search-fade.png\",\"12\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/portal-break.png\",\"14\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-break.png\",\"16\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-fade.png\",\"17\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-base.png\",\"18\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/bullet-icon.png\",\"19\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/external-link-ltr-icon.png\",\"20\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/lock-icon.png\",\"21\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/mail-icon.png\",\"22\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/news-icon.png\",\"23\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/file-icon.png\",\"24\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/talk-icon.png\",\"25\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/audio-icon.png\",\"26\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/video-icon.png\",\"27\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/document-icon.png\",\"28\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/user-icon.png\",\"29\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/watch-icons.png\",\"30\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/watch-icon-loading.gif\"}'); -/*!40000 ALTER TABLE `mw_module_deps` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mw_msg_resource` --- - -DROP TABLE IF EXISTS `mw_msg_resource`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mw_msg_resource` ( - `mr_resource` varbinary(255) NOT NULL, - `mr_lang` varbinary(32) NOT NULL, - `mr_blob` mediumblob NOT NULL, - `mr_timestamp` binary(14) NOT NULL, - UNIQUE KEY `mr_resource_lang` (`mr_resource`,`mr_lang`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mw_msg_resource` --- - -LOCK TABLES `mw_msg_resource` WRITE; -/*!40000 ALTER TABLE `mw_msg_resource` DISABLE KEYS */; -INSERT INTO `mw_msg_resource` VALUES ('ext.vector.collapsibleNav','en','{\"vector-collapsiblenav-more\":\"More languages\"}','20110108005000'),('ext.vector.collapsibleTabs','en','{}','20110108005000'),('ext.vector.simpleSearch','en','{\"vector-simplesearch-search\":\"Search\",\"vector-simplesearch-containing\":\"containing...\"}','20110108005000'),('ext.wikiEditor','en','{}','20110110172914'),('ext.wikiEditor.toolbar','en','{\"wikieditor-toolbar-loading\":\"Loading...\",\"wikieditor-toolbar-tool-bold\":\"Bold\",\"wikieditor-toolbar-tool-bold-example\":\"Bold text\",\"wikieditor-toolbar-tool-italic\":\"Italic\",\"wikieditor-toolbar-tool-italic-example\":\"Italic text\",\"wikieditor-toolbar-tool-ilink\":\"Internal link\",\"wikieditor-toolbar-tool-ilink-example\":\"Link title\",\"wikieditor-toolbar-tool-xlink\":\"External link (remember http:\\/\\/ prefix)\",\"wikieditor-toolbar-tool-xlink-example\":\"http:\\/\\/www.example.com link title\",\"wikieditor-toolbar-tool-link\":\"Link\",\"wikieditor-toolbar-tool-link-title\":\"Insert link\",\"wikieditor-toolbar-tool-link-int\":\"To a wiki page\",\"wikieditor-toolbar-tool-link-int-target\":\"Target page or URL:\",\"wikieditor-toolbar-tool-link-int-target-tooltip\":\"Page title or URL\",\"wikieditor-toolbar-tool-link-int-text\":\"Text to display:\",\"wikieditor-toolbar-tool-link-int-text-tooltip\":\"Text to be displayed\",\"wikieditor-toolbar-tool-link-ext\":\"To an external web page\",\"wikieditor-toolbar-tool-link-ext-target\":\"Link URL:\",\"wikieditor-toolbar-tool-link-ext-text\":\"Link text:\",\"wikieditor-toolbar-tool-link-insert\":\"Insert link\",\"wikieditor-toolbar-tool-link-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-link-int-target-status-exists\":\"Page exists\",\"wikieditor-toolbar-tool-link-int-target-status-notexists\":\"Page does not exist\",\"wikieditor-toolbar-tool-link-int-target-status-invalid\":\"Invalid title\",\"wikieditor-toolbar-tool-link-int-target-status-external\":\"External link\",\"wikieditor-toolbar-tool-link-int-target-status-loading\":\"Checking page existence...\",\"wikieditor-toolbar-tool-link-int-invalid\":\"The title you specified is invalid.\",\"wikieditor-toolbar-tool-link-lookslikeinternal\":\"The URL you specified looks like it was intended as a link to another wiki page.\\nDo you want to make it an internal link?\",\"wikieditor-toolbar-tool-link-lookslikeinternal-int\":\"Internal link\",\"wikieditor-toolbar-tool-link-lookslikeinternal-ext\":\"External link\",\"wikieditor-toolbar-tool-link-empty\":\"You did not enter anything to link to.\",\"wikieditor-toolbar-tool-file\":\"Embedded file\",\"wikieditor-toolbar-tool-file-pre\":\"$1{{ns:file}}:\",\"wikieditor-toolbar-tool-file-example\":\"Example.jpg\",\"wikieditor-toolbar-tool-reference\":\"Reference\",\"wikieditor-toolbar-tool-reference-title\":\"Insert reference\",\"wikieditor-toolbar-tool-reference-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-reference-text\":\"Reference text\",\"wikieditor-toolbar-tool-reference-insert\":\"Insert\",\"wikieditor-toolbar-tool-reference-example\":\"Insert footnote text here\",\"wikieditor-toolbar-tool-signature\":\"Signature and timestamp\",\"wikieditor-toolbar-section-advanced\":\"Advanced\",\"wikieditor-toolbar-tool-heading\":\"Heading\",\"wikieditor-toolbar-tool-heading-1\":\"Level 1\",\"wikieditor-toolbar-tool-heading-2\":\"Level 2\",\"wikieditor-toolbar-tool-heading-3\":\"Level 3\",\"wikieditor-toolbar-tool-heading-4\":\"Level 4\",\"wikieditor-toolbar-tool-heading-5\":\"Level 5\",\"wikieditor-toolbar-tool-heading-example\":\"Heading text\",\"wikieditor-toolbar-group-format\":\"Format\",\"wikieditor-toolbar-tool-ulist\":\"Bulleted list\",\"wikieditor-toolbar-tool-ulist-example\":\"Bulleted list item\",\"wikieditor-toolbar-tool-olist\":\"Numbered list\",\"wikieditor-toolbar-tool-olist-example\":\"Numbered list item\",\"wikieditor-toolbar-tool-indent\":\"Indentation\",\"wikieditor-toolbar-tool-indent-example\":\"Indented line\",\"wikieditor-toolbar-tool-nowiki\":\"No wiki formatting\",\"wikieditor-toolbar-tool-nowiki-example\":\"Insert non-formatted text here\",\"wikieditor-toolbar-tool-redirect\":\"Redirect\",\"wikieditor-toolbar-tool-redirect-example\":\"Target page name\",\"wikieditor-toolbar-tool-big\":\"Big\",\"wikieditor-toolbar-tool-big-example\":\"Big text\",\"wikieditor-toolbar-tool-small\":\"Small\",\"wikieditor-toolbar-tool-small-example\":\"Small text\",\"wikieditor-toolbar-tool-superscript\":\"Superscript\",\"wikieditor-toolbar-tool-superscript-example\":\"Superscript text\",\"wikieditor-toolbar-tool-subscript\":\"Subscript\",\"wikieditor-toolbar-tool-subscript-example\":\"Subscript text\",\"wikieditor-toolbar-group-insert\":\"Insert\",\"wikieditor-toolbar-tool-gallery\":\"Picture gallery\",\"wikieditor-toolbar-tool-gallery-example\":\"{{ns:file}}:Example.jpg|Caption1\\n{{ns:file}}:Example.jpg|Caption2\",\"wikieditor-toolbar-tool-newline\":\"New line\",\"wikieditor-toolbar-tool-table\":\"Table\",\"wikieditor-toolbar-tool-table-example-old\":\"-\\n! header 1\\n! header 2\\n! header 3\\n|-\\n| row 1, cell 1\\n| row 1, cell 2\\n| row 1, cell 3\\n|-\\n| row 2, cell 1\\n| row 2, cell 2\\n| row 2, cell 3\",\"wikieditor-toolbar-tool-table-example-cell-text\":\"Cell text\",\"wikieditor-toolbar-tool-table-example\":\"Example\",\"wikieditor-toolbar-tool-table-example-header\":\"Header text\",\"wikieditor-toolbar-tool-table-title\":\"Insert table\",\"wikieditor-toolbar-tool-table-dimensions-rows\":\"Rows\",\"wikieditor-toolbar-tool-table-dimensions-columns\":\"Columns\",\"wikieditor-toolbar-tool-table-dimensions-header\":\"Add header row\",\"wikieditor-toolbar-tool-table-wikitable\":\"Style with borders\",\"wikieditor-toolbar-tool-table-sortable\":\"Make table sortable\",\"wikieditor-toolbar-tool-table-insert\":\"Insert\",\"wikieditor-toolbar-tool-table-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-table-example-text\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut nec purus diam. Sed aliquam imperdiet nunc quis lacinia. Donec rutrum consectetur placerat. Sed volutpat neque non purus faucibus id ultricies enim euismod.\",\"wikieditor-toolbar-tool-table-toomany\":\"Inserting a table with more than $1 cells is not possible with this dialog.\",\"wikieditor-toolbar-tool-table-invalidnumber\":\"You have not entered a valid number of rows or columns.\",\"wikieditor-toolbar-tool-table-zero\":\"You cannot insert a table with zero rows or columns.\",\"wikieditor-toolbar-tool-replace\":\"Search and replace\",\"wikieditor-toolbar-tool-replace-title\":\"Search and replace\",\"wikieditor-toolbar-tool-replace-search\":\"Search for:\",\"wikieditor-toolbar-tool-replace-replace\":\"Replace with:\",\"wikieditor-toolbar-tool-replace-case\":\"Match case\",\"wikieditor-toolbar-tool-replace-regex\":\"Treat search string as a regular expression\",\"wikieditor-toolbar-tool-replace-button-findnext\":\"Find next\",\"wikieditor-toolbar-tool-replace-button-replacenext\":\"Replace next\",\"wikieditor-toolbar-tool-replace-button-replaceall\":\"Replace all\",\"wikieditor-toolbar-tool-replace-close\":\"Close\",\"wikieditor-toolbar-tool-replace-nomatch\":\"Your search did not match anything.\",\"wikieditor-toolbar-tool-replace-success\":\"$1 replacement(s) made.\",\"wikieditor-toolbar-tool-replace-emptysearch\":\"You did not enter anything to search for.\",\"wikieditor-toolbar-tool-replace-invalidregex\":\"The regular expression you entered is invalid: $1\",\"wikieditor-toolbar-section-characters\":\"Special characters\",\"wikieditor-toolbar-characters-page-latin\":\"Latin\",\"wikieditor-toolbar-characters-page-latinextended\":\"Latin extended\",\"wikieditor-toolbar-characters-page-ipa\":\"IPA\",\"wikieditor-toolbar-characters-page-symbols\":\"Symbols\",\"wikieditor-toolbar-characters-page-greek\":\"Greek\",\"wikieditor-toolbar-characters-page-cyrillic\":\"Cyrillic\",\"wikieditor-toolbar-characters-page-arabic\":\"Arabic\",\"wikieditor-toolbar-characters-page-persian\":\"Persian\",\"wikieditor-toolbar-characters-page-hebrew\":\"Hebrew\",\"wikieditor-toolbar-characters-page-bangla\":\"Bangla\",\"wikieditor-toolbar-characters-page-telugu\":\"Telugu\",\"wikieditor-toolbar-characters-page-sinhala\":\"Sinhala\",\"wikieditor-toolbar-characters-page-gujarati\":\"Gujarati\",\"wikieditor-toolbar-characters-page-thai\":\"Thai\",\"wikieditor-toolbar-characters-page-lao\":\"Lao\",\"wikieditor-toolbar-characters-page-khmer\":\"Khmer\",\"wikieditor-toolbar-section-help\":\"Help\",\"wikieditor-toolbar-help-heading-description\":\"Description\",\"wikieditor-toolbar-help-heading-syntax\":\"What you type\",\"wikieditor-toolbar-help-heading-result\":\"What you get\",\"wikieditor-toolbar-help-page-format\":\"Formatting\",\"wikieditor-toolbar-help-page-link\":\"Links\",\"wikieditor-toolbar-help-page-heading\":\"Headings\",\"wikieditor-toolbar-help-page-list\":\"Lists\",\"wikieditor-toolbar-help-page-file\":\"Files\",\"wikieditor-toolbar-help-page-reference\":\"References\",\"wikieditor-toolbar-help-page-discussion\":\"Discussion\",\"wikieditor-toolbar-help-content-bold-description\":\"Bold\",\"wikieditor-toolbar-help-content-bold-syntax\":\"\'\'\'Bold text\'\'\'\",\"wikieditor-toolbar-help-content-bold-result\":\"Bold text<\\/strong>\",\"wikieditor-toolbar-help-content-italic-description\":\"Italic\",\"wikieditor-toolbar-help-content-italic-syntax\":\"\'\'Italic text\'\'\",\"wikieditor-toolbar-help-content-italic-result\":\"Italic text<\\/em>\",\"wikieditor-toolbar-help-content-bolditalic-description\":\"Bold & italic\",\"wikieditor-toolbar-help-content-bolditalic-syntax\":\"\'\'\'\'\'Bold & italic text\'\'\'\'\'\",\"wikieditor-toolbar-help-content-bolditalic-result\":\"Bold & italic text<\\/em><\\/strong>\",\"wikieditor-toolbar-help-content-ilink-description\":\"Internal link\",\"wikieditor-toolbar-help-content-ilink-syntax\":\"[[Page title|Link label]]
[[Page title]]\",\"wikieditor-toolbar-help-content-ilink-result\":\"Link label<\\/a>
Page title<\\/a>\",\"wikieditor-toolbar-help-content-xlink-description\":\"External link\",\"wikieditor-toolbar-help-content-xlink-syntax\":\"[http:\\/\\/www.example.org Link label]
[http:\\/\\/www.example.org]
http:\\/\\/www.example.org\",\"wikieditor-toolbar-help-content-xlink-result\":\"
Link label<\\/a>
[1]<\\/a>
http:\\/\\/www.example.org<\\/a>\",\"wikieditor-toolbar-help-content-heading1-description\":\"<wikieditor-toolbar-help-content-heading1-description>\",\"wikieditor-toolbar-help-content-heading1-syntax\":\"<wikieditor-toolbar-help-content-heading1-syntax>\",\"wikieditor-toolbar-help-content-heading1-result\":\"<wikieditor-toolbar-help-content-heading1-result>\",\"wikieditor-toolbar-help-content-heading2-description\":\"2nd level heading\",\"wikieditor-toolbar-help-content-heading2-syntax\":\"== Heading text ==\",\"wikieditor-toolbar-help-content-heading2-result\":\"

Heading text<\\/h2>\",\"wikieditor-toolbar-help-content-heading3-description\":\"3rd level heading\",\"wikieditor-toolbar-help-content-heading3-syntax\":\"=== Heading text ===\",\"wikieditor-toolbar-help-content-heading3-result\":\"

Heading text<\\/h3>\",\"wikieditor-toolbar-help-content-heading4-description\":\"4th level heading\",\"wikieditor-toolbar-help-content-heading4-syntax\":\"==== Heading text ====\",\"wikieditor-toolbar-help-content-heading4-result\":\"

Heading text<\\/h4>\",\"wikieditor-toolbar-help-content-heading5-description\":\"5th level heading\",\"wikieditor-toolbar-help-content-heading5-syntax\":\"===== Heading text =====\",\"wikieditor-toolbar-help-content-heading5-result\":\"

Heading text<\\/h5>\",\"wikieditor-toolbar-help-content-ulist-description\":\"Bulleted list\",\"wikieditor-toolbar-help-content-ulist-syntax\":\"* List item
* List item\",\"wikieditor-toolbar-help-content-ulist-result\":\"