From: Stig Bakken Date: Mon, 29 Oct 2001 12:17:37 +0000 (+0000) Subject: * PEAR_Registry: renamed "upgradePackage" to "updatePackage" X-Git-Tag: ChangeLog~491 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b60aedc27567e3c8b83ddf7745920f347cff8b89;p=php * PEAR_Registry: renamed "upgradePackage" to "updatePackage" * added tests for PEAR_Config and PEAR_Registry --- diff --git a/pear/PEAR/Registry.php b/pear/PEAR/Registry.php index 519f3ba340..7055951654 100644 --- a/pear/PEAR/Registry.php +++ b/pear/PEAR/Registry.php @@ -19,7 +19,7 @@ // // $Id$ -require_once "Experimental/System.php"; +require_once "System.php"; /** * Administration class used to maintain the installed package database. @@ -97,7 +97,13 @@ class PEAR_Registry if ($this->packageExists($package)) { return false; } - return $this->upgradePackage($package, $info); + $fp = $this->_openPackageFile($package, "w"); + if ($fp === null) { + return false; + } + fwrite($fp, serialize($info)); + $this->_closePackageFile($fp); + return true; } // }}} @@ -110,6 +116,9 @@ class PEAR_Registry $this->listPackages()); } $fp = $this->_openPackageFile($package, "r"); + if ($fp === null) { + return null; + } $data = fread($fp, filesize($this->_packageFileName($package))); $this->_closePackageFile($fp); return unserialize($data); @@ -121,19 +130,23 @@ class PEAR_Registry function deletePackage($package) { $file = $this->_packageFileName($package); - unlink($file); + return @unlink($file); } // }}} - // {{{ upgradePackage() + // {{{ updatePackage() - function upgradePackage($package, $info) + function updatePackage($package, $info) { + $oldinfo = $this->packageInfo($package); + if (empty($oldinfo)) { + return false; + } $fp = $this->_openPackageFile($package, "w"); if ($fp === null) { return false; } - fwrite($fp, serialize($info)); + fwrite($fp, serialize(array_merge($oldinfo, $info))); $this->_closePackageFile($fp); return true; } diff --git a/pear/tests/pear_config.phpt b/pear/tests/pear_config.phpt new file mode 100644 index 0000000000..186c3a0cc3 --- /dev/null +++ b/pear/tests/pear_config.phpt @@ -0,0 +1,72 @@ +--TEST-- +PEAR_Config +--FILE-- +set("master_server", "pear.localdomain"); +$config->writeConfigFile(); +dumpall(); +var_dump($config->get("master_server")); + +// going back to defaults +$config->toDefault("master_server"); +$config->writeConfigFile(); +dumpall(); + +// + +print "done\n"; + +unlink("user.conf"); +unlink("system.conf"); + +// ------------------------------------------------------------------------- // + +function dumpit($file) +{ + $fp = fopen($file, "r"); + print "$file:"; + $data = unserialize(fread($fp, filesize($file))); + fclose($fp); + if (!is_array($data)) { + print " \n"; + return; + } + foreach ($data as $k => $v) { + print " $k=\"$v\""; + } + print "\n"; +} + +function dumpall() +{ + print "dumping...\n"; + dumpit("system.conf"); + dumpit("user.conf"); +} + +?> +--EXPECT-- +dumping... +system.conf: master_server="pear.php.net" +user.conf: +creating config object +dumping... +system.conf: master_server="pear.php.net" +user.conf: master_server="pear.localdomain" +string(16) "pear.localdomain" +dumping... +system.conf: master_server="pear.php.net" +user.conf: +done diff --git a/pear/tests/pear_registry.phpt b/pear/tests/pear_registry.phpt new file mode 100644 index 0000000000..57d2456734 --- /dev/null +++ b/pear/tests/pear_registry.phpt @@ -0,0 +1,92 @@ +--TEST-- +PEAR_Registry +--FILE-- +statedir = getcwd(); +dumpall($reg); +$reg->addPackage("pkg1", array("name" => "pkg1", "version" => "1.0")); +dumpall($reg); +$reg->addPackage("pkg2", array("name" => "pkg2", "version" => "2.0")); +$reg->addPackage("pkg3", array("name" => "pkg3", "version" => "3.0")); +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); + +print "tests done\n"; + +cleanall(); + +// ------------------------------------------------------------------------- // + +function cleanall() +{ + $dp = opendir("."); + while ($ent = readdir($dp)) { + if (substr($ent, -4) == ".inf") { + unlink($ent); + } + } +} + +function dumpall(&$reg) +{ + print "dumping registry...\n"; + $info = $reg->packageInfo(); + foreach ($info as $pkg) { + print $pkg["name"] . ":"; + unset($pkg["name"]); + foreach ($pkg as $k => $v) { + print " $k=\"$v\""; + } + print "\n"; + } + print "dump done\n"; +} + +?> +--EXPECT-- +creating registry object +dumping registry... +dump done +dumping registry... +pkg1: version="1.0" +dump done +dumping registry... +pkg1: version="1.0" +pkg2: version="2.0" +pkg3: version="3.0" +dump done +dumping registry... +pkg1: version="1.0" +pkg2: version="2.1" +pkg3: version="3.0" +dump done +bool(true) +dumping registry... +pkg1: version="1.0" +pkg3: version="3.0" +dump done +bool(false) +dumping registry... +pkg1: version="1.0" +pkg3: version="3.0" +dump done +dumping registry... +pkg1: version="1.0" +pkg3: version="3.1b1" status="beta" +dump done +tests done diff --git a/pear/tests/system.input b/pear/tests/system.input new file mode 100644 index 0000000000..9c6bece157 --- /dev/null +++ b/pear/tests/system.input @@ -0,0 +1 @@ +a:1:{s:13:"master_server";s:12:"pear.php.net";} \ No newline at end of file diff --git a/pear/tests/user.input b/pear/tests/user.input new file mode 100644 index 0000000000..e69de29bb2