1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
<?php
if( php_sapi_name() != 'cli' ) {
echo 'Must be run from the command line.';
die( -1 );
}
error_reporting( E_ALL );
define( "MEDIAWIKI", true );
set_include_path( get_include_path() . PATH_SEPARATOR . 'PHPUnit' );
set_include_path( get_include_path() . PATH_SEPARATOR . '..' );
require_once( 'PHPUnit.php' );
$testOptions = array(
'mysql4' => array(
'server' => null,
'user' => null,
'password' => null,
'database' => null ),
'postgres' => array(
'server' => null,
'user' => null,
'password' => null,
'database' => null ),
);
if( file_exists( 'LocalTestSettings.php' ) ) {
include( './LocalTestSettings.php' );
}
$tests = array(
'GlobalTest',
'DatabaseTest',
'SearchMySQL4Test',
'ArticleTest',
'SanitizerTest',
'ImageTest'
);
if( isset( $_SERVER['argv'][1] ) ) {
// to override...
$tests = array( $_SERVER['argv'][1] );
}
foreach( $tests as $test ) {
require_once( $test . '.php' );
$suite = new PHPUnit_TestSuite( $test );
$result = PHPUnit::run( $suite );
echo $result->toString();
}
/**
* @param string $serverType
* @param array $tables
*/
function &buildTestDatabase( $serverType, $tables ) {
global $testOptions, $wgDBprefix;
$wgDBprefix = 'parsertest';
$db =& new Database(
$testOptions[$serverType]['server'],
$testOptions[$serverType]['user'],
$testOptions[$serverType]['password'],
$testOptions[$serverType]['database'] );
if( $db->isOpen() ) {
if (!(strcmp($db->getServerVersion(), '4.1') < 0 and stristr($db->getSoftwareLink(), 'MySQL'))) {
# Database that supports CREATE TABLE ... LIKE
foreach ($tables as $tbl) {
$newTableName = $db->tableName( $tbl );
#$tableName = $this->oldTableNames[$tbl];
$tableName = $tbl;
$db->query("CREATE TEMPORARY TABLE $newTableName (LIKE $tableName INCLUDING DEFAULTS)");
}
} else {
# Hack for MySQL versions < 4.1, which don't support
# "CREATE TABLE ... LIKE". Note that
# "CREATE TEMPORARY TABLE ... SELECT * FROM ... LIMIT 0"
# would not create the indexes we need....
foreach ($tables as $tbl) {
$res = $db->query("SHOW CREATE TABLE $tbl");
$row = $db->fetchRow($res);
$create = $row[1];
$create_tmp = preg_replace('/CREATE TABLE `(.*?)`/', 'CREATE TEMPORARY TABLE `'
. $wgDBprefix . '\\1`', $create);
if ($create === $create_tmp) {
# Couldn't do replacement
wfDie( "could not create temporary table $tbl" );
}
$db->query($create_tmp);
}
}
return $db;
} else {
// Something amiss
return null;
}
}
?>
|