mirror of
https://github.com/php/php-src.git
synced 2024-11-24 02:15:04 +08:00
* new command setup
This commit is contained in:
parent
6eee62645b
commit
6dce2376da
@ -24,7 +24,58 @@ require_once 'PEAR/Common.php';
|
||||
|
||||
class PEAR_Command_Package extends PEAR_Command_Common
|
||||
{
|
||||
// {{{ constructor
|
||||
var $commands = array(
|
||||
'package' => array(
|
||||
'summary' => 'Build Package',
|
||||
'function' => 'doPackage',
|
||||
'options' => array(
|
||||
'nocompress' => array(
|
||||
'shortopt' => 'Z',
|
||||
'doc' => 'Do not gzip the package file'
|
||||
),
|
||||
'???' => array(
|
||||
'shortopt' => 'n',
|
||||
'doc' => 'Return only the created package file name. Useful for
|
||||
shell script operations.
|
||||
',
|
||||
),
|
||||
),
|
||||
'doc' => 'Creates a PEAR package from its description file (usually
|
||||
called package.xml).
|
||||
'
|
||||
),
|
||||
'package-info' => array(
|
||||
'summary' => 'Display information about a package file',
|
||||
'function' => 'doPackageInfo',
|
||||
'options' => array(),
|
||||
'doc' => 'Extracts information from a package file and displays it.
|
||||
',
|
||||
),
|
||||
'package-list' => array(
|
||||
'summary' => 'List Files in Package',
|
||||
'function' => 'doPackageList',
|
||||
'options' => array(),
|
||||
'doc' => '',
|
||||
),
|
||||
'package-validate' => array(
|
||||
'summary' => 'Validate Package Consistency',
|
||||
'function' => 'doPackageValidate',
|
||||
'options' => array(),
|
||||
'doc' => '',
|
||||
),
|
||||
'cvstag' => array(
|
||||
'summary' => 'Set CVS Release Tag',
|
||||
'function' => 'doCvsTag',
|
||||
'options' => array(),
|
||||
'doc' => '',
|
||||
),
|
||||
'run-tests' => array(
|
||||
'summary' => 'Run Regression Tests',
|
||||
'function' => 'doRunTests',
|
||||
'options' => array(),
|
||||
'doc' => '',
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* PEAR_Command_Package constructor.
|
||||
@ -36,10 +87,6 @@ class PEAR_Command_Package extends PEAR_Command_Common
|
||||
parent::PEAR_Command_Common($ui, $config);
|
||||
}
|
||||
|
||||
// }}}
|
||||
|
||||
// {{{ _displayValidationResults()
|
||||
|
||||
function _displayValidationResults($err, $warn, $strict = false)
|
||||
{
|
||||
foreach ($err as $e) {
|
||||
@ -57,9 +104,6 @@ class PEAR_Command_Package extends PEAR_Command_Common
|
||||
return true;
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ getCommands()
|
||||
|
||||
/**
|
||||
* Return a list of all the commands defined by this class.
|
||||
* @return array list of commands
|
||||
@ -75,7 +119,6 @@ class PEAR_Command_Package extends PEAR_Command_Common
|
||||
'run-tests' => 'Run Regression Tests');
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ getOptions()
|
||||
|
||||
function getOptions()
|
||||
@ -132,279 +175,20 @@ class PEAR_Command_Package extends PEAR_Command_Common
|
||||
{
|
||||
$failmsg = '';
|
||||
switch ($command) {
|
||||
// {{{ package
|
||||
|
||||
case 'package': {
|
||||
$pkginfofile = isset($params[0]) ? $params[0] : 'package.xml';
|
||||
ob_start();
|
||||
$packager =& new PEAR_Packager($this->config->get('php_dir'),
|
||||
$this->config->get('ext_dir'),
|
||||
$this->config->get('doc_dir'));
|
||||
$packager->debug = $this->config->get('verbose');
|
||||
$err = $warn = array();
|
||||
$packager->validatePackageInfo($pkginfofile, $err, $warn);
|
||||
if (!$this->_displayValidationResults($err, $warn, true)) {
|
||||
break;
|
||||
}
|
||||
$compress = empty($options['Z']) ? true : false;
|
||||
$result = $packager->Package($pkginfofile, $compress);
|
||||
$output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
if (PEAR::isError($result)) {
|
||||
$failmsg = $result;
|
||||
}
|
||||
// Don't want output, only the package file name just created
|
||||
if (isset($options['n'])) {
|
||||
$this->ui->displayLine($result);
|
||||
return;
|
||||
}
|
||||
$lines = explode("\n", $output);
|
||||
foreach ($lines as $line) {
|
||||
$this->ui->displayLine($line);
|
||||
}
|
||||
if (PEAR::isError($result)) {
|
||||
$this->ui->displayLine("Package failed: ".$result->getMessage());
|
||||
}
|
||||
case 'package':
|
||||
case 'package-list':
|
||||
case 'package-info':
|
||||
case 'package-validate':
|
||||
break;
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ package-list
|
||||
|
||||
case 'package-list': {
|
||||
// $params[0] -> the PEAR package to list its files
|
||||
if (sizeof($params) != 1) {
|
||||
$failmsg = "Command package-list requires a valid PEAR package filename ".
|
||||
" as the first argument. Try the command \"help package-list\"";
|
||||
break;
|
||||
}
|
||||
$obj = new PEAR_Common();
|
||||
|
||||
if (PEAR::isError($info = $obj->infoFromTgzFile($params[0]))) {
|
||||
return $info;
|
||||
}
|
||||
$list =$info['filelist'];
|
||||
$caption = 'Contents of ' . basename($params[0]);
|
||||
$this->ui->startTable(array('caption' => $caption,
|
||||
'border' => true));
|
||||
$this->ui->tableRow(array('Package Files', 'Install Destination'),
|
||||
array('bold' => true));
|
||||
foreach ($list as $file => $att) {
|
||||
if (isset($att['baseinstalldir'])) {
|
||||
$dest = $att['baseinstalldir'] . DIRECTORY_SEPARATOR .
|
||||
$file;
|
||||
} else {
|
||||
$dest = $file;
|
||||
}
|
||||
switch ($att['role']) {
|
||||
case 'test':
|
||||
$dest = '-- will not be installed --'; break;
|
||||
case 'doc':
|
||||
$dest = $this->config->get('doc_dir') . DIRECTORY_SEPARATOR .
|
||||
$dest;
|
||||
break;
|
||||
case 'php':
|
||||
default:
|
||||
$dest = $this->config->get('php_dir') . DIRECTORY_SEPARATOR .
|
||||
$dest;
|
||||
}
|
||||
$dest = preg_replace('!/+!', '/', $dest);
|
||||
$file = preg_replace('!/+!', '/', $file);
|
||||
$opts = array(0 => array('wrap' => 23),
|
||||
1 => array('wrap' => 45)
|
||||
);
|
||||
$this->ui->tableRow(array($file, $dest), null, $opts);
|
||||
}
|
||||
$this->ui->endTable();
|
||||
break;
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ package-info
|
||||
|
||||
case 'package-info': {
|
||||
// $params[0] -> the PEAR package to list its information
|
||||
if (sizeof($params) != 1) {
|
||||
$failmsg = "Command package-info requires a valid PEAR package filename ".
|
||||
" as the first argument. Try the command \"help package-info\"";
|
||||
break;
|
||||
}
|
||||
|
||||
$obj = new PEAR_Common();
|
||||
if (PEAR::isError($info = $obj->infoFromTgzFile($params[0]))) {
|
||||
return $info;
|
||||
}
|
||||
unset($info['filelist']);
|
||||
unset($info['changelog']);
|
||||
$keys = array_keys($info);
|
||||
$longtext = array('description', 'summary');
|
||||
foreach ($keys as $key) {
|
||||
if (is_array($info[$key])) {
|
||||
switch ($key) {
|
||||
case 'maintainers': {
|
||||
$i = 0;
|
||||
$mstr = '';
|
||||
foreach ($info[$key] as $m) {
|
||||
if ($i++ > 0) {
|
||||
$mstr .= "\n";
|
||||
}
|
||||
$mstr .= $m['name'] . " <";
|
||||
if (isset($m['email'])) {
|
||||
$mstr .= $m['email'];
|
||||
} else {
|
||||
$mstr .= $m['handle'] . '@php.net';
|
||||
}
|
||||
$mstr .= "> ($m[role])";
|
||||
}
|
||||
$info[$key] = $mstr;
|
||||
break;
|
||||
}
|
||||
case 'release_deps': {
|
||||
static $rel_trans = array(
|
||||
'lt' => '<',
|
||||
'le' => '<=',
|
||||
'eq' => '=',
|
||||
'ne' => '!=',
|
||||
'gt' => '>',
|
||||
'ge' => '>=',
|
||||
);
|
||||
$i = 0;
|
||||
$dstr = '';
|
||||
foreach ($info[$key] as $d) {
|
||||
if ($i++ > 0) {
|
||||
$dstr .= ", ";
|
||||
}
|
||||
if (isset($rel_trans[$d['rel']])) {
|
||||
$d['rel'] = $rel_trans[$d['rel']];
|
||||
}
|
||||
$dstr .= "$d[type] $d[rel]";
|
||||
if (isset($d['version'])) {
|
||||
$dstr .= " $d[version]";
|
||||
}
|
||||
}
|
||||
$info[$key] = $dstr;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
$info[$key] = implode(", ", $info[$key]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$info[$key] = trim($info[$key]);
|
||||
if (in_array($key, $longtext)) {
|
||||
$info[$key] = preg_replace('/ +/', ' ', $info[$key]);
|
||||
}
|
||||
}
|
||||
$caption = 'About ' . basename($params[0]);
|
||||
$this->ui->startTable(array('caption' => $caption,
|
||||
'border' => true));
|
||||
foreach ($info as $key => $value) {
|
||||
$key = ucwords(str_replace('_', ' ', $key));
|
||||
$this->ui->tableRow(array($key, $value), null, array(1 => array('wrap' => 55)));
|
||||
}
|
||||
$this->ui->endTable();
|
||||
break;
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ package-validate
|
||||
|
||||
case 'package-validate': {
|
||||
if (sizeof($params) < 1) {
|
||||
$params[0] = "package.xml";
|
||||
}
|
||||
$obj = new PEAR_Common;
|
||||
$info = null;
|
||||
if (file_exists($params[0])) {
|
||||
$fp = fopen($params[0], "r");
|
||||
$test = fread($fp, 5);
|
||||
fclose($fp);
|
||||
if ($test == "<?xml") {
|
||||
$info = $obj->infoFromDescriptionFile($params[0]);
|
||||
}
|
||||
}
|
||||
if (empty($info)) {
|
||||
$info = $obj->infoFromTgzFile($params[0]);
|
||||
}
|
||||
if (PEAR::isError($info)) {
|
||||
return $this->raiseError($info);
|
||||
}
|
||||
$obj->validatePackageInfo($info, $err, $warn);
|
||||
$this->_displayValidationResults($err, $warn);
|
||||
break;
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ cvstag
|
||||
|
||||
case 'cvstag': {
|
||||
if (sizeof($params) < 1) {
|
||||
$help = $this->getHelp($command);
|
||||
return $this->raiseError("$command: missing parameter: $help[0]");
|
||||
}
|
||||
$obj = new PEAR_Common;
|
||||
$info = $obj->infoFromDescriptionFile($params[0]);
|
||||
if (PEAR::isError($info)) {
|
||||
return $this->raiseError($info);
|
||||
}
|
||||
$err = $warn = array();
|
||||
$obj->validatePackageInfo($info, $err, $warn);
|
||||
if (!$this->_displayValidationResults($err, $warn, true)) {
|
||||
break;
|
||||
}
|
||||
$version = $info['version'];
|
||||
$cvsversion = preg_replace('/[^a-z0-9]/i', '_', $version);
|
||||
$cvstag = "RELEASE_$cvsversion";
|
||||
$files = array_keys($info['filelist']);
|
||||
$command = "cvs";
|
||||
/* until the getopt bug is fixed, these won't work:
|
||||
if (isset($options['q'])) {
|
||||
$command .= ' -q';
|
||||
}
|
||||
if (isset($options['Q'])) {
|
||||
$command .= ' -Q';
|
||||
}
|
||||
*/
|
||||
$command .= ' tag';
|
||||
if (isset($options['F'])) {
|
||||
$command .= ' -F';
|
||||
}
|
||||
/* neither will this one:
|
||||
if (isset($options['d'])) {
|
||||
$command .= ' -d';
|
||||
}
|
||||
*/
|
||||
$command .= ' ' . $cvstag . ' ' . escapeshellarg($params[0]);
|
||||
foreach ($files as $file) {
|
||||
$command .= ' ' . escapeshellarg($file);
|
||||
}
|
||||
$this->ui->displayLine("+ $command");
|
||||
if (empty($options['n'])) {
|
||||
$fp = popen($command, "r");
|
||||
while ($line = fgets($fp, 1024)) {
|
||||
$this->ui->displayLine(rtrim($line));
|
||||
}
|
||||
pclose($fp);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ run-tests
|
||||
|
||||
case 'run-tests': {
|
||||
$cwd = getcwd();
|
||||
$php = PHP_BINDIR . '/php' . (OS_WINDOWS ? '.exe' : '');
|
||||
$ip = ini_get("include_path");
|
||||
$ps = OS_WINDOWS ? ';' : ':';
|
||||
$run_tests = $this->config->get('php_dir') . DIRECTORY_SEPARATOR . 'run-tests.php';
|
||||
if (!file_exists($run_tests)) {
|
||||
$run_tests = PEAR_INSTALL_DIR . DIRECTORY_SEPARATOR . 'run-tests.php';
|
||||
}
|
||||
$plist = implode(" ", $params);
|
||||
$cmd = "$php -d include_path=$cwd$ps$ip $run_tests $plist";
|
||||
system($cmd);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -421,6 +205,265 @@ class PEAR_Command_Package extends PEAR_Command_Common
|
||||
|
||||
// }}}
|
||||
|
||||
|
||||
function doPackage($command, $options, $params)
|
||||
{
|
||||
$pkginfofile = isset($params[0]) ? $params[0] : 'package.xml';
|
||||
ob_start();
|
||||
$packager =& new PEAR_Packager($this->config->get('php_dir'),
|
||||
$this->config->get('ext_dir'),
|
||||
$this->config->get('doc_dir'));
|
||||
$packager->debug = $this->config->get('verbose');
|
||||
$err = $warn = array();
|
||||
$packager->validatePackageInfo($pkginfofile, $err, $warn);
|
||||
if (!$this->_displayValidationResults($err, $warn, true)) {
|
||||
return;
|
||||
}
|
||||
$compress = empty($options['Z']) ? true : false;
|
||||
$result = $packager->Package($pkginfofile, $compress);
|
||||
$output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
if (PEAR::isError($result)) {
|
||||
return $this->raiseError($result);
|
||||
}
|
||||
// Don't want output, only the package file name just created
|
||||
if (isset($options['n'])) {
|
||||
$this->ui->displayLine($result);
|
||||
return;
|
||||
}
|
||||
$lines = explode("\n", $output);
|
||||
foreach ($lines as $line) {
|
||||
$this->ui->displayLine($line);
|
||||
}
|
||||
if (PEAR::isError($result)) {
|
||||
$this->ui->displayLine("Package failed: ".$result->getMessage());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function doPackageList($command, $options, $params)
|
||||
{
|
||||
// $params[0] -> the PEAR package to list its files
|
||||
if (sizeof($params) != 1) {
|
||||
return $this->raiseError("bad parameters, try \"help $command\"");
|
||||
}
|
||||
$obj = new PEAR_Common();
|
||||
|
||||
if (PEAR::isError($info = $obj->infoFromTgzFile($params[0]))) {
|
||||
return $info;
|
||||
}
|
||||
$list =$info['filelist'];
|
||||
$caption = 'Contents of ' . basename($params[0]);
|
||||
$this->ui->startTable(array('caption' => $caption,
|
||||
'border' => true));
|
||||
$this->ui->tableRow(array('Package Files', 'Install Destination'),
|
||||
array('bold' => true));
|
||||
foreach ($list as $file => $att) {
|
||||
if (isset($att['baseinstalldir'])) {
|
||||
$dest = $att['baseinstalldir'] . DIRECTORY_SEPARATOR .
|
||||
$file;
|
||||
} else {
|
||||
$dest = $file;
|
||||
}
|
||||
switch ($att['role']) {
|
||||
case 'test':
|
||||
$dest = '-- will not be installed --'; break;
|
||||
case 'doc':
|
||||
$dest = $this->config->get('doc_dir') . DIRECTORY_SEPARATOR .
|
||||
$dest;
|
||||
break;
|
||||
case 'php':
|
||||
default:
|
||||
$dest = $this->config->get('php_dir') . DIRECTORY_SEPARATOR .
|
||||
$dest;
|
||||
}
|
||||
$dest = preg_replace('!/+!', '/', $dest);
|
||||
$file = preg_replace('!/+!', '/', $file);
|
||||
$opts = array(0 => array('wrap' => 23),
|
||||
1 => array('wrap' => 45)
|
||||
);
|
||||
$this->ui->tableRow(array($file, $dest), null, $opts);
|
||||
}
|
||||
$this->ui->endTable();
|
||||
return true;
|
||||
}
|
||||
|
||||
function doPackageInfo($command, $options, $params)
|
||||
{
|
||||
// $params[0] -> the PEAR package to list its information
|
||||
if (sizeof($params) != 1) {
|
||||
return $this->raiseError("bad parameter(s), try \"help $command\"");
|
||||
}
|
||||
|
||||
$obj = new PEAR_Common();
|
||||
if (PEAR::isError($info = $obj->infoFromTgzFile($params[0]))) {
|
||||
return $info;
|
||||
}
|
||||
unset($info['filelist']);
|
||||
unset($info['changelog']);
|
||||
$keys = array_keys($info);
|
||||
$longtext = array('description', 'summary');
|
||||
foreach ($keys as $key) {
|
||||
if (is_array($info[$key])) {
|
||||
switch ($key) {
|
||||
case 'maintainers': {
|
||||
$i = 0;
|
||||
$mstr = '';
|
||||
foreach ($info[$key] as $m) {
|
||||
if ($i++ > 0) {
|
||||
$mstr .= "\n";
|
||||
}
|
||||
$mstr .= $m['name'] . " <";
|
||||
if (isset($m['email'])) {
|
||||
$mstr .= $m['email'];
|
||||
} else {
|
||||
$mstr .= $m['handle'] . '@php.net';
|
||||
}
|
||||
$mstr .= "> ($m[role])";
|
||||
}
|
||||
$info[$key] = $mstr;
|
||||
break;
|
||||
}
|
||||
case 'release_deps': {
|
||||
static $rel_trans = array(
|
||||
'lt' => '<',
|
||||
'le' => '<=',
|
||||
'eq' => '=',
|
||||
'ne' => '!=',
|
||||
'gt' => '>',
|
||||
'ge' => '>=',
|
||||
);
|
||||
$i = 0;
|
||||
$dstr = '';
|
||||
foreach ($info[$key] as $d) {
|
||||
if ($i++ > 0) {
|
||||
$dstr .= ", ";
|
||||
}
|
||||
if (isset($rel_trans[$d['rel']])) {
|
||||
$d['rel'] = $rel_trans[$d['rel']];
|
||||
}
|
||||
$dstr .= "$d[type] $d[rel]";
|
||||
if (isset($d['version'])) {
|
||||
$dstr .= " $d[version]";
|
||||
}
|
||||
}
|
||||
$info[$key] = $dstr;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
$info[$key] = implode(", ", $info[$key]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$info[$key] = trim($info[$key]);
|
||||
if (in_array($key, $longtext)) {
|
||||
$info[$key] = preg_replace('/ +/', ' ', $info[$key]);
|
||||
}
|
||||
}
|
||||
$caption = 'About ' . basename($params[0]);
|
||||
$this->ui->startTable(array('caption' => $caption,
|
||||
'border' => true));
|
||||
foreach ($info as $key => $value) {
|
||||
$key = ucwords(str_replace('_', ' ', $key));
|
||||
$this->ui->tableRow(array($key, $value), null, array(1 => array('wrap' => 55)));
|
||||
}
|
||||
$this->ui->endTable();
|
||||
return true;
|
||||
}
|
||||
|
||||
function doPackageValidate($command, $options, $params)
|
||||
{
|
||||
if (sizeof($params) < 1) {
|
||||
$params[0] = "package.xml";
|
||||
}
|
||||
$obj = new PEAR_Common;
|
||||
$info = null;
|
||||
if (file_exists($params[0])) {
|
||||
$fp = fopen($params[0], "r");
|
||||
$test = fread($fp, 5);
|
||||
fclose($fp);
|
||||
if ($test == "<?xml") {
|
||||
$info = $obj->infoFromDescriptionFile($params[0]);
|
||||
}
|
||||
}
|
||||
if (empty($info)) {
|
||||
$info = $obj->infoFromTgzFile($params[0]);
|
||||
}
|
||||
if (PEAR::isError($info)) {
|
||||
return $this->raiseError($info);
|
||||
}
|
||||
$obj->validatePackageInfo($info, $err, $warn);
|
||||
$this->_displayValidationResults($err, $warn);
|
||||
return true;
|
||||
}
|
||||
|
||||
function doCvsTag($command, $options, $params)
|
||||
{
|
||||
if (sizeof($params) < 1) {
|
||||
$help = $this->getHelp($command);
|
||||
return $this->raiseError("$command: missing parameter: $help[0]");
|
||||
}
|
||||
$obj = new PEAR_Common;
|
||||
$info = $obj->infoFromDescriptionFile($params[0]);
|
||||
if (PEAR::isError($info)) {
|
||||
return $this->raiseError($info);
|
||||
}
|
||||
$err = $warn = array();
|
||||
$obj->validatePackageInfo($info, $err, $warn);
|
||||
if (!$this->_displayValidationResults($err, $warn, true)) {
|
||||
break;
|
||||
}
|
||||
$version = $info['version'];
|
||||
$cvsversion = preg_replace('/[^a-z0-9]/i', '_', $version);
|
||||
$cvstag = "RELEASE_$cvsversion";
|
||||
$files = array_keys($info['filelist']);
|
||||
$command = "cvs";
|
||||
if (isset($options['q'])) {
|
||||
$command .= ' -q';
|
||||
}
|
||||
if (isset($options['Q'])) {
|
||||
$command .= ' -Q';
|
||||
}
|
||||
$command .= ' tag';
|
||||
if (isset($options['F'])) {
|
||||
$command .= ' -F';
|
||||
}
|
||||
if (isset($options['d'])) {
|
||||
$command .= ' -d';
|
||||
}
|
||||
$command .= ' ' . $cvstag . ' ' . escapeshellarg($params[0]);
|
||||
foreach ($files as $file) {
|
||||
$command .= ' ' . escapeshellarg($file);
|
||||
}
|
||||
$this->ui->displayLine("+ $command");
|
||||
if (empty($options['n'])) {
|
||||
$fp = popen($command, "r");
|
||||
while ($line = fgets($fp, 1024)) {
|
||||
$this->ui->displayLine(rtrim($line));
|
||||
}
|
||||
pclose($fp);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function doRunTests($command, $options, $params)
|
||||
{
|
||||
$cwd = getcwd();
|
||||
$php = PHP_BINDIR . '/php' . (OS_WINDOWS ? '.exe' : '');
|
||||
putenv("TEST_PHP_EXECUTABLE=$php");
|
||||
$ip = ini_get("include_path");
|
||||
$ps = OS_WINDOWS ? ';' : ':';
|
||||
$run_tests = $this->config->get('php_dir') . DIRECTORY_SEPARATOR . 'run-tests.php';
|
||||
if (!file_exists($run_tests)) {
|
||||
$run_tests = PEAR_INSTALL_DIR . DIRECTORY_SEPARATOR . 'run-tests.php';
|
||||
}
|
||||
$plist = implode(" ", $params);
|
||||
$cmd = "$php -d include_path=$cwd$ps$ip $run_tests $plist";
|
||||
system($cmd);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue
Block a user