summaryrefslogtreecommitdiff
path: root/tests/phpunit/maintenance/getSlaveServerTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/phpunit/maintenance/getSlaveServerTest.php')
-rw-r--r--tests/phpunit/maintenance/getSlaveServerTest.php67
1 files changed, 67 insertions, 0 deletions
diff --git a/tests/phpunit/maintenance/getSlaveServerTest.php b/tests/phpunit/maintenance/getSlaveServerTest.php
new file mode 100644
index 00000000..2c848862
--- /dev/null
+++ b/tests/phpunit/maintenance/getSlaveServerTest.php
@@ -0,0 +1,67 @@
+<?php
+
+require_once __DIR__ . "/../../../maintenance/getSlaveServer.php";
+
+/**
+ * Tests for getSlaveServer
+ *
+ * @group Database
+ */
+class GetSlaveServerTest extends MediaWikiTestCase {
+
+ /**
+ * Yields a regular expression that matches a good DB server name
+ *
+ * It matches IPs or hostnames, both optionally followed by a
+ * port specification
+ *
+ * @return String the regular expression
+ */
+ private function getServerRE() {
+ if ( $this->db->getType() === 'sqlite' ) {
+ // for SQLite, only the empty string is a good server name
+ return '';
+ }
+
+ $octet = '([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])';
+ $ip = "(($octet\.){3}$octet)";
+
+ $label = '([a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)';
+ $hostname = "($label(\.$label)*)";
+
+ return "($ip|$hostname)(:[0-9]{1,5})?";
+ }
+
+ function testPlain() {
+ $gss = new GetSlaveServer();
+ $gss->execute();
+
+ $this->expectOutputRegex( "/^" . self::getServerRE() . "\n$/D" );
+ }
+
+ function testXmlDumpsBackupUseCase() {
+ global $wgDBprefix;
+
+ global $argv;
+ $argv = array( null, "--globals" );
+
+ $gss = new GetSlaveServer();
+ $gss->loadParamsAndArgs();
+ $gss->execute();
+ $gss->globals();
+
+ // The main answer
+ $output = $this->getActualOutput();
+ $firstLineEndPos = strpos( $output, "\n" );
+ if ( $firstLineEndPos === false ) {
+ $this->fail( "Could not find end of first line of output" );
+ }
+ $firstLine = substr( $output, 0, $firstLineEndPos );
+ $this->assertRegExp( "/^" . self::getServerRE() . "$/D",
+ $firstLine, "DB Server" );
+
+ // xmldumps-backup relies on the wgDBprefix in the output.
+ $this->expectOutputRegex( "/^[[:space:]]*\[wgDBprefix\][[:space:]]*=> "
+ . $wgDBprefix . "$/m" );
+ }
+}