Return to fopen_variation5.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 (absolute 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: //create the include directory structure 16: $thisTestDir = basename(__FILE__, ".php") . ".dir"; 17: mkdir($thisTestDir); 18: chdir($thisTestDir); 19: 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 .= $baseDir.'/'.$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: 61: function test_fopen($mode) { 62: global $scriptFile, $secondFile, $firstFile, $filename; 63: 64: // create a file in the middle directory 65: $h = fopen($secondFile, "w"); 66: fwrite($h, (binary) "in dir2"); 67: fclose($h); 68: 69: echo "\n** testing with mode=$mode **\n"; 70: // should read dir2 file 71: $h = fopen($filename, $mode, true); 72: fpassthru($h); 73: fclose($h); 74: echo "\n"; 75: 76: //create a file in dir1 77: $h = fopen($firstFile, "w"); 78: fwrite($h, (binary) "in dir1"); 79: fclose($h); 80: 81: //should now read dir1 file 82: $h = fopen($filename, $mode, true); 83: fpassthru($h); 84: fclose($h); 85: echo "\n"; 86: 87: // create a file in working directory 88: $h = fopen($filename, "w"); 89: fwrite($h, (binary) "in working dir"); 90: fclose($h); 91: 92: //should still read dir1 file 93: $h = fopen($filename, $mode, true); 94: fpassthru($h); 95: fclose($h); 96: echo "\n"; 97: 98: unlink($firstFile); 99: unlink($secondFile); 100: 101: //should read the file in working dir 102: $h = fopen($filename, $mode, true); 103: fpassthru($h); 104: fclose($h); 105: echo "\n"; 106: 107: // create a file in the script directory 108: $h = fopen($scriptFile, "w"); 109: fwrite($h, (binary) "in script dir"); 110: fclose($h); 111: 112: //should read the file in script dir 113: $h = fopen($filename, $mode, true); 114: fpassthru($h); 115: fclose($h); 116: echo "\n"; 117: 118: //cleanup 119: unlink($filename); 120: unlink($scriptFile); 121: 122: } 123: 124: ?> 125: ===DONE=== 126: --EXPECTF-- 127: 128: --- testing include path --- 129: 130: ** testing with mode=r ** 131: in dir2 132: in dir1 133: in dir1 134: in working dir 135: in script dir 136: 137: ** testing with mode=r+ ** 138: in dir2 139: in dir1 140: in dir1 141: in working dir 142: in script dir 143: 144: ** testing with mode=rt ** 145: in dir2 146: in dir1 147: in dir1 148: in working dir 149: in script dir 150: ===DONE=== 151: