mirror of
https://github.com/php/php-src.git
synced 2024-11-24 10:24:11 +08:00
new unit tests
pearweb mock object is complete
This commit is contained in:
parent
8c5c17c3a1
commit
918d45198a
@ -3,17 +3,28 @@ require_once 'XML/RPC/Server.php';
|
||||
|
||||
class PEAR_test_mock_pearweb {
|
||||
var $_config;
|
||||
var $_remote;
|
||||
|
||||
function addHtmlConfig($address, $contents)
|
||||
function setRemote(&$r)
|
||||
{
|
||||
$this->_config['html'][$address] = $contents;
|
||||
$this->_remote = &$r;
|
||||
}
|
||||
|
||||
function addHtmlConfig($address, $filename)
|
||||
{
|
||||
$this->_config['html'][$address] = array(basename($filename), file_get_contents($filename));
|
||||
}
|
||||
|
||||
function addXmlrpcConfig($method, $params, $return)
|
||||
{
|
||||
$val = XML_RPC_encode($return);
|
||||
$this->_config['xmlrpc'][$method][serialize($params)] = $return;
|
||||
}
|
||||
|
||||
function _encode($val)
|
||||
{
|
||||
$val = XML_RPC_encode($val);
|
||||
$ser = new XML_RPC_Response($val);
|
||||
$this->_config['xmlrpc'][$method][serialize($params)] = $ser->serialize();
|
||||
return $ser->serialize();
|
||||
}
|
||||
|
||||
function receiveHttp($address)
|
||||
@ -21,11 +32,12 @@ class PEAR_test_mock_pearweb {
|
||||
if (!isset($this->_config) || !is_array($this->_config)) {
|
||||
return $this->do404($address);
|
||||
}
|
||||
if (!isset($this->_config[$address])) {
|
||||
if (!isset($this->_config['html'][$address])) {
|
||||
return $this->do404($address);
|
||||
}
|
||||
if (isset($this->_config['html'][$address])) {
|
||||
return $this->do200() . $this->_config['html'][$address];
|
||||
} else {
|
||||
return $this->do200() .
|
||||
'content-length: ' . strlen($this->_config['html'][$address][1]) . "\n\n" .
|
||||
$this->_config['html'][$address][1];
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,7 +51,54 @@ class PEAR_test_mock_pearweb {
|
||||
var_dump($info['param']);
|
||||
die("Error - parameters not configured properly for $info[method]");
|
||||
}
|
||||
return $this->do200() . $this->_config['xmlrpc'][$info['method']][serialize($info['params'])];
|
||||
return $this->do200() .
|
||||
$this->_encode($this->_config['xmlrpc'][$info['method']][serialize($info['params'])]);
|
||||
}
|
||||
|
||||
function call($method, $params)
|
||||
{
|
||||
if (!isset($this->_config['xmlrpc'][$method])) {
|
||||
return false;
|
||||
}
|
||||
if (!isset($this->_config['xmlrpc'][$method][serialize($params)])) {
|
||||
$args = $params;
|
||||
switch (count($args)) {
|
||||
case 0:
|
||||
$result = $this->_remote->parentcall($method);
|
||||
break;
|
||||
case 1:
|
||||
$result = $this->_remote->parentcall($method, $args[0]);
|
||||
break;
|
||||
case 2:
|
||||
$result = $this->_remote->parentcall($method, $args[0], $args[1]);
|
||||
break;
|
||||
case 3:
|
||||
$result = $this->_remote->parentcall_epi($method, $args[0], $args[1], $args[2]);
|
||||
break;
|
||||
case 4:
|
||||
$result = $this->_remote->parentcall($method, $args[0], $args[1], $args[2], $args[3]);
|
||||
break;
|
||||
case 5:
|
||||
$result = $this->_remote->parentcall($method, $args[0], $args[1], $args[2], $args[3], $args[4]);
|
||||
break;
|
||||
case 6:
|
||||
$result = $this->_remote->parentcall($method, $args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
|
||||
break;
|
||||
}
|
||||
$dump = new PHP_Dump($result);
|
||||
$args = new PHP_Dump($args);
|
||||
if (!isset($this->_pearweb->_config['xmlrpc'][$method][serialize($args)]))
|
||||
$GLOBALS['totalPHP'][$method . serialize($args)] = '$pearweb->addXmlrpcConfig("' .
|
||||
$method . '", ' .
|
||||
$args->toPHP() . ', ' .
|
||||
$dump->toPHP() .");";
|
||||
foreach($GLOBALS['totalPHP'] as $php) {
|
||||
echo $php . "\n";
|
||||
}
|
||||
var_dump(array_keys($this->_config['xmlrpc'][$method]), $params);
|
||||
die("Error - parameters not configured properly for $method");
|
||||
}
|
||||
return $this->_config['xmlrpc'][$method][serialize($params)];
|
||||
}
|
||||
|
||||
function doXmlrpcFault($info)
|
||||
@ -50,14 +109,14 @@ class PEAR_test_mock_pearweb {
|
||||
|
||||
function do200()
|
||||
{
|
||||
return 'HTTP/1.1 200 ';
|
||||
return "HTTP/1.1 200 \n";
|
||||
}
|
||||
|
||||
function do404($address)
|
||||
{
|
||||
return 'HTTP/1.1 404 ' . $address . ' Is not valid';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parse an xmlrpc request
|
||||
* @param string fake HTTP_RAW_POST_DATA
|
||||
|
920
pear/tests/download_test.config.inc
Normal file
920
pear/tests/download_test.config.inc
Normal file
@ -0,0 +1,920 @@
|
||||
<?php
|
||||
$pearweb->addXmlrpcConfig("package.info", unserialize("a:3:{i:0;s:4:\"pkg6\";i:1;s:8:\"releases\";i:2;b:1;}"), array(
|
||||
'2.0b1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"9",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 18:34:03",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"beta",
|
||||
),
|
||||
'1.1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"7",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 17:03:37",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"stable",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", unserialize("a:3:{i:0;s:4:\"pkg2\";i:1;s:8:\"releases\";i:2;b:1;}"), array(
|
||||
'1.1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"3",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 17:02:56",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"stable",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", unserialize("a:3:{i:0;s:4:\"pkg3\";i:1;s:8:\"releases\";i:2;b:1;}"), array(
|
||||
'1.4' =>
|
||||
array(
|
||||
'id' =>
|
||||
"11",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 18:51:31",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"alpha",
|
||||
),
|
||||
'1.1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"4",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 17:03:06",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"stable",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", unserialize("a:3:{i:0;s:4:\"pkg4\";i:1;s:8:\"releases\";i:2;b:1;}"), array(
|
||||
'1.1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"5",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 17:03:17",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"stable",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", unserialize("a:3:{i:0;s:4:\"pkg5\";i:1;s:8:\"releases\";i:2;b:1;}"), array(
|
||||
'1.1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"6",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 17:03:25",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"stable",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", unserialize("a:3:{i:0;s:4:\"pkg1\";i:1;s:8:\"releases\";i:2;b:1;}"), array(
|
||||
'2.0b1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"8",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 18:29:15",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"beta",
|
||||
),
|
||||
'1.1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"2",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 17:02:43",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"stable",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", unserialize("a:3:{i:0;s:12:\"pkg4AndAHalf\";i:1;s:8:\"releases\";i:2;b:1;}"), array(
|
||||
'1.3' =>
|
||||
array(
|
||||
'id' =>
|
||||
"10",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 18:50:05",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"stable",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", array(
|
||||
0 =>
|
||||
"noreleases",
|
||||
1 =>
|
||||
"releases",
|
||||
2 =>
|
||||
true,
|
||||
), array(
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", array(
|
||||
0 =>
|
||||
"pkg1",
|
||||
1 =>
|
||||
"releases",
|
||||
2 =>
|
||||
true,
|
||||
), array(
|
||||
'2.0b1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"8",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 18:29:15",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"beta",
|
||||
),
|
||||
'1.1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"2",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 17:02:43",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"stable",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", array(
|
||||
0 =>
|
||||
"stabilitytoolow",
|
||||
1 =>
|
||||
"releases",
|
||||
2 =>
|
||||
true,
|
||||
), array(
|
||||
'3.0dev' =>
|
||||
array(
|
||||
'id' =>
|
||||
"23",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:27:38",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"devel",
|
||||
),
|
||||
'2.0a1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"22",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:27:19",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"alpha",
|
||||
),
|
||||
'1.0b1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"21",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:26:42",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"beta",
|
||||
),
|
||||
'0.6beta' =>
|
||||
array(
|
||||
'id' =>
|
||||
"20",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:26:36",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"beta",
|
||||
),
|
||||
'0.5' =>
|
||||
array(
|
||||
'id' =>
|
||||
"19",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:26:28",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"alpha",
|
||||
),
|
||||
'0.3' =>
|
||||
array(
|
||||
'id' =>
|
||||
"18",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:26:21",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"devel",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", array(
|
||||
0 =>
|
||||
"pkg6",
|
||||
1 =>
|
||||
"releases",
|
||||
2 =>
|
||||
true,
|
||||
), array(
|
||||
'2.0b1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"9",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 18:34:03",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"beta",
|
||||
),
|
||||
'1.1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"7",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-03 17:03:37",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"stable",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", array(
|
||||
0 =>
|
||||
"depnoreleases",
|
||||
1 =>
|
||||
"releases",
|
||||
2 =>
|
||||
true,
|
||||
), array(
|
||||
'1.0' =>
|
||||
array(
|
||||
'id' =>
|
||||
"24",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 17:10:42",
|
||||
'releasenotes' =>
|
||||
"dependency has no releases test",
|
||||
'state' =>
|
||||
"beta",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", array(
|
||||
0 =>
|
||||
"depunstable",
|
||||
1 =>
|
||||
"releases",
|
||||
2 =>
|
||||
true,
|
||||
), array(
|
||||
'1.0' =>
|
||||
array(
|
||||
'id' =>
|
||||
"26",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 17:32:38",
|
||||
'releasenotes' =>
|
||||
"dependency stability is too low",
|
||||
'state' =>
|
||||
"stable",
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", array(
|
||||
0 =>
|
||||
"stabilitytoolow",
|
||||
), array(
|
||||
'packageid' =>
|
||||
"9",
|
||||
'name' =>
|
||||
"stabilitytoolow",
|
||||
'type' =>
|
||||
"pear",
|
||||
'categoryid' =>
|
||||
"1",
|
||||
'category' =>
|
||||
"Test",
|
||||
'stable' =>
|
||||
"3.0dev",
|
||||
'license' =>
|
||||
"PHP License",
|
||||
'summary' =>
|
||||
"required test for PEAR_Installer",
|
||||
'homepage' =>
|
||||
"",
|
||||
'description' =>
|
||||
"fake package",
|
||||
'cvs_link' =>
|
||||
"",
|
||||
'doc_link' =>
|
||||
"",
|
||||
'releases' =>
|
||||
array(
|
||||
'3.0dev' =>
|
||||
array(
|
||||
'id' =>
|
||||
"23",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:27:38",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"devel",
|
||||
'deps' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'type' =>
|
||||
"pkg",
|
||||
'relation' =>
|
||||
"ge",
|
||||
'version' =>
|
||||
"1.0",
|
||||
'name' =>
|
||||
"pkg6",
|
||||
'optional' =>
|
||||
"0",
|
||||
),
|
||||
),
|
||||
),
|
||||
'2.0a1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"22",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:27:19",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"alpha",
|
||||
'deps' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'type' =>
|
||||
"pkg",
|
||||
'relation' =>
|
||||
"ge",
|
||||
'version' =>
|
||||
"1.0",
|
||||
'name' =>
|
||||
"pkg6",
|
||||
'optional' =>
|
||||
"0",
|
||||
),
|
||||
),
|
||||
),
|
||||
'1.0b1' =>
|
||||
array(
|
||||
'id' =>
|
||||
"21",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:26:42",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"beta",
|
||||
'deps' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'type' =>
|
||||
"pkg",
|
||||
'relation' =>
|
||||
"ge",
|
||||
'version' =>
|
||||
"1.0",
|
||||
'name' =>
|
||||
"pkg6",
|
||||
'optional' =>
|
||||
"0",
|
||||
),
|
||||
),
|
||||
),
|
||||
'0.6beta' =>
|
||||
array(
|
||||
'id' =>
|
||||
"20",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:26:36",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"beta",
|
||||
'deps' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'type' =>
|
||||
"pkg",
|
||||
'relation' =>
|
||||
"ge",
|
||||
'version' =>
|
||||
"1.0",
|
||||
'name' =>
|
||||
"pkg6",
|
||||
'optional' =>
|
||||
"0",
|
||||
),
|
||||
),
|
||||
),
|
||||
'0.5' =>
|
||||
array(
|
||||
'id' =>
|
||||
"19",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:26:28",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"alpha",
|
||||
'deps' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'type' =>
|
||||
"pkg",
|
||||
'relation' =>
|
||||
"ge",
|
||||
'version' =>
|
||||
"1.0",
|
||||
'name' =>
|
||||
"pkg6",
|
||||
'optional' =>
|
||||
"0",
|
||||
),
|
||||
),
|
||||
),
|
||||
'0.3' =>
|
||||
array(
|
||||
'id' =>
|
||||
"18",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 00:26:21",
|
||||
'releasenotes' =>
|
||||
"required dependency test",
|
||||
'state' =>
|
||||
"devel",
|
||||
'deps' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'type' =>
|
||||
"pkg",
|
||||
'relation' =>
|
||||
"ge",
|
||||
'version' =>
|
||||
"1.0",
|
||||
'name' =>
|
||||
"pkg6",
|
||||
'optional' =>
|
||||
"0",
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
'notes' =>
|
||||
array(
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", array(
|
||||
0 =>
|
||||
"depnoreleases",
|
||||
), array(
|
||||
'packageid' =>
|
||||
"10",
|
||||
'name' =>
|
||||
"depnoreleases",
|
||||
'type' =>
|
||||
"pear",
|
||||
'categoryid' =>
|
||||
"1",
|
||||
'category' =>
|
||||
"Test",
|
||||
'stable' =>
|
||||
"1.0",
|
||||
'license' =>
|
||||
"PHP License",
|
||||
'summary' =>
|
||||
"required test for PEAR_Installer",
|
||||
'homepage' =>
|
||||
"",
|
||||
'description' =>
|
||||
"fake package",
|
||||
'cvs_link' =>
|
||||
"",
|
||||
'doc_link' =>
|
||||
"",
|
||||
'releases' =>
|
||||
array(
|
||||
'1.0' =>
|
||||
array(
|
||||
'id' =>
|
||||
"24",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 17:10:42",
|
||||
'releasenotes' =>
|
||||
"dependency has no releases test",
|
||||
'state' =>
|
||||
"beta",
|
||||
'deps' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'type' =>
|
||||
"pkg",
|
||||
'relation' =>
|
||||
"ge",
|
||||
'version' =>
|
||||
"1.0",
|
||||
'name' =>
|
||||
"noreleases",
|
||||
'optional' =>
|
||||
"0",
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
'notes' =>
|
||||
array(
|
||||
),
|
||||
));
|
||||
$pearweb->addXmlrpcConfig("package.info", array(
|
||||
0 =>
|
||||
"depunstable",
|
||||
), array(
|
||||
'packageid' =>
|
||||
"11",
|
||||
'name' =>
|
||||
"depunstable",
|
||||
'type' =>
|
||||
"pear",
|
||||
'categoryid' =>
|
||||
"1",
|
||||
'category' =>
|
||||
"Test",
|
||||
'stable' =>
|
||||
"1.0",
|
||||
'license' =>
|
||||
"PHP License",
|
||||
'summary' =>
|
||||
"required test for PEAR_Installer",
|
||||
'homepage' =>
|
||||
"",
|
||||
'description' =>
|
||||
"fake package",
|
||||
'cvs_link' =>
|
||||
"",
|
||||
'doc_link' =>
|
||||
"",
|
||||
'releases' =>
|
||||
array(
|
||||
'1.0' =>
|
||||
array(
|
||||
'id' =>
|
||||
"26",
|
||||
'doneby' =>
|
||||
"cellog",
|
||||
'license' =>
|
||||
"",
|
||||
'summary' =>
|
||||
"",
|
||||
'description' =>
|
||||
"",
|
||||
'releasedate' =>
|
||||
"2003-12-06 17:32:38",
|
||||
'releasenotes' =>
|
||||
"dependency stability is too low",
|
||||
'state' =>
|
||||
"stable",
|
||||
'deps' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'type' =>
|
||||
"pkg",
|
||||
'relation' =>
|
||||
"ge",
|
||||
'version' =>
|
||||
"1.0b1",
|
||||
'name' =>
|
||||
"stabilitytoolow",
|
||||
'optional' =>
|
||||
"0",
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
'notes' =>
|
||||
array(
|
||||
),
|
||||
));
|
||||
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg6-1.1.tgz",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'test-pkg6' . DIRECTORY_SEPARATOR . 'pkg6-1.1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg6-1.1",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'test-pkg6' . DIRECTORY_SEPARATOR . 'pkg6-1.1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg6-2.0b1",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'test-pkg6' . DIRECTORY_SEPARATOR . 'pkg6-2.0b1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg2-1.1",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pkg2-1.1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg3-1.1",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pkg3-1.1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg4-1.1",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pkg4-1.1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg5-1.1",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pkg5-1.1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg1-1.1",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pkg1-1.1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg1-1.1.tgz",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pkg1-1.1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg1-2.0b1",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pkg1-2.0b1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg3-1.4",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pkg3-1.4.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/pkg4AndAHalf-1.3",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pkg4AndAHalf-1.3.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/stabilitytoolow-0.3",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'stabilitytoolow-0.3.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/stabilitytoolow-0.5",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'stabilitytoolow-0.5.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/stabilitytoolow-0.6beta",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'stabilitytoolow-0.6beta.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/stabilitytoolow-1.0b1",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'stabilitytoolow-1.0b1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/stabilitytoolow-2.0a1",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'stabilitytoolow-2.0a1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/stabilitytoolow-2.0b1",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'stabilitytoolow-2.0b1.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/stabilitytoolow-2.0dev",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'stabilitytoolow-2.0dev.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/stabilitytoolow-3.0dev",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'stabilitytoolow-3.0dev.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/depnoreleases-1.0",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'depnoreleases-1.0.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/depunstable-1.0",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'depunstable-1.0.tgz');
|
||||
$pearweb->addHtmlConfig("http://pear.Chiara/get/stabilitytoolow",
|
||||
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'stabilitytoolow-3.0dev.tgz');
|
||||
?>
|
404
pear/tests/download_test_classes.php.inc
Normal file
404
pear/tests/download_test_classes.php.inc
Normal file
@ -0,0 +1,404 @@
|
||||
<?php
|
||||
require_once 'XML/RPC.php';
|
||||
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'PEAR_test_mock_pearweb.php.inc';
|
||||
$GLOBALS['pearweb'] = new PEAR_test_mock_pearweb;
|
||||
class test_XML_RPC_Client extends XML_RPC_Client {
|
||||
function test_XML_RPC_Client()
|
||||
{
|
||||
$this->_fakepearweb = &$GLOBALS['pearweb'];
|
||||
}
|
||||
|
||||
function sendPayloadHTTP10($msg, $server, $port, $timeout=0,
|
||||
$username="", $password="")
|
||||
{
|
||||
// Only create the payload if it was not created previously
|
||||
if(empty($msg->payload)) $msg->createPayload();
|
||||
|
||||
$resp = $this->_fakepearweb->receiveXmlrpc($msg->payload);
|
||||
|
||||
$resp=$msg->parseResponse($resp);
|
||||
return $resp;
|
||||
}
|
||||
}
|
||||
require_once 'PEAR/Remote.php';
|
||||
|
||||
class test_PEAR_Remote extends PEAR_Remote {
|
||||
var $_pearweb;
|
||||
var $_fakepearweb = true;
|
||||
var $_simulateEpi = true;
|
||||
function test_PEAR_Remote($config)
|
||||
{
|
||||
$pearweb = &$GLOBALS['pearweb'];
|
||||
include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'download_test.config.inc';
|
||||
$this->_pearweb = $pearweb;
|
||||
parent::PEAR_Remote($config);
|
||||
$this->_pearweb->setRemote($this);
|
||||
}
|
||||
|
||||
function parentcall()
|
||||
{
|
||||
$args = func_get_args();
|
||||
$method = array_shift($args);
|
||||
switch (count($args)) {
|
||||
case 0:
|
||||
$result = PEAR_Remote::call_epi($method);
|
||||
break;
|
||||
case 1:
|
||||
$result = PEAR_Remote::call_epi($method, $args[0]);
|
||||
break;
|
||||
case 2:
|
||||
$result = PEAR_Remote::call_epi($method, $args[0], $args[1]);
|
||||
break;
|
||||
case 3:
|
||||
$result = PEAR_Remote::call_epi($method, $args[0], $args[1], $args[2]);
|
||||
break;
|
||||
case 4:
|
||||
$result = PEAR_Remote::call_epi($method, $args[0], $args[1], $args[2], $args[3]);
|
||||
break;
|
||||
case 5:
|
||||
$result = PEAR_Remote::call_epi($method, $args[0], $args[1], $args[2], $args[3], $args[4]);
|
||||
break;
|
||||
case 6:
|
||||
$result = PEAR_Remote::call_epi($method, $args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
|
||||
break;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
function call($method)
|
||||
{
|
||||
$_args = $args = func_get_args();
|
||||
|
||||
$server_channel = $this->config->get('default_channel');
|
||||
$channel = $this->_registry->getChannel($server_channel);
|
||||
if ($channel) {
|
||||
if (!$channel->supports('xml-rpc', $method)) {
|
||||
// check for channel.list, which is implicitly supported for the PEAR channel
|
||||
if (!(strtolower($server_channel) == 'pear' && $method == 'channel.list')) {
|
||||
return $this->raiseError("Channel $server_channel does not support xml-rpc method $method");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
array_unshift($_args, $channel); // cache by channel
|
||||
$this->cache = $this->getCache($_args);
|
||||
$cachettl = $this->config->get('cache_ttl');
|
||||
// If cache is newer than $cachettl seconds, we use the cache!
|
||||
if ($this->cache !== null && $this->cache['age'] < $cachettl) {
|
||||
return $this->cache['content'];
|
||||
};
|
||||
if ($this->_simulateEpi) {
|
||||
$result = call_user_func_array(array(&$this, 'call_epi'), $args);
|
||||
if (!PEAR::isError($result)) {
|
||||
$this->saveCache($_args, $result);
|
||||
};
|
||||
return $result;
|
||||
}
|
||||
if (!@include_once("XML/RPC.php")) {
|
||||
return $this->raiseError("For this remote PEAR operation you need to install the XML_RPC package");
|
||||
}
|
||||
array_shift($args);
|
||||
$server_host = $this->_registry->channelInfo($server_channel, 'server');
|
||||
$username = $this->config->get('username');
|
||||
$password = $this->config->get('password');
|
||||
$eargs = array();
|
||||
foreach($args as $arg) $eargs[] = $this->_encode($arg);
|
||||
$f = new XML_RPC_Message($method, $eargs);
|
||||
if ($this->cache !== null) {
|
||||
$maxAge = '?maxAge='.$this->cache['lastChange'];
|
||||
} else {
|
||||
$maxAge = '';
|
||||
};
|
||||
$proxy_host = $proxy_port = $proxy_user = $proxy_pass = '';
|
||||
if ($proxy = parse_url($this->config->get('http_proxy'))) {
|
||||
$proxy_host = @$proxy['host'];
|
||||
$proxy_port = @$proxy['port'];
|
||||
$proxy_user = @$proxy['user'];
|
||||
$proxy_pass = @$proxy['pass'];
|
||||
}
|
||||
$c = new test_XML_RPC_Client('/xmlrpc.php'.$maxAge, $server_host, 80, $proxy_host, $proxy_port, $proxy_user, $proxy_pass);
|
||||
if ($username && $password) {
|
||||
$c->setCredentials($username, $password);
|
||||
}
|
||||
if ($this->config->get('verbose') >= 3) {
|
||||
$c->setDebug(1);
|
||||
}
|
||||
$r = $c->send($f);
|
||||
if (!$r) {
|
||||
return $this->raiseError("XML_RPC send failed");
|
||||
}
|
||||
$v = $r->value();
|
||||
if ($e = $r->faultCode()) {
|
||||
if ($e == $GLOBALS['XML_RPC_err']['http_error'] && strstr($r->faultString(), '304 Not Modified') !== false) {
|
||||
return $this->cache['content'];
|
||||
}
|
||||
return $this->raiseError($r->faultString(), $e);
|
||||
}
|
||||
|
||||
$result = XML_RPC_decode($v);
|
||||
$this->saveCache($_args, $result);
|
||||
return $result;
|
||||
}
|
||||
|
||||
function call_epi($method)
|
||||
{
|
||||
$args = func_get_args();
|
||||
array_shift($args);
|
||||
if ($this->_fakepearweb) {
|
||||
if (count($args)) {
|
||||
$result = $this->_pearweb->call($method, $args);
|
||||
} else {
|
||||
$result = $this->_pearweb->call($method);
|
||||
}
|
||||
}/* else {
|
||||
switch (count($args)) {
|
||||
case 0:
|
||||
$result = parent::call($method);
|
||||
break;
|
||||
case 1:
|
||||
$result = parent::call($method, $args[0]);
|
||||
break;
|
||||
case 2:
|
||||
$result = parent::call($method, $args[0], $args[1]);
|
||||
break;
|
||||
case 3:
|
||||
$result = parent::call($method, $args[0], $args[1], $args[2]);
|
||||
break;
|
||||
case 4:
|
||||
$result = parent::call($method, $args[0], $args[1], $args[2], $args[3]);
|
||||
break;
|
||||
case 5:
|
||||
$result = parent::call($method, $args[0], $args[1], $args[2], $args[3], $args[4]);
|
||||
break;
|
||||
case 6:
|
||||
$result = parent::call($method, $args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
|
||||
break;
|
||||
}
|
||||
}*/
|
||||
if (PEAR::isError($result)) {
|
||||
return $result;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
require_once 'PEAR/Installer.php';
|
||||
class test_PEAR_Installer extends PEAR_Installer {
|
||||
function download($packages, $options, &$config, &$installpackages,
|
||||
&$errors, $installed = false, $willinstall = false, $state = false)
|
||||
{
|
||||
// trickiness: initialize here
|
||||
$this->PEAR_Downloader($this->ui, $options, $config);
|
||||
$this->_remote = &new test_PEAR_Remote($config);
|
||||
$ret = PEAR_Downloader::download($packages);
|
||||
$errors = $this->getErrorMsgs();
|
||||
$installpackages = $this->getDownloadedPackages();
|
||||
trigger_error("PEAR Warning: PEAR_Installer::download() is deprecated " .
|
||||
"in favor of PEAR_Downloader class", E_USER_WARNING);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function downloadHttp($url, &$ui, $save_dir = '.', $callback = null)
|
||||
{
|
||||
// return parent::downloadHttp($url, $ui, $save_dir, $callback);
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'setup', array(&$ui));
|
||||
}
|
||||
if (preg_match('!^http://([^/:?#]*)(:(\d+))?(/.*)!', $url, $matches)) {
|
||||
list(,$host,,$port,$path) = $matches;
|
||||
}
|
||||
if (isset($this)) {
|
||||
$config = &$this->config;
|
||||
} else {
|
||||
$config = &PEAR_Config::singleton();
|
||||
}
|
||||
$proxy_host = $proxy_port = $proxy_user = $proxy_pass = '';
|
||||
if ($proxy = parse_url($config->get('http_proxy'))) {
|
||||
$proxy_host = @$proxy['host'];
|
||||
$proxy_port = @$proxy['port'];
|
||||
$proxy_user = @$proxy['user'];
|
||||
$proxy_pass = @$proxy['pass'];
|
||||
|
||||
if ($proxy_port == '') {
|
||||
$proxy_port = 8080;
|
||||
}
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'message', "Using HTTP proxy $host:$port");
|
||||
}
|
||||
}
|
||||
if (empty($port)) {
|
||||
$port = 80;
|
||||
}
|
||||
// use _pearweb to get file
|
||||
$retrieved = explode("\n", $this->_remote->_pearweb->receiveHttp($url));
|
||||
$headers = array();
|
||||
$line = array_shift($retrieved);
|
||||
while (strlen(trim($line))) {
|
||||
if (preg_match('/^([^:]+):\s+(.*)\s*$/', $line, $matches)) {
|
||||
$headers[strtolower($matches[1])] = trim($matches[2]);
|
||||
} elseif (preg_match('|^HTTP/1.[01] ([0-9]{3}) |', $line, $matches)) {
|
||||
if ($matches[1] != 200) {
|
||||
return PEAR::raiseError("File http://$host:$port$path not valid (received: $line)");
|
||||
}
|
||||
}
|
||||
$line = array_shift($retrieved);
|
||||
}
|
||||
$retrieved = join("\n", $retrieved);
|
||||
if (isset($headers['content-disposition']) &&
|
||||
preg_match('/\sfilename=\"([^;]*\S)\"\s*(;|$)/', $headers['content-disposition'], $matches)) {
|
||||
$save_as = basename($matches[1]);
|
||||
} else {
|
||||
$save_as = basename($url);
|
||||
}
|
||||
if ($callback) {
|
||||
$tmp = call_user_func($callback, 'saveas', $save_as);
|
||||
if ($tmp) {
|
||||
$save_as = $tmp;
|
||||
}
|
||||
}
|
||||
$dest_file = $save_dir . DIRECTORY_SEPARATOR . $save_as;
|
||||
if (!$wp = @fopen($dest_file, 'wb')) {
|
||||
fclose($fp);
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg));
|
||||
}
|
||||
return PEAR::raiseError("could not open $dest_file for writing");
|
||||
}
|
||||
if (isset($headers['content-length'])) {
|
||||
$length = $headers['content-length'];
|
||||
} else {
|
||||
$length = -1;
|
||||
}
|
||||
$bytes = 0;
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'start', array(basename($dest_file), $length));
|
||||
}
|
||||
$start = 0;
|
||||
while ($start < strlen($retrieved) - 1) {
|
||||
$data = substr($retrieved, $start, 1024);
|
||||
$start += 1024;
|
||||
$bytes += strlen($data);
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'bytesread', $bytes);
|
||||
}
|
||||
if (!@fwrite($wp, $data)) {
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg));
|
||||
}
|
||||
return PEAR::raiseError("$dest_file: write failed ($php_errormsg)");
|
||||
}
|
||||
}
|
||||
fclose($wp);
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'done', $bytes);
|
||||
}
|
||||
return $dest_file;
|
||||
}
|
||||
}
|
||||
|
||||
require_once 'PEAR/Downloader.php';
|
||||
class test_PEAR_Downloader extends PEAR_Downloader {
|
||||
function test_PEAR_Downloader(&$ui, $options, &$config)
|
||||
{
|
||||
parent::PEAR_Downloader($ui, $options, $config);
|
||||
$this->_remote = new test_PEAR_Remote($config);
|
||||
}
|
||||
|
||||
function downloadHttp($url, &$ui, $save_dir = '.', $callback = null)
|
||||
{
|
||||
// return parent::downloadHttp($url, $ui, $save_dir, $callback);
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'setup', array(&$ui));
|
||||
}
|
||||
if (preg_match('!^http://([^/:?#]*)(:(\d+))?(/.*)!', $url, $matches)) {
|
||||
list(,$host,,$port,$path) = $matches;
|
||||
}
|
||||
if (isset($this)) {
|
||||
$config = &$this->config;
|
||||
} else {
|
||||
$config = &PEAR_Config::singleton();
|
||||
}
|
||||
$proxy_host = $proxy_port = $proxy_user = $proxy_pass = '';
|
||||
if ($proxy = parse_url($config->get('http_proxy'))) {
|
||||
$proxy_host = @$proxy['host'];
|
||||
$proxy_port = @$proxy['port'];
|
||||
$proxy_user = @$proxy['user'];
|
||||
$proxy_pass = @$proxy['pass'];
|
||||
|
||||
if ($proxy_port == '') {
|
||||
$proxy_port = 8080;
|
||||
}
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'message', "Using HTTP proxy $host:$port");
|
||||
}
|
||||
}
|
||||
if (empty($port)) {
|
||||
$port = 80;
|
||||
}
|
||||
// use _pearweb to get file
|
||||
$retrieved = explode("\n", $this->_remote->_pearweb->receiveHttp($url));
|
||||
$headers = array();
|
||||
$line = array_shift($retrieved);
|
||||
while (strlen(trim($line))) {
|
||||
if (preg_match('/^([^:]+):\s+(.*)\s*$/', $line, $matches)) {
|
||||
$headers[strtolower($matches[1])] = trim($matches[2]);
|
||||
} elseif (preg_match('|^HTTP/1.[01] ([0-9]{3}) |', $line, $matches)) {
|
||||
if ($matches[1] != 200) {
|
||||
return PEAR::raiseError("File http://$host:$port$path not valid (received: $line)");
|
||||
}
|
||||
}
|
||||
$line = array_shift($retrieved);
|
||||
}
|
||||
$retrieved = join("\n", $retrieved);
|
||||
if (isset($headers['content-disposition']) &&
|
||||
preg_match('/\sfilename=\"([^;]*\S)\"\s*(;|$)/', $headers['content-disposition'], $matches)) {
|
||||
$save_as = basename($matches[1]);
|
||||
} else {
|
||||
$save_as = basename($url);
|
||||
}
|
||||
if ($callback) {
|
||||
$tmp = call_user_func($callback, 'saveas', $save_as);
|
||||
if ($tmp) {
|
||||
$save_as = $tmp;
|
||||
}
|
||||
}
|
||||
$dest_file = $save_dir . DIRECTORY_SEPARATOR . $save_as;
|
||||
if (!$wp = @fopen($dest_file, 'wb')) {
|
||||
fclose($fp);
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg));
|
||||
}
|
||||
return PEAR::raiseError("could not open $dest_file for writing");
|
||||
}
|
||||
if (isset($headers['content-length'])) {
|
||||
$length = $headers['content-length'];
|
||||
} else {
|
||||
$length = -1;
|
||||
}
|
||||
$bytes = 0;
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'start', array(basename($dest_file), $length));
|
||||
}
|
||||
$start = 0;
|
||||
while ($start < strlen($retrieved) - 1) {
|
||||
$data = substr($retrieved, $start, 1024);
|
||||
$start += 1024;
|
||||
$bytes += strlen($data);
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'bytesread', $bytes);
|
||||
}
|
||||
if (!@fwrite($wp, $data)) {
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg));
|
||||
}
|
||||
return PEAR::raiseError("$dest_file: write failed ($php_errormsg)");
|
||||
}
|
||||
}
|
||||
fclose($wp);
|
||||
if ($callback) {
|
||||
call_user_func($callback, 'done', $bytes);
|
||||
}
|
||||
return $dest_file;
|
||||
}
|
||||
}
|
||||
?>
|
1
pear/tests/merge2.input
Normal file
1
pear/tests/merge2.input
Normal file
@ -0,0 +1 @@
|
||||
a:2:{s:7:"verbose";i:35;s:10:"__channels";a:2:{s:5:"test1";a:1:{s:7:"verbose";i:898;}s:5:"test2";a:1:{s:7:"verbose";i:899;}}}
|
1545
pear/tests/pear_channelfile.phpt
Normal file
1545
pear/tests/pear_channelfile.phpt
Normal file
File diff suppressed because it is too large
Load Diff
447
pear/tests/pear_installer_installFile_channels.phpt
Normal file
447
pear/tests/pear_installer_installFile_channels.phpt
Normal file
@ -0,0 +1,447 @@
|
||||
--TEST--
|
||||
PEAR_Installer test _installFile() with channels
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!getenv('PHP_PEAR_RUNTESTS')) {
|
||||
echo 'skip';
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$temp_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'testinstallertemp';
|
||||
if (!is_dir($temp_path)) {
|
||||
mkdir($temp_path);
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'php')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'php');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'data')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'data');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'doc')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'doc');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'test')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'test');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'ext')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'ext');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'script')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'script');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'tmp')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'tmp');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'bin')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'bin');
|
||||
}
|
||||
// make the fake configuration - we'll use one of these and it should work
|
||||
$config = serialize(array('master_server' => 'pear.php.net',
|
||||
'default_channel' => 'pear',
|
||||
'php_dir' => $temp_path . DIRECTORY_SEPARATOR . 'php',
|
||||
'ext_dir' => $temp_path . DIRECTORY_SEPARATOR . 'ext',
|
||||
'data_dir' => $temp_path . DIRECTORY_SEPARATOR . 'data',
|
||||
'doc_dir' => $temp_path . DIRECTORY_SEPARATOR . 'doc',
|
||||
'test_dir' => $temp_path . DIRECTORY_SEPARATOR . 'tests',
|
||||
'bin_dir' => $temp_path . DIRECTORY_SEPARATOR . 'bin',
|
||||
'__channels' =>
|
||||
array(
|
||||
'test' => array(
|
||||
'php_dir' => $temp_path . DIRECTORY_SEPARATOR . 'php' . DIRECTORY_SEPARATOR . 'test',
|
||||
'ext_dir' => $temp_path . DIRECTORY_SEPARATOR . 'ext' . DIRECTORY_SEPARATOR . 'test',
|
||||
'data_dir' => $temp_path . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'test',
|
||||
'doc_dir' => $temp_path . DIRECTORY_SEPARATOR . 'doc' . DIRECTORY_SEPARATOR . 'test',
|
||||
'test_dir' => $temp_path . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'tests',
|
||||
'bin_dir' => $temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test',
|
||||
),
|
||||
)));
|
||||
touch($temp_path . DIRECTORY_SEPARATOR . 'pear.conf');
|
||||
$fp = fopen($temp_path . DIRECTORY_SEPARATOR . 'pear.conf', 'w');
|
||||
fwrite($fp, $config);
|
||||
fclose($fp);
|
||||
touch($temp_path . DIRECTORY_SEPARATOR . 'pear.ini');
|
||||
$fp = fopen($temp_path . DIRECTORY_SEPARATOR . 'pear.ini', 'w');
|
||||
fwrite($fp, $config);
|
||||
fclose($fp);
|
||||
|
||||
putenv('PHP_PEAR_SYSCONF_DIR='.$temp_path);
|
||||
$home = getenv('HOME');
|
||||
if (!empty($home)) {
|
||||
// for PEAR_Config initialization
|
||||
putenv('HOME="'.$temp_path);
|
||||
}
|
||||
require_once 'PEAR/Config.php';
|
||||
$config = &PEAR_Config::singleton($temp_path . DIRECTORY_SEPARATOR . 'pear.ini');
|
||||
require_once 'PEAR/Registry.php';
|
||||
$reg = &new PEAR_Registry($config->get('php_dir', null, 'pear'));
|
||||
require_once 'PEAR/ChannelFile.php';
|
||||
$chan = new PEAR_ChannelFile;
|
||||
$chan->setName('test');
|
||||
$chan->setServer('test');
|
||||
$chan->setSummary('test');
|
||||
$reg->addChannel($chan);
|
||||
require_once "PEAR/Installer.php";
|
||||
|
||||
// no UI is needed for these tests
|
||||
$ui = false;
|
||||
$installer = new PEAR_Installer($ui);
|
||||
$curdir = getcwd();
|
||||
chdir(dirname(__FILE__));
|
||||
|
||||
echo "test _installFile():\n";
|
||||
$fp = fopen($temp_path . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'installer2.phpt.testfile.php', 'w');
|
||||
fwrite($fp, 'a');
|
||||
fclose($fp);
|
||||
// pretend we just parsed a package.xml
|
||||
$installer->pkginfo = array('package' => 'Foo', 'channel' => 'test');
|
||||
|
||||
echo "install as role=\"php\":\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'php'),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo 'file php/test/.tmpinstaller2.phpt.testfile.php exists? => ';
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php' . DIRECTORY_SEPARATOR . 'test' .
|
||||
DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php') ? "yes\n" : "no\n");
|
||||
|
||||
echo "install as role=\"ext\":\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'ext'),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo 'file ext/test/.tmpinstaller2.phpt.testfile.php exists? => ';
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'ext' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php') ? "yes\n" : "no\n");
|
||||
|
||||
echo "install as role=\"data\":\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'data'),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo 'file data/test/.tmpinstaller2.phpt.testfile.php exists? => ';
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'Foo' . DIRECTORY_SEPARATOR . '.tmpinstaller2.phpt.testfile.php') ? "yes\n" : "no\n");
|
||||
|
||||
echo "install as role=\"doc\":\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'doc'),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo 'file doc/test/.tmpinstaller2.phpt.testfile.php exists? => ';
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'doc' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'Foo' . DIRECTORY_SEPARATOR . '.tmpinstaller2.phpt.testfile.php') ? "yes\n" : "no\n");
|
||||
|
||||
echo "install as role=\"test\":\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'test'),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo 'file test/tests/.tmpinstaller2.phpt.testfile.php exists? => ';
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'tests'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'Foo' . DIRECTORY_SEPARATOR . '.tmpinstaller2.phpt.testfile.php') ? "yes\n" : "no\n");
|
||||
|
||||
echo "install as role=\"script\":\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script'),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo 'file bin/test/.tmpinstaller2.phpt.testfile.php exists? => ';
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php') ? "yes\n" : "no\n");
|
||||
|
||||
$installer->rollbackFileTransaction();
|
||||
|
||||
echo "install as invalid role=\"klingon\":\n";
|
||||
$err = $installer->_installFile('installer2.phpt.testfile.php', array('role' => 'klingon'),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array());
|
||||
echo 'returned PEAR_Error: ' . (get_class($err) == 'pear_error' ? "yes\n" : "no\n");
|
||||
if (is_object($err)) {
|
||||
echo 'message: ' . $err->getMessage() . "\n\n";
|
||||
}
|
||||
echo 'file bin/test/.tmpinstaller2.phpt.testfile.php exists? => ';
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php') ? "yes\n" : "no\n");
|
||||
|
||||
echo "install non-existent file:\n";
|
||||
$err = $installer->_installFile('....php', array('role' => 'php'),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array());
|
||||
echo 'returned PEAR_Error: ' . (get_class($err) == 'pear_error' ? "yes\n" : "no\n");
|
||||
if (is_object($err)) {
|
||||
echo 'message: ' . $err->getMessage() . "\n";
|
||||
}
|
||||
echo 'file php/test/.tmp....php exists? => ';
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmp....php') ? "yes\n" : "no\n");
|
||||
|
||||
$fp = fopen($temp_path . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'installer2.phpt.testfile.php', 'w');
|
||||
fwrite($fp, '@TEST@ stuff');
|
||||
fclose($fp);
|
||||
|
||||
echo "\ntest valid md5sum:\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script', 'md5sum' => md5('@TEST@ stuff')),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo 'file bin/test/.tmpinstaller2.phpt.testfile.php exists? => ';
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php') ? "yes\n" : "no\n");
|
||||
|
||||
$installer->rollbackFileTransaction();
|
||||
|
||||
echo "test invalid md5sum:\n";
|
||||
$err = $installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script', 'md5sum' => md5('oops stuff')),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array());
|
||||
echo 'returned PEAR_Error: ' . (get_class($err) == 'pear_error' ? "yes\n" : "no\n");
|
||||
if (is_object($err)) {
|
||||
echo 'message: ' . ($err->getMessage() == 'bad md5sum for file ' . $temp_path . DIRECTORY_SEPARATOR . 'bin' .
|
||||
DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR . 'installer2.phpt.testfile.php' ? 'match' : 'no match') . "\n";
|
||||
}
|
||||
echo 'file bin/test/.tmpinstaller2.phpt.testfile.php exists? => ';
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php') ? "yes\n" : "no\n");
|
||||
|
||||
echo "test invalid md5sum with --force:\n";
|
||||
ob_start();
|
||||
$err = $installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script', 'md5sum' => md5('oops stuff')),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array('force' => true));
|
||||
$warning = ob_get_contents();
|
||||
ob_end_clean();
|
||||
echo 'warning : ';
|
||||
echo ($warning == 'warning : bad md5sum for file ' . $temp_path . DIRECTORY_SEPARATOR . 'bin' .
|
||||
DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR . "installer2.phpt.testfile.php\n" ? "match\n" : "no match\n");
|
||||
echo 'returned PEAR_Error: ' . (get_class($err) == 'pear_error' ? "yes\n" : "no\n");
|
||||
if (is_object($err)) {
|
||||
echo 'message: ' . ($err->getMessage() == 'bad md5sum for file ' . $temp_path . DIRECTORY_SEPARATOR . 'bin' .
|
||||
DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR . 'installer2.phpt.testfile.php' ? 'match' : 'no match') . "\n";
|
||||
}
|
||||
echo 'file bin/test/.tmpinstaller2.phpt.testfile.php exists? => ';
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php') ? "yes\n" : "no\n");
|
||||
|
||||
define('PEARINSTALLERTEST2_FAKE_FOO_CONST', 'good');
|
||||
echo "\ntest replacements:\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script',
|
||||
'replacements' => array(array('type' => 'php-const', 'from' => '@TEST@', 'to' => 'PEARINSTALLERTEST2_FAKE_FOO_CONST'))),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo "==>test php-const replacement: equals 'good stuff'? => ";
|
||||
if (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'))
|
||||
{
|
||||
$a = implode(file($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'), '');
|
||||
echo "$a\n";
|
||||
} else {
|
||||
echo "no! file installation failed\n";
|
||||
}
|
||||
$installer->rollbackFileTransaction();
|
||||
|
||||
echo "==>test invalid php-const replacement:\n";
|
||||
$err = $installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script',
|
||||
'replacements' => array(array('type' => 'php-const', 'from' => '@TEST@', 'to' => '%PEARINSTALLERTEST2_FAKE_FOO_CONST'))),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array());
|
||||
if (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'))
|
||||
{
|
||||
$a = implode(file($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'), '');
|
||||
echo "$a\n";
|
||||
} else {
|
||||
echo "no! file installation failed\n";
|
||||
}
|
||||
|
||||
$installer->rollbackFileTransaction();
|
||||
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script',
|
||||
'replacements' => array(array('type' => 'pear-config', 'from' => '@TEST@', 'to' => 'master_server'))),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo "==>test pear-config replacement: equals 'test stuff'? => ";
|
||||
if (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'))
|
||||
{
|
||||
$a = implode(file($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'), '');
|
||||
echo "$a\n";
|
||||
} else {
|
||||
echo "no! file installation failed\n";
|
||||
}
|
||||
$installer->rollbackFileTransaction();
|
||||
|
||||
echo "==>test invalid pear-config replacement\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script',
|
||||
'replacements' => array(array('type' => 'pear-config', 'from' => '@TEST@', 'to' => 'blahblahblah'))),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
if (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'))
|
||||
{
|
||||
$a = implode(file($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'), '');
|
||||
echo "$a\n";
|
||||
} else {
|
||||
echo "no! file installation failed\n";
|
||||
}
|
||||
$installer->rollbackFileTransaction();
|
||||
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script',
|
||||
'replacements' => array(array('type' => 'package-info', 'from' => '@TEST@', 'to' => 'package'))),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo "==>test package-info replacement: equals 'Foo stuff'? => ";
|
||||
if (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'))
|
||||
{
|
||||
$a = implode(file($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'), '');
|
||||
echo "$a\n";
|
||||
} else {
|
||||
echo "no! file installation failed\n";
|
||||
}
|
||||
$installer->rollbackFileTransaction();
|
||||
|
||||
echo "==>test invalid package-info replacement:\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script',
|
||||
'replacements' => array(array('type' => 'package-info', 'from' => '@TEST@', 'to' => 'gronk'))),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
if (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'))
|
||||
{
|
||||
$a = implode(file($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpinstaller2.phpt.testfile.php'), '');
|
||||
echo "$a\n";
|
||||
} else {
|
||||
echo "no! file installation failed\n";
|
||||
}
|
||||
$installer->rollbackFileTransaction();
|
||||
|
||||
echo "\ntest install-as:\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script',
|
||||
'install-as' => 'foobar.php'),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo "==>test install as 'foobar.php'. file exists? ";
|
||||
if (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'.tmpfoobar.php'))
|
||||
{
|
||||
echo "yes\n";
|
||||
} else {
|
||||
echo "no\n";
|
||||
}
|
||||
$installer->rollbackFileTransaction();
|
||||
|
||||
echo "\ntest baseinstalldir:\n";
|
||||
var_dump($installer->_installFile('installer2.phpt.testfile.php', array('role' => 'script',
|
||||
'baseinstalldir' => 'Foo/Mine'),
|
||||
$temp_path . DIRECTORY_SEPARATOR . 'tmp', array()));
|
||||
echo "==>test baseinstalldir = 'Foo/Mine'. file exists? ";
|
||||
if (file_exists($temp_path . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'test'
|
||||
. DIRECTORY_SEPARATOR .
|
||||
'Foo' . DIRECTORY_SEPARATOR . 'Mine' . DIRECTORY_SEPARATOR . '.tmpinstaller2.phpt.testfile.php'))
|
||||
{
|
||||
echo "yes\n";
|
||||
} else {
|
||||
echo "no\n";
|
||||
}
|
||||
$installer->rollbackFileTransaction();
|
||||
|
||||
//cleanup
|
||||
chdir($curdir);
|
||||
cleanall($temp_path);
|
||||
function cleanall($dir)
|
||||
{
|
||||
$dp = opendir($dir);
|
||||
while ($ent = readdir($dp)) {
|
||||
if ($ent == '.' || $ent == '..') {
|
||||
continue;
|
||||
}
|
||||
if (is_dir($dir . DIRECTORY_SEPARATOR . $ent)) {
|
||||
cleanall($dir . DIRECTORY_SEPARATOR . $ent);
|
||||
} else {
|
||||
unlink($dir . DIRECTORY_SEPARATOR . $ent);
|
||||
}
|
||||
}
|
||||
closedir($dp);
|
||||
rmdir($dir);
|
||||
}
|
||||
?>
|
||||
--GET--
|
||||
--POST--
|
||||
--EXPECT--
|
||||
test _installFile():
|
||||
install as role="php":
|
||||
int(1)
|
||||
file php/test/.tmpinstaller2.phpt.testfile.php exists? => yes
|
||||
install as role="ext":
|
||||
int(1)
|
||||
file ext/test/.tmpinstaller2.phpt.testfile.php exists? => yes
|
||||
install as role="data":
|
||||
int(1)
|
||||
file data/test/.tmpinstaller2.phpt.testfile.php exists? => yes
|
||||
install as role="doc":
|
||||
int(1)
|
||||
file doc/test/.tmpinstaller2.phpt.testfile.php exists? => yes
|
||||
install as role="test":
|
||||
int(1)
|
||||
file test/tests/.tmpinstaller2.phpt.testfile.php exists? => yes
|
||||
install as role="script":
|
||||
int(1)
|
||||
file bin/test/.tmpinstaller2.phpt.testfile.php exists? => yes
|
||||
install as invalid role="klingon":
|
||||
returned PEAR_Error: yes
|
||||
message: Invalid role `klingon' for file installer2.phpt.testfile.php
|
||||
|
||||
file bin/test/.tmpinstaller2.phpt.testfile.php exists? => no
|
||||
install non-existent file:
|
||||
returned PEAR_Error: yes
|
||||
message: file does not exist
|
||||
file php/test/.tmp....php exists? => no
|
||||
|
||||
test valid md5sum:
|
||||
int(1)
|
||||
file bin/test/.tmpinstaller2.phpt.testfile.php exists? => yes
|
||||
test invalid md5sum:
|
||||
returned PEAR_Error: yes
|
||||
message: match
|
||||
file bin/test/.tmpinstaller2.phpt.testfile.php exists? => no
|
||||
test invalid md5sum with --force:
|
||||
warning : match
|
||||
returned PEAR_Error: no
|
||||
file bin/test/.tmpinstaller2.phpt.testfile.php exists? => yes
|
||||
|
||||
test replacements:
|
||||
int(1)
|
||||
==>test php-const replacement: equals 'good stuff'? => good stuff
|
||||
==>test invalid php-const replacement:
|
||||
invalid php-const replacement: %PEARINSTALLERTEST2_FAKE_FOO_CONST
|
||||
@TEST@ stuff
|
||||
int(1)
|
||||
==>test pear-config replacement: equals 'test stuff'? => test stuff
|
||||
==>test invalid pear-config replacement
|
||||
invalid pear-config replacement: blahblahblah
|
||||
int(1)
|
||||
@TEST@ stuff
|
||||
int(1)
|
||||
==>test package-info replacement: equals 'Foo stuff'? => Foo stuff
|
||||
==>test invalid package-info replacement:
|
||||
invalid package-info replacement: gronk
|
||||
int(1)
|
||||
@TEST@ stuff
|
||||
|
||||
test install-as:
|
||||
int(1)
|
||||
==>test install as 'foobar.php'. file exists? yes
|
||||
|
||||
test baseinstalldir:
|
||||
int(1)
|
||||
==>test baseinstalldir = 'Foo/Mine'. file exists? yes
|
||||
|
259
pear/tests/pear_installer_install_channels.phpt
Normal file
259
pear/tests/pear_installer_install_channels.phpt
Normal file
@ -0,0 +1,259 @@
|
||||
--TEST--
|
||||
PEAR_Installer test #4: PEAR_Installer::install() with channels
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!getenv('PHP_PEAR_RUNTESTS')) {
|
||||
echo 'skip';
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$temp_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'testinstallertemp';
|
||||
if (!is_dir($temp_path)) {
|
||||
mkdir($temp_path);
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'php')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'php');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'data')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'data');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'doc')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'doc');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'test')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'test');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'ext')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'ext');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'script')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'script');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'tmp')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'tmp');
|
||||
}
|
||||
if (!is_dir($temp_path . DIRECTORY_SEPARATOR . 'bin')) {
|
||||
mkdir($temp_path . DIRECTORY_SEPARATOR . 'bin');
|
||||
}
|
||||
// make the fake configuration - we'll use one of these and it should work
|
||||
$config = serialize(array('master_server' => 'pear.php.net',
|
||||
'php_dir' => $temp_path . DIRECTORY_SEPARATOR . 'php',
|
||||
'ext_dir' => $temp_path . DIRECTORY_SEPARATOR . 'ext',
|
||||
'data_dir' => $temp_path . DIRECTORY_SEPARATOR . 'data',
|
||||
'doc_dir' => $temp_path . DIRECTORY_SEPARATOR . 'doc',
|
||||
'test_dir' => $temp_path . DIRECTORY_SEPARATOR . 'test',
|
||||
'bin_dir' => $temp_path . DIRECTORY_SEPARATOR . 'bin',));
|
||||
touch($temp_path . DIRECTORY_SEPARATOR . 'pear.conf');
|
||||
$fp = fopen($temp_path . DIRECTORY_SEPARATOR . 'pear.conf', 'w');
|
||||
fwrite($fp, $config);
|
||||
fclose($fp);
|
||||
touch($temp_path . DIRECTORY_SEPARATOR . 'pear.ini');
|
||||
$fp = fopen($temp_path . DIRECTORY_SEPARATOR . 'pear.ini', 'w');
|
||||
fwrite($fp, $config);
|
||||
fclose($fp);
|
||||
|
||||
putenv('PHP_PEAR_SYSCONF_DIR='.$temp_path);
|
||||
$home = getenv('HOME');
|
||||
if (!empty($home)) {
|
||||
// for PEAR_Config initialization
|
||||
putenv('HOME="'.$temp_path);
|
||||
}
|
||||
require_once "PEAR/Installer.php";
|
||||
|
||||
// no UI is needed for these tests
|
||||
$ui = false;
|
||||
$installer = new PEAR_Installer($ui);
|
||||
$curdir = getcwd();
|
||||
chdir(dirname(__FILE__));
|
||||
|
||||
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'catchit');
|
||||
|
||||
$error_to_catch = false;
|
||||
function catchit($err)
|
||||
{
|
||||
global $error_to_catch;
|
||||
if ($error_to_catch) {
|
||||
if ($err->getMessage() == $error_to_catch) {
|
||||
$error_to_catch = false;
|
||||
echo "Caught expected error\n";
|
||||
return;
|
||||
}
|
||||
}
|
||||
echo "Caught error: " . $err->getMessage() . "\n";
|
||||
}
|
||||
|
||||
echo "Test package.xml direct install:\n";
|
||||
$installer->install(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'test-pkg6' . DIRECTORY_SEPARATOR . 'package.xml');
|
||||
$reg = &new PEAR_Registry($temp_path . DIRECTORY_SEPARATOR . 'php');
|
||||
var_dump($reg->listPackages());
|
||||
echo "zoorb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'zoorb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/Mopreeb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'Mopreeb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/oggbrzitzkee.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'oggbrzitzkee.php')) ? "yes\n" : "no\n";
|
||||
echo "After uninstall:\n";
|
||||
$installer->uninstall('pkg6');
|
||||
var_dump($reg->listPackages());
|
||||
echo "zoorb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'zoorb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/Mopreeb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'Mopreeb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/oggbrzitzkee.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'oggbrzitzkee.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness exists? ";
|
||||
echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'))
|
||||
? "yes\n" : "no\n";
|
||||
|
||||
echo "Test .tgz install:\n";
|
||||
$installer->install(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'test-pkg6' . DIRECTORY_SEPARATOR . 'pkg6-1.1.tgz');
|
||||
$reg = &new PEAR_Registry($temp_path . DIRECTORY_SEPARATOR . 'php');
|
||||
var_dump($reg->listPackages());
|
||||
echo "zoorb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'zoorb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/Mopreeb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'Mopreeb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/oggbrzitzkee.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'oggbrzitzkee.php')) ? "yes\n" : "no\n";
|
||||
echo "After uninstall:\n";
|
||||
$installer->uninstall('pkg6');
|
||||
var_dump($reg->listPackages());
|
||||
echo "zoorb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'zoorb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/Mopreeb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'Mopreeb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/oggbrzitzkee.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'oggbrzitzkee.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness exists? ";
|
||||
echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'))
|
||||
? "yes\n" : "no\n";
|
||||
|
||||
echo "Test invalid .tgz install:\n";
|
||||
$error_to_catch = 'unable to unpack ' . dirname(__FILE__) . DIRECTORY_SEPARATOR .
|
||||
'test-pkg6' . DIRECTORY_SEPARATOR . 'invalidtgz.tgz';
|
||||
$installer->install(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'test-pkg6' . DIRECTORY_SEPARATOR . 'invalidtgz.tgz');
|
||||
$reg = &new PEAR_Registry($temp_path . DIRECTORY_SEPARATOR . 'php');
|
||||
var_dump($reg->listPackages());
|
||||
echo "zoorb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'zoorb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/Mopreeb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'Mopreeb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/oggbrzitzkee.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'oggbrzitzkee.php')) ? "yes\n" : "no\n";
|
||||
|
||||
echo "Test missing package.xml in .tgz install:\n";
|
||||
$installer->install(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'test-pkg6' . DIRECTORY_SEPARATOR . 'nopackagexml.tgz');
|
||||
$reg = &new PEAR_Registry($temp_path . DIRECTORY_SEPARATOR . 'php');
|
||||
var_dump($reg->listPackages());
|
||||
echo "zoorb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'zoorb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/Mopreeb.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'Mopreeb.php')) ? "yes\n" : "no\n";
|
||||
echo "goompness/oggbrzitzkee.php exists? ";
|
||||
echo (file_exists($temp_path . DIRECTORY_SEPARATOR . 'php'
|
||||
. DIRECTORY_SEPARATOR . 'groob' . DIRECTORY_SEPARATOR . 'goompness'
|
||||
. DIRECTORY_SEPARATOR . 'oggbrzitzkee.php')) ? "yes\n" : "no\n";
|
||||
|
||||
chdir($curdir);
|
||||
cleanall($temp_path);
|
||||
|
||||
// ------------------------------------------------------------------------- //
|
||||
|
||||
function cleanall($dir)
|
||||
{
|
||||
$dp = opendir($dir);
|
||||
while ($ent = readdir($dp)) {
|
||||
if ($ent == '.' || $ent == '..') {
|
||||
continue;
|
||||
}
|
||||
if (is_dir($dir . DIRECTORY_SEPARATOR . $ent)) {
|
||||
cleanall($dir . DIRECTORY_SEPARATOR . $ent);
|
||||
} else {
|
||||
unlink($dir . DIRECTORY_SEPARATOR . $ent);
|
||||
}
|
||||
}
|
||||
closedir($dp);
|
||||
rmdir($dir);
|
||||
}
|
||||
?>
|
||||
--GET--
|
||||
--POST--
|
||||
--EXPECT--
|
||||
Test package.xml direct install:
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(4) "pkg6"
|
||||
}
|
||||
zoorb.php exists? yes
|
||||
goompness/Mopreeb.php exists? yes
|
||||
goompness/oggbrzitzkee.php exists? yes
|
||||
After uninstall:
|
||||
array(0) {
|
||||
}
|
||||
zoorb.php exists? no
|
||||
goompness/Mopreeb.php exists? no
|
||||
goompness/oggbrzitzkee.php exists? no
|
||||
goompness exists? no
|
||||
Test .tgz install:
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(4) "pkg6"
|
||||
}
|
||||
zoorb.php exists? yes
|
||||
goompness/Mopreeb.php exists? yes
|
||||
goompness/oggbrzitzkee.php exists? yes
|
||||
After uninstall:
|
||||
array(0) {
|
||||
}
|
||||
zoorb.php exists? no
|
||||
goompness/Mopreeb.php exists? no
|
||||
goompness/oggbrzitzkee.php exists? no
|
||||
goompness exists? no
|
||||
Test invalid .tgz install:
|
||||
Caught error: Invalid checksum for file "<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<!DOCTYPE package SYSTEM "http://pear.php.net/dtd/" : 37649 calculated, 0 expected
|
||||
Caught expected error
|
||||
array(0) {
|
||||
}
|
||||
zoorb.php exists? no
|
||||
goompness/Mopreeb.php exists? no
|
||||
goompness/oggbrzitzkee.php exists? no
|
||||
Test missing package.xml in .tgz install:
|
||||
warning : you are using an archive with an old format
|
||||
Caught error: no package.xml file after extracting the archive
|
||||
array(0) {
|
||||
}
|
||||
zoorb.php exists? no
|
||||
goompness/Mopreeb.php exists? no
|
||||
goompness/oggbrzitzkee.php exists? no
|
290
pear/tests/pear_registry_1.1.phpt
Normal file
290
pear/tests/pear_registry_1.1.phpt
Normal file
@ -0,0 +1,290 @@
|
||||
--TEST--
|
||||
PEAR_Registry v1.1
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!getenv('PHP_PEAR_RUNTESTS')) {
|
||||
echo 'skip';
|
||||
}
|
||||
$statedir = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'registry_tester';
|
||||
if (file_exists($statedir)) {
|
||||
// don't delete existing directories!
|
||||
echo 'skip';
|
||||
}
|
||||
include_once 'PEAR/Registry.php';
|
||||
$pv = phpversion() . '';
|
||||
$av = $pv{0} == '4' ? 'apiversion' : 'apiVersion';
|
||||
if (!in_array($av, get_class_methods('PEAR_Registry'))) {
|
||||
echo 'skip';
|
||||
}
|
||||
if (PEAR_Registry::apiVersion() != '1.1') {
|
||||
echo 'skip';
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
error_reporting(E_ALL);
|
||||
include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pear_registry_inc.php';
|
||||
include_once "PEAR/Registry.php";
|
||||
PEAR::setErrorHandling(PEAR_ERROR_DIE, "%s\n");
|
||||
$statedir = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'registry_tester';
|
||||
cleanall();
|
||||
|
||||
$files1 = array(
|
||||
"pkg1-1.php" => array(
|
||||
"role" => "php",
|
||||
),
|
||||
"pkg1-2.php" => array(
|
||||
"role" => "php",
|
||||
"baseinstalldir" => "pkg1",
|
||||
),
|
||||
);
|
||||
$files1_test = array(
|
||||
"pkg12-1.php" => array(
|
||||
"role" => "php",
|
||||
),
|
||||
"pkg12-2.php" => array(
|
||||
"role" => "php",
|
||||
"baseinstalldir" => "pkg1",
|
||||
),
|
||||
);
|
||||
$files1_grnok = array(
|
||||
"pkg32-1.php" => array(
|
||||
"role" => "php",
|
||||
),
|
||||
"pkg32-2.php" => array(
|
||||
"role" => "php",
|
||||
"baseinstalldir" => "pkg1",
|
||||
),
|
||||
);
|
||||
$files2 = array(
|
||||
"pkg2-1.php" => array(
|
||||
"role" => "php",
|
||||
),
|
||||
"pkg2-2.php" => array(
|
||||
"role" => "php",
|
||||
"baseinstalldir" => "pkg2",
|
||||
),
|
||||
);
|
||||
$files3 = array(
|
||||
"pkg3-1.php" => array(
|
||||
"role" => "php",
|
||||
),
|
||||
"pkg3-2.php" => array(
|
||||
"role" => "php",
|
||||
"baseinstalldir" => "pkg3",
|
||||
),
|
||||
);
|
||||
$files3_new = array(
|
||||
"pkg3-3.php" => array(
|
||||
"role" => "php",
|
||||
"baseinstalldir" => "pkg3",
|
||||
),
|
||||
"pkg3-4.php" => array(
|
||||
"role" => "php",
|
||||
),
|
||||
);
|
||||
|
||||
print "creating registry object\n";
|
||||
$reg = new PEAR_Registry($statedir);
|
||||
dumpall($reg);
|
||||
|
||||
$reg->addPackage("pkg1", array("name" => "pkg1", "version" => "1.0", "filelist" => $files1));
|
||||
dumpall($reg);
|
||||
|
||||
$reg->addPackage("pkg2", array("name" => "pkg2", "version" => "2.0", "filelist" => $files2));
|
||||
$reg->addPackage("pkg3", array("name" => "pkg3", "version" => "3.0", "filelist" => $files3));
|
||||
dumpall($reg);
|
||||
|
||||
$reg->updatePackage("pkg2", array("version" => "2.1"));
|
||||
dumpall($reg);
|
||||
|
||||
var_dump($reg->deletePackage("pkg2"));
|
||||
dumpall($reg);
|
||||
|
||||
var_dump($reg->deletePackage("pkg2"));
|
||||
dumpall($reg);
|
||||
|
||||
$reg->updatePackage("pkg3", array("version" => "3.1b1", "status" => "beta"));
|
||||
dumpall($reg);
|
||||
|
||||
$testing = $reg->checkFilemap(array_merge($files3, $files2));
|
||||
$ok = ($testing == array('pkg3-1.php' => 'pkg3', 'pkg3' . DIRECTORY_SEPARATOR . 'pkg3-2.php' => 'pkg3'));
|
||||
echo 'filemap OK? ' . ($ok ? "yes\n" : "no\n");
|
||||
if (!$ok) {
|
||||
var_dump($testing);
|
||||
}
|
||||
|
||||
$reg->updatePackage("pkg3", array("filelist" => $files3_new));
|
||||
dumpall($reg);
|
||||
|
||||
echo "testing channel registry\n\n";
|
||||
|
||||
print "test add channel\n";
|
||||
|
||||
require_once 'PEAR/ChannelFile.php';
|
||||
$chan = new PEAR_ChannelFile;
|
||||
|
||||
$chan->setName('test');
|
||||
$chan->setServer('pear.php.net');
|
||||
$chan->setSummary('hello');
|
||||
$reg->addChannel($chan);
|
||||
|
||||
dumpall($reg);
|
||||
|
||||
echo "test add bad channel\n";
|
||||
$chan = new PEAR_ChannelFile;
|
||||
|
||||
$chan->setServer('pear.php.net');
|
||||
$chan->setSummary('hello');
|
||||
$reg->addChannel($chan);
|
||||
|
||||
dumpall($reg);
|
||||
|
||||
print "test add good package\n";
|
||||
$reg->addPackage('pkg1', array('name' => 'pkg1', 'version' => '1.0', 'filelist' => $files1_test), 'test');
|
||||
|
||||
dumpall($reg);
|
||||
|
||||
echo "test add package with unknown channel\n";
|
||||
|
||||
var_dump($reg->addPackage('pkg2', array('name'=> 'pkg2', 'version' => '1.0', 'filelist' => $files1_grnok), 'grnok'));
|
||||
|
||||
dumpall($reg);
|
||||
|
||||
echo "test channel exists\n";
|
||||
|
||||
var_dump($reg->channelExists('test'));
|
||||
var_dump($reg->channelExists('pear'));
|
||||
var_dump($reg->channelExists('grnok'));
|
||||
|
||||
echo "testing restart with new object\n";
|
||||
|
||||
unset($reg);
|
||||
|
||||
$reg = &new PEAR_Registry($statedir);
|
||||
|
||||
dumpall($reg);
|
||||
|
||||
echo "test delete channel with packages\n";
|
||||
var_dump($reg->deleteChannel('test'));
|
||||
|
||||
dumpall($reg);
|
||||
|
||||
echo "test delete channel with no packages\n";
|
||||
$reg->deletePackage('pkg1', 'test');
|
||||
|
||||
var_dump($reg->deleteChannel('test'));
|
||||
|
||||
dumpall($reg);
|
||||
|
||||
print "tests done\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
creating registry object
|
||||
dumping registry...
|
||||
channel pear:
|
||||
dump done
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
dump done
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg2: version="2.0" filelist=array(pkg2-1.php[role=php],pkg2-2.php[role=php,baseinstalldir=pkg2])
|
||||
pkg3: version="3.0" filelist=array(pkg3-1.php[role=php],pkg3-2.php[role=php,baseinstalldir=pkg3])
|
||||
dump done
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg2: version="2.1" filelist=array(pkg2-1.php[role=php],pkg2-2.php[role=php,baseinstalldir=pkg2])
|
||||
pkg3: version="3.0" filelist=array(pkg3-1.php[role=php],pkg3-2.php[role=php,baseinstalldir=pkg3])
|
||||
dump done
|
||||
bool(true)
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg3: version="3.0" filelist=array(pkg3-1.php[role=php],pkg3-2.php[role=php,baseinstalldir=pkg3])
|
||||
dump done
|
||||
bool(false)
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg3: version="3.0" filelist=array(pkg3-1.php[role=php],pkg3-2.php[role=php,baseinstalldir=pkg3])
|
||||
dump done
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg3: version="3.1b1" filelist=array(pkg3-1.php[role=php],pkg3-2.php[role=php,baseinstalldir=pkg3]) status="beta"
|
||||
dump done
|
||||
filemap OK? yes
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg3: version="3.1b1" filelist=array(pkg3-3.php[role=php,baseinstalldir=pkg3],pkg3-4.php[role=php]) status="beta"
|
||||
dump done
|
||||
testing channel registry
|
||||
|
||||
test add channel
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg3: version="3.1b1" filelist=array(pkg3-3.php[role=php,baseinstalldir=pkg3],pkg3-4.php[role=php]) status="beta"
|
||||
channel test:
|
||||
dump done
|
||||
test add bad channel
|
||||
caught ErrorStack error:
|
||||
message: Missing channel name
|
||||
code: 6
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg3: version="3.1b1" filelist=array(pkg3-3.php[role=php,baseinstalldir=pkg3],pkg3-4.php[role=php]) status="beta"
|
||||
channel test:
|
||||
dump done
|
||||
test add good package
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg3: version="3.1b1" filelist=array(pkg3-3.php[role=php,baseinstalldir=pkg3],pkg3-4.php[role=php]) status="beta"
|
||||
channel test:
|
||||
pkg1: version="1.0" filelist=array(pkg12-1.php[role=php],pkg12-2.php[role=php,baseinstalldir=pkg1])
|
||||
dump done
|
||||
test add package with unknown channel
|
||||
bool(false)
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg3: version="3.1b1" filelist=array(pkg3-3.php[role=php,baseinstalldir=pkg3],pkg3-4.php[role=php]) status="beta"
|
||||
channel test:
|
||||
pkg1: version="1.0" filelist=array(pkg12-1.php[role=php],pkg12-2.php[role=php,baseinstalldir=pkg1])
|
||||
dump done
|
||||
test channel exists
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(false)
|
||||
testing restart with new object
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg3: version="3.1b1" filelist=array(pkg3-3.php[role=php,baseinstalldir=pkg3],pkg3-4.php[role=php]) status="beta"
|
||||
channel test:
|
||||
pkg1: version="1.0" filelist=array(pkg12-1.php[role=php],pkg12-2.php[role=php,baseinstalldir=pkg1])
|
||||
dump done
|
||||
test delete channel with packages
|
||||
bool(false)
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg3: version="3.1b1" filelist=array(pkg3-3.php[role=php,baseinstalldir=pkg3],pkg3-4.php[role=php]) status="beta"
|
||||
channel test:
|
||||
pkg1: version="1.0" filelist=array(pkg12-1.php[role=php],pkg12-2.php[role=php,baseinstalldir=pkg1])
|
||||
dump done
|
||||
test delete channel with no packages
|
||||
bool(true)
|
||||
dumping registry...
|
||||
channel pear:
|
||||
pkg1: version="1.0" filelist=array(pkg1-1.php[role=php],pkg1-2.php[role=php,baseinstalldir=pkg1])
|
||||
pkg3: version="3.1b1" filelist=array(pkg3-3.php[role=php,baseinstalldir=pkg3],pkg3-4.php[role=php]) status="beta"
|
||||
dump done
|
||||
tests done
|
1
pear/tests/user3.input
Normal file
1
pear/tests/user3.input
Normal file
@ -0,0 +1 @@
|
||||
a:2:{s:7:"verbose";i:60;s:10:"__channels";a:2:{s:5:"test1";a:1:{s:7:"verbose";i:70;}s:5:"test2";a:1:{s:7:"verbose";i:71;}}}
|
Loading…
Reference in New Issue
Block a user