]> granicus.if.org Git - php/commitdiff
* PEAR_Registry: renamed "upgradePackage" to "updatePackage"
authorStig Bakken <ssb@php.net>
Mon, 29 Oct 2001 12:17:37 +0000 (12:17 +0000)
committerStig Bakken <ssb@php.net>
Mon, 29 Oct 2001 12:17:37 +0000 (12:17 +0000)
* added tests for PEAR_Config and PEAR_Registry

pear/PEAR/Registry.php
pear/tests/pear_config.phpt [new file with mode: 0644]
pear/tests/pear_registry.phpt [new file with mode: 0644]
pear/tests/system.input [new file with mode: 0644]
pear/tests/user.input [new file with mode: 0644]

index 519f3ba340fef02d22ed44731b9b02658fcb8569..7055951654e4e8a84a05a30ba01121c350a23c24 100644 (file)
@@ -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 (file)
index 0000000..186c3a0
--- /dev/null
@@ -0,0 +1,72 @@
+--TEST--
+PEAR_Config
+--FILE--
+<?php
+
+error_reporting(E_ALL);
+include "../PEAR/Config.php";
+copy("system.input", "system.conf");
+copy("user.input", "user.conf");
+PEAR::setErrorHandling(PEAR_ERROR_DIE, "%s\n");
+dumpall();
+
+print "creating config object\n";
+$config = new PEAR_Config("user.conf", "system.conf");
+
+// overriding system values
+$config->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 " <empty>\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: <empty>
+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 (file)
index 0000000..57d2456
--- /dev/null
@@ -0,0 +1,92 @@
+--TEST--
+PEAR_Registry
+--FILE--
+<?php
+
+error_reporting(E_ALL);
+include "../PEAR/Registry.php";
+PEAR::setErrorHandling(PEAR_ERROR_DIE, "%s\n");
+cleanall();
+
+print "creating registry object\n";
+$reg = new PEAR_Registry;
+$reg->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 (file)
index 0000000..9c6bece
--- /dev/null
@@ -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 (file)
index 0000000..e69de29