Annotation of embedaddon/php/ext/standard/tests/file/fopen_variation8.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Test fopen() function : variation: use include path and stream context (relative directories in path)
! 3: --CREDITS--
! 4: Dave Kelsey <d_kelsey@uk.ibm.com>
! 5: --FILE--
! 6: <?php
! 7: /* Prototype : resource fopen(string filename, string mode [, bool use_include_path [, resource context]])
! 8: * Description: Open a file or a URL and return a file pointer
! 9: * Source code: ext/standard/file.c
! 10: * Alias to functions:
! 11: */
! 12:
! 13:
! 14:
! 15: $thisTestDir = basename(__FILE__, ".php") . ".dir";
! 16: mkdir($thisTestDir);
! 17: chdir($thisTestDir);
! 18:
! 19: //create the include directory structure
! 20: $workingDir = "workdir";
! 21: $filename = basename(__FILE__, ".php") . ".tmp";
! 22: $scriptDir = dirname(__FILE__);
! 23: $baseDir = getcwd();
! 24: $secondFile = $baseDir."/dir2/".$filename;
! 25: $firstFile = "../dir1/".$filename;
! 26: $scriptFile = $scriptDir.'/'.$filename;
! 27:
! 28: $newdirs = array("dir1", "dir2", "dir3");
! 29: $pathSep = ":";
! 30: $newIncludePath = "";
! 31: if(substr(PHP_OS, 0, 3) == 'WIN' ) {
! 32: $pathSep = ";";
! 33: }
! 34: foreach($newdirs as $newdir) {
! 35: mkdir($newdir);
! 36: $newIncludePath .= '../'.$newdir.$pathSep;
! 37: }
! 38: mkdir($workingDir);
! 39: chdir($workingDir);
! 40:
! 41: //define the files to go into these directories, create one in dir2
! 42: echo "\n--- testing include path ---\n";
! 43: set_include_path($newIncludePath);
! 44: $modes = array("r", "r+", "rt");
! 45: foreach($modes as $mode) {
! 46: test_fopen($mode);
! 47: }
! 48: restore_include_path();
! 49:
! 50: // remove the directory structure
! 51: chdir($baseDir);
! 52: rmdir($workingDir);
! 53: foreach($newdirs as $newdir) {
! 54: rmdir($newdir);
! 55: }
! 56:
! 57: chdir("..");
! 58: rmdir($thisTestDir);
! 59:
! 60: function test_fopen($mode) {
! 61: global $scriptFile, $secondFile, $firstFile, $filename;
! 62:
! 63: // create a file in the middle directory
! 64: $h = fopen($secondFile, "w");
! 65: fwrite($h, (binary) "in dir2");
! 66: fclose($h);
! 67:
! 68: echo "\n** testing with mode=$mode **\n";
! 69: // should read dir2 file
! 70: $h = fopen($filename, $mode, true);
! 71: fpassthru($h);
! 72: fclose($h);
! 73: echo "\n";
! 74:
! 75: //create a file in dir1
! 76: $h = fopen($firstFile, "w");
! 77: fwrite($h, (binary) "in dir1");
! 78: fclose($h);
! 79:
! 80: //should now read dir1 file
! 81: $h = fopen($filename, $mode, true);
! 82: fpassthru($h);
! 83: fclose($h);
! 84: echo "\n";
! 85:
! 86: // create a file in working directory
! 87: $h = fopen($filename, "w");
! 88: fwrite($h, (binary) "in working dir");
! 89: fclose($h);
! 90:
! 91: //should read the dir1 file
! 92: $h = fopen($filename, $mode, true);
! 93: fpassthru($h);
! 94: fclose($h);
! 95: echo "\n";
! 96:
! 97: unlink($firstFile);
! 98: unlink($secondFile);
! 99:
! 100: //should read the working dir file
! 101: $h = fopen($filename, $mode, true);
! 102: fpassthru($h);
! 103: fclose($h);
! 104: echo "\n";
! 105:
! 106: // create a file in the script directory
! 107: $h = fopen($scriptFile, "w");
! 108: fwrite($h, (binary) "in script dir");
! 109: fclose($h);
! 110:
! 111: //should read the file in script dir
! 112: $h = fopen($filename, $mode, true);
! 113: fpassthru($h);
! 114: fclose($h);
! 115: echo "\n";
! 116:
! 117: //cleanup
! 118: unlink($filename);
! 119: unlink($scriptFile);
! 120:
! 121: }
! 122:
! 123: ?>
! 124: ===DONE===
! 125: --EXPECTF--
! 126:
! 127: --- testing include path ---
! 128:
! 129: ** testing with mode=r **
! 130: in dir2
! 131: in dir1
! 132: in dir1
! 133: in working dir
! 134: in script dir
! 135:
! 136: ** testing with mode=r+ **
! 137: in dir2
! 138: in dir1
! 139: in dir1
! 140: in working dir
! 141: in script dir
! 142:
! 143: ** testing with mode=rt **
! 144: in dir2
! 145: in dir1
! 146: in dir1
! 147: in working dir
! 148: in script dir
! 149: ===DONE===
! 150:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>