Return to fopen_variation8.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / file |
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: