php-src/ext/standard/tests/file/fopen_variation8.phpt
Zoe Slattery e7c8c5d526 fix tests
2009-01-23 09:23:22 +00:00

151 lines
3.1 KiB
PHP

--TEST--
Test fopen() function : variation: use include path and stream context (relative directories in path)
--CREDITS--
Dave Kelsey <d_kelsey@uk.ibm.com>
--FILE--
<?php
/* Prototype : resource fopen(string filename, string mode [, bool use_include_path [, resource context]])
* Description: Open a file or a URL and return a file pointer
* Source code: ext/standard/file.c
* Alias to functions:
*/
$thisTestDir = basename(__FILE__, ".php") . ".dir";
mkdir($thisTestDir);
chdir($thisTestDir);
//create the include directory structure
$workingDir = "workdir";
$filename = basename(__FILE__, ".php") . ".tmp";
$scriptDir = dirname(__FILE__);
$baseDir = getcwd();
$secondFile = $baseDir."/dir2/".$filename;
$firstFile = "../dir1/".$filename;
$scriptFile = $scriptDir.'/'.$filename;
$newdirs = array("dir1", "dir2", "dir3");
$pathSep = ":";
$newIncludePath = "";
if(substr(PHP_OS, 0, 3) == 'WIN' ) {
$pathSep = ";";
}
foreach($newdirs as $newdir) {
mkdir($newdir);
$newIncludePath .= '../'.$newdir.$pathSep;
}
mkdir($workingDir);
chdir($workingDir);
//define the files to go into these directories, create one in dir2
echo "\n--- testing include path ---\n";
set_include_path($newIncludePath);
$modes = array("r", "r+", "rt");
foreach($modes as $mode) {
test_fopen($mode);
}
restore_include_path();
// remove the directory structure
chdir($baseDir);
rmdir($workingDir);
foreach($newdirs as $newdir) {
rmdir($newdir);
}
chdir("..");
rmdir($thisTestDir);
function test_fopen($mode) {
global $scriptFile, $secondFile, $firstFile, $filename;
// create a file in the middle directory
$h = fopen($secondFile, "w");
fwrite($h, (binary) "in dir2");
fclose($h);
echo "\n** testing with mode=$mode **\n";
// should read dir2 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
//create a file in dir1
$h = fopen($firstFile, "w");
fwrite($h, (binary) "in dir1");
fclose($h);
//should now read dir1 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
// create a file in working directory
$h = fopen($filename, "w");
fwrite($h, (binary) "in working dir");
fclose($h);
//should read the dir1 file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
unlink($firstFile);
unlink($secondFile);
//should read the working dir file
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
// create a file in the script directory
$h = fopen($scriptFile, "w");
fwrite($h, (binary) "in script dir");
fclose($h);
//should read the file in script dir
$h = fopen($filename, $mode, true);
fpassthru($h);
fclose($h);
echo "\n";
//cleanup
unlink($filename);
unlink($scriptFile);
}
?>
===DONE===
--EXPECTF--
--- testing include path ---
** testing with mode=r **
in dir2
in dir1
in dir1
in working dir
in script dir
** testing with mode=r+ **
in dir2
in dir1
in dir1
in working dir
in script dir
** testing with mode=rt **
in dir2
in dir1
in dir1
in working dir
in script dir
===DONE===