1
0
Fork 0
oldhaven/php-bak/pgadmin/build_tests.php

108 lines
3.0 KiB
PHP

#!/usr/bin/php
<?php
/**
* Build the test files for each servers in conf/config.inc.php according to the pg backend version.
*/
require('./conf/config.inc.php');
$test_dir = './tests/selenium/';
$test_src_dir = "{$test_dir}src/";
$test_static_dir = "{$test_dir}static/";
$testsuite_file = "{$test_static_dir}TestSuite.html";
if(isset($argv[1]) && ($argv[1] == 'clean')) {
echo "Cleaning...";
/* delete server directories */
foreach ($conf['servers'] as $server) {
$dir = "{$test_static_dir}{$server['desc']}";
while(is_dir($dir)) {
$dh = opendir($dir);
while($file = readdir($dh))
if (($file != '.') && ($file != '..')) unlink("{$dir}/{$file}");
rmdir($dir);
}
}
/* delete the TestSuite.html file */
@unlink($testsuite_file);
echo "done.\n";
exit;
}
// Include application functions
require('./tests/selenium/config.test.php');
define('ADODB_ERROR_HANDLER','');
require('./classes/database/Connection.php');
require('./lang/recoded/english.php');
require('./tests/selenium/testBuilder.class.php');
/* create directory for tests static files */
if(!is_dir($test_static_dir))
mkdir($test_static_dir);
/* create the TestSuite.html file with its html header */
$fd = fopen($testsuite_file, 'w');
fprintf($fd, "<table border=\"1\">
<tr>
<th>Test suite for PPA</th>
</tr>\n");
fclose($fd);
/* Loop on the servers given in the conf/config.inc.conf file */
foreach ($conf['servers'] as $server) {
// Is this server in our list of configured servers?
if (!in_array($server['desc'],$test_servers))
continue;
/* connect to the server to get its version
* and test its feature along the tests */
$_c = new Connection($server['host'],
$server['port'],
$server['sslmode'],
$super_user[$server['desc']],
$super_pass[$server['desc']],
$server['defaultdb']
);
$_type = $data = null;
if (! $_c->conn->isConnected())
die ("Connection to {$server['desc']} failed !\n");
else {
if (($_type = $_c->getDriver($platform)) === null) {
die( printf($lang['strpostgresqlversionnotsupported'], $postgresqlMinVer));
}
/* create the database handler we are going to use in the tests creator scripts */
include_once('./classes/database/' . $_type . '.php');
$data = new $_type($_c->conn);
$data->platform = $_c->platform;
}
fprintf(STDERR, "Connected to %s...\n", $server['desc']);
if (!is_dir("{$test_static_dir}/{$server['desc']}"))
mkdir("{$test_static_dir}/{$server['desc']}");
$fd = opendir($test_src_dir);
$files = array();
while ($file = readdir($fd))
if (($file != '.') && ($file != '..'))
$files[] = $file;
sort($files);
/* include the tests creator scripts here
* in the order you want them executed.
* Each script append itself to the TestSuite.html file.
**/
foreach ($files as $testgroupfile)
require("{$test_src_dir}/{$testgroupfile}");
}
/* close the TestSuite.html file */
$fd = fopen($testsuite_file, 'a');
fprintf($fd, "</table>");
fclose($fd);
/* Tests ready to be runned on all your configured servers !!!! */
?>