diff options
author | Greg Beaver <cellog@php.net> | 2003-12-11 05:30:57 +0000 |
---|---|---|
committer | Greg Beaver <cellog@php.net> | 2003-12-11 05:30:57 +0000 |
commit | fa07b7a09c93e8031027634c3f6a94aade5fd612 (patch) | |
tree | fa67d012ef7db07fd41585ddaf6d073168d50e7f /pear | |
parent | a36a6a4b6e15d265b227e967ec76dee430100c60 (diff) | |
download | php-git-fa07b7a09c93e8031027634c3f6a94aade5fd612.tar.gz |
new test case for directory tree deletion on uninstall
Diffstat (limited to 'pear')
-rw-r--r-- | pear/tests/dirtree/multiplepackages/pkg1file.php | 0 | ||||
-rw-r--r-- | pear/tests/dirtree/multiplepackages/pkg2file.php | 0 | ||||
-rw-r--r-- | pear/tests/dirtree/nestedroot/emptydir/fakefile1.php | 0 | ||||
-rw-r--r-- | pear/tests/dirtree/nestedroot/emptydir/nesteddir/nestedfile.php | 0 | ||||
-rw-r--r-- | pear/tests/dirtree/nestedroot/rootfile.php | 0 | ||||
-rw-r--r-- | pear/tests/dirtree/package.xml | 36 | ||||
-rw-r--r-- | pear/tests/dirtree/package2.xml | 41 | ||||
-rw-r--r-- | pear/tests/dirtree/pkg1/randomfile.php | 0 | ||||
-rw-r--r-- | pear/tests/pear_installer5.phpt | 226 |
9 files changed, 303 insertions, 0 deletions
diff --git a/pear/tests/dirtree/multiplepackages/pkg1file.php b/pear/tests/dirtree/multiplepackages/pkg1file.php new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/pear/tests/dirtree/multiplepackages/pkg1file.php diff --git a/pear/tests/dirtree/multiplepackages/pkg2file.php b/pear/tests/dirtree/multiplepackages/pkg2file.php new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/pear/tests/dirtree/multiplepackages/pkg2file.php diff --git a/pear/tests/dirtree/nestedroot/emptydir/fakefile1.php b/pear/tests/dirtree/nestedroot/emptydir/fakefile1.php new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/pear/tests/dirtree/nestedroot/emptydir/fakefile1.php diff --git a/pear/tests/dirtree/nestedroot/emptydir/nesteddir/nestedfile.php b/pear/tests/dirtree/nestedroot/emptydir/nesteddir/nestedfile.php new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/pear/tests/dirtree/nestedroot/emptydir/nesteddir/nestedfile.php diff --git a/pear/tests/dirtree/nestedroot/rootfile.php b/pear/tests/dirtree/nestedroot/rootfile.php new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/pear/tests/dirtree/nestedroot/rootfile.php diff --git a/pear/tests/dirtree/package.xml b/pear/tests/dirtree/package.xml new file mode 100644 index 0000000000..8ba556e5d0 --- /dev/null +++ b/pear/tests/dirtree/package.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> + <!DOCTYPE package SYSTEM "http://pear.php.net/dtd/package-1.0"> + <package version="1.0"> + <name>pkg1</name> + <summary>required test for PEAR_Installer</summary> + <description> + fake package + </description> + <license>PHP License</license> + <maintainers> + <maintainer> + <user>fakeuser</user> + <name>Joe Shmoe</name> + <email>nobody@example.com</email> + <role>lead</role> + </maintainer> + </maintainers> + <release> + <version>1.0</version> + <date>2003-12-11</date> + <state>stable</state> + <notes> + first package + </notes> + <filelist> + <dir name="/" baseinstalldir="test" role="php"> + <dir name="multiplepackages" role="php"> + <file>pkg1file.php</file> + </dir> + <dir name="pkg1" role="php"> + <file>randomfile.php</file> + </dir> + </dir> + </filelist> + </release> + </package> diff --git a/pear/tests/dirtree/package2.xml b/pear/tests/dirtree/package2.xml new file mode 100644 index 0000000000..c0bde59e4a --- /dev/null +++ b/pear/tests/dirtree/package2.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> + <!DOCTYPE package SYSTEM "http://pear.php.net/dtd/package-1.0"> + <package version="1.0"> + <name>pkg2</name> + <summary>required test for PEAR_Installer</summary> + <description> + fake package + </description> + <license>PHP License</license> + <maintainers> + <maintainer> + <user>fakeuser</user> + <name>Joe Shmoe</name> + <email>nobody@example.com</email> + <role>lead</role> + </maintainer> + </maintainers> + <release> + <version>1.0</version> + <date>2003-12-11</date> + <state>stable</state> + <notes> + second package + </notes> + <filelist> + <dir name="/" baseinstalldir="test" role="php"> + <dir name="multiplepackages" role="php"> + <file>pkg2file.php</file> + </dir> + <dir name="nestedroot" role="php"> + <file>rootfile.php</file> + <dir name="emptydir" role="php"> + <dir name="nesteddir" role="php"> + <file>nestedfile.php</file> + </dir> + </dir> + </dir> + </dir> + </filelist> + </release> + </package> diff --git a/pear/tests/dirtree/pkg1/randomfile.php b/pear/tests/dirtree/pkg1/randomfile.php new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/pear/tests/dirtree/pkg1/randomfile.php diff --git a/pear/tests/pear_installer5.phpt b/pear/tests/pear_installer5.phpt new file mode 100644 index 0000000000..77415b9641 --- /dev/null +++ b/pear/tests/pear_installer5.phpt @@ -0,0 +1,226 @@ +--TEST-- +PEAR_Installer test #5: test directory tracking/deletion of installation +--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"; +} + +$installer->install(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'dirtree' . DIRECTORY_SEPARATOR . 'package.xml'); +$installer->install(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'dirtree' . DIRECTORY_SEPARATOR . 'package2.xml'); +$reg = &new PEAR_Registry($temp_path . DIRECTORY_SEPARATOR . 'php'); +var_dump($reg->listPackages()); +$info = $reg->packageInfo('pkg1'); +echo "pkg1 dir tree contains test/? "; +echo (isset($info['filelist']['dirtree'][$temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test'])) ? "yes\n" : "no\n"; +echo "pkg1 dir tree contains test/multiplepackages? "; +echo (isset($info['filelist']['dirtree'][$temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'multiplepackages'])) ? "yes\n" : "no\n"; +echo "pkg1 dir tree contains test/pkg1? "; +echo (isset($info['filelist']['dirtree'][$temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'pkg1'])) ? "yes\n" : "no\n"; + +$info = $reg->packageInfo('pkg2'); +echo "pkg2 dir tree contains test/? "; +echo (isset($info['filelist']['dirtree'][$temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test'])) ? "yes\n" : "no\n"; +echo "pkg2 dir tree contains test/multiplepackages? "; +echo (isset($info['filelist']['dirtree'][$temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'multiplepackages'])) ? "yes\n" : "no\n"; +echo "pkg2 dir tree contains test/nestedroot? "; +echo (isset($info['filelist']['dirtree'][$temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'nestedroot'])) ? "yes\n" : "no\n"; +echo "pkg2 dir tree contains test/nestedroot/emptydir? "; +echo (isset($info['filelist']['dirtree'][$temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'nestedroot' + . DIRECTORY_SEPARATOR . 'emptydir'])) ? "yes\n" : "no\n"; +echo "pkg2 dir tree contains test/nestedroot/emptydir/nesteddir? "; +echo (isset($info['filelist']['dirtree'][$temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'nestedroot' + . DIRECTORY_SEPARATOR . 'emptydir' . DIRECTORY_SEPARATOR . 'nesteddir'])) ? "yes\n" : "no\n"; + +echo "After uninstall of pkg1:\n"; +$installer->uninstall('pkg1'); +echo "test/ exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test')) ? "yes\n" : "no\n"; +echo "test/multiplepackages exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'multiplepackages')) ? "yes\n" : "no\n"; +echo "test/pkg1 exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'pkg1')) ? "yes\n" : "no\n"; +echo "test/nestedroot exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'nestedroot')) ? "yes\n" : "no\n"; +echo "test/nestedroot/emptydir exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'nestedroot' + . DIRECTORY_SEPARATOR . 'emptydir')) ? "yes\n" : "no\n"; +echo "test/nestedroot/emptydir/nesteddir exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'nestedroot' + . DIRECTORY_SEPARATOR . 'emptydir'. DIRECTORY_SEPARATOR . 'nesteddir')) ? "yes\n" : "no\n"; +var_dump($reg->listPackages()); + +echo "After uninstall of pkg2:\n"; +$installer->uninstall('pkg2'); +echo "test/ exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test')) ? "yes\n" : "no\n"; +echo "test/multiplepackages exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'multiplepackages')) ? "yes\n" : "no\n"; +echo "test/pkg1 exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'pkg1')) ? "yes\n" : "no\n"; +echo "test/nestedroot exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'nestedroot')) ? "yes\n" : "no\n"; +echo "test/nestedroot/emptydir exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'nestedroot' + . DIRECTORY_SEPARATOR . 'emptydir')) ? "yes\n" : "no\n"; +echo "test/nestedroot/emptydir/nesteddir exists? "; +echo (is_dir($temp_path . DIRECTORY_SEPARATOR . 'php' + . DIRECTORY_SEPARATOR . 'test' . DIRECTORY_SEPARATOR . 'nestedroot' + . DIRECTORY_SEPARATOR . 'emptydir'. DIRECTORY_SEPARATOR . 'nesteddir')) ? "yes\n" : "no\n"; +var_dump($reg->listPackages()); + +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-- +array(2) { + [0]=> + string(4) "pkg1" + [1]=> + string(4) "pkg2" +} +pkg1 dir tree contains test/? yes +pkg1 dir tree contains test/multiplepackages? yes +pkg1 dir tree contains test/pkg1? yes +pkg2 dir tree contains test/? yes +pkg2 dir tree contains test/multiplepackages? yes +pkg2 dir tree contains test/nestedroot? yes +pkg2 dir tree contains test/nestedroot/emptydir? yes +pkg2 dir tree contains test/nestedroot/emptydir/nesteddir? yes +After uninstall of pkg1: +test/ exists? yes +test/multiplepackages exists? yes +test/pkg1 exists? no +test/nestedroot exists? yes +test/nestedroot/emptydir exists? yes +test/nestedroot/emptydir/nesteddir exists? yes +array(1) { + [0]=> + string(4) "pkg2" +} +After uninstall of pkg2: +test/ exists? no +test/multiplepackages exists? no +test/pkg1 exists? no +test/nestedroot exists? no +test/nestedroot/emptydir exists? no +test/nestedroot/emptydir/nesteddir exists? no +array(0) { +}
\ No newline at end of file |