Return to touch_variation6-win32.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / file |
1.1 misho 1: --TEST-- 2: Test touch() function : variation: various valid and invalid paths 3: --CREDITS-- 4: Dave Kelsey <d_kelsey@uk.ibm.com> 5: --SKIPIF-- 6: <?php 7: if (substr(PHP_OS, 0, 3) != 'WIN') { 8: die('skip.. only for Windows'); 9: } 10: ?> 11: --FILE-- 12: <?php 13: /* Prototype : bool touch(string filename [, int time [, int atime]]) 14: * Description: Set modification time of file 15: * Source code: ext/standard/filestat.c 16: * Alias to functions: 17: */ 18: 19: $workDir = "touchVar5.tmp"; 20: $subDirOrFile = "aSubDirOrFile"; 21: chdir(__DIR__); 22: mkdir($workDir); 23: $cwd = getcwd(); 24: 25: $unixifiedDirOrFile = '/'.substr(str_replace('\\','/',$cwd).'/'.$workDir.'/'.$subDirOrFile, 3); 26: 27: $paths = array( 28: // relative 29: $workDir.'\\'.$subDirOrFile, 30: '.\\'.$workDir.'\\'.$subDirOrFile, 31: $workDir.'\\..\\'.$workDir.'\\'.$subDirOrFile, 32: 33: // relative bad path (note p8 msgs differ) 34: $workDir.'\\..\\BADDIR\\'.$subDirOrFile, 35: 'BADDIR\\'.$subDirOrFile, 36: 37: //absolute 38: $cwd.'\\'.$workDir.'\\'.$subDirOrFile, 39: $cwd.'\\.\\'.$workDir.'\\'.$subDirOrFile, 40: $cwd.'\\'.$workDir.'\\..\\'.$workDir.'\\'.$subDirOrFile, 41: 42: //absolute bad path (note p8 msgs differ) 43: $cwd.'\\BADDIR\\'.$subDirOrFile, 44: 45: //trailing separators 46: $workDir.'\\'.$subDirOrFile.'\\', 47: $cwd.'\\'.$workDir.'\\'.$subDirOrFile.'\\', 48: 49: // multiple separators 50: $workDir.'\\\\'.$subDirOrFile, 51: $cwd.'\\\\'.$workDir.'\\\\'.$subDirOrFile, 52: 53: // Unixified Dir Or File 54: $unixifiedDirOrFile, 55: 56: ); 57: 58: echo "*** Testing touch() : variation ***\n"; 59: 60: echo "\n*** testing nonexisting paths ***\n"; 61: test_nonexisting($paths); 62: 63: echo "\n*** testing existing files ***\n"; 64: test_existing($paths, false); 65: 66: echo "\n*** testing existing directories ***\n"; 67: test_existing($paths, true); 68: 69: 70: rmdir($workDir); 71: 72: 73: 74: function test_nonexisting($paths) { 75: foreach($paths as $path) { 76: echo "--- testing $path ---\n"; 77: 78: if (is_dir($path) || is_file($path)) { 79: echo "FAILED: $path - exists\n"; 80: } 81: else { 82: $res = touch($path); 83: if ($res === true) { 84: // something was created 85: if (file_exists($path)) { 86: // something found 87: if (is_dir($path)) { 88: echo "FAILED: $path - unexpected directory\n"; 89: } 90: else { 91: echo "PASSED: $path - created\n"; 92: unlink($path); 93: } 94: } 95: else { 96: // nothing found 97: echo "FAILED: $path - touch returned true, nothing there\n"; 98: } 99: } 100: else { 101: // nothing created 102: if (file_exists($path)) { 103: //something found 104: echo "FAILED: $path - touch returned false, something there\n"; 105: if (is_dir($path)) { 106: rmdir($path); 107: } 108: else { 109: unlink($path); 110: } 111: } 112: } 113: } 114: } 115: } 116: 117: function test_existing($paths, $are_dirs) { 118: foreach($paths as $path) { 119: if ($are_dirs) { 120: $res = @mkdir($path); 121: if ($res == true) { 122: test_path($path); 123: rmdir($path); 124: } 125: } 126: else { 127: $h = @fopen($path,"w"); 128: if ($h !== false) { 129: fclose($h); 130: test_path($path); 131: unlink($path); 132: } 133: } 134: } 135: } 136: 137: 138: function test_path($path) { 139: echo "--- testing $path ---\n"; 140: $org_atime = get_atime($path); 141: clearstatcache(); 142: $res = touch($path,0,0); 143: $next_atime = get_atime($path); 144: if ($next_atime == $org_atime) { 145: echo "FAILED: $path - access time not changed\n"; 146: } 147: else { 148: echo "PASSED: $path - touched\n"; 149: } 150: } 151: 152: function get_atime($path) { 153: $temp = stat($path); 154: return $temp['atime']; 155: } 156: 157: 158: ?> 159: ===DONE=== 160: --EXPECTF-- 161: *** Testing touch() : variation *** 162: 163: *** testing nonexisting paths *** 164: --- testing touchVar5.tmp\aSubDirOrFile --- 165: PASSED: touchVar5.tmp\aSubDirOrFile - created 166: --- testing .\touchVar5.tmp\aSubDirOrFile --- 167: PASSED: .\touchVar5.tmp\aSubDirOrFile - created 168: --- testing touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- 169: PASSED: touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - created 170: --- testing touchVar5.tmp\..\BADDIR\aSubDirOrFile --- 171: 172: Warning: touch(): Unable to create file touchVar5.tmp\..\BADDIR\aSubDirOrFile because %s in %s on line %d 173: --- testing BADDIR\aSubDirOrFile --- 174: 175: Warning: touch(): Unable to create file BADDIR\aSubDirOrFile because %s in %s on line %d 176: --- testing %s\touchVar5.tmp\aSubDirOrFile --- 177: PASSED: %s\touchVar5.tmp\aSubDirOrFile - created 178: --- testing %s\.\touchVar5.tmp\aSubDirOrFile --- 179: PASSED: %s\.\touchVar5.tmp\aSubDirOrFile - created 180: --- testing %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- 181: PASSED: %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - created 182: --- testing %s\BADDIR\aSubDirOrFile --- 183: 184: Warning: touch(): Unable to create file %s\BADDIR\aSubDirOrFile because %s in %s on line %d 185: --- testing touchVar5.tmp\aSubDirOrFile\ --- 186: 187: Warning: touch(): Unable to create file touchVar5.tmp\aSubDirOrFile\ because Invalid argument in %s on line %d 188: --- testing %s\touchVar5.tmp\aSubDirOrFile\ --- 189: 190: Warning: touch(): Unable to create file %s\touchVar5.tmp\aSubDirOrFile\ because Invalid argument in %s on line %d 191: --- testing touchVar5.tmp\\aSubDirOrFile --- 192: PASSED: touchVar5.tmp\\aSubDirOrFile - created 193: --- testing %s\\touchVar5.tmp\\aSubDirOrFile --- 194: PASSED: %s\\touchVar5.tmp\\aSubDirOrFile - created 195: --- testing /%s/touchVar5.tmp/aSubDirOrFile --- 196: PASSED: /%s/touchVar5.tmp/aSubDirOrFile - created 197: 198: *** testing existing files *** 199: --- testing touchVar5.tmp\aSubDirOrFile --- 200: PASSED: touchVar5.tmp\aSubDirOrFile - touched 201: --- testing .\touchVar5.tmp\aSubDirOrFile --- 202: PASSED: .\touchVar5.tmp\aSubDirOrFile - touched 203: --- testing touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- 204: PASSED: touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - touched 205: --- testing %s\touchVar5.tmp\aSubDirOrFile --- 206: PASSED: %s\touchVar5.tmp\aSubDirOrFile - touched 207: --- testing %s\.\touchVar5.tmp\aSubDirOrFile --- 208: PASSED: %s\.\touchVar5.tmp\aSubDirOrFile - touched 209: --- testing %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- 210: PASSED: %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - touched 211: --- testing touchVar5.tmp\\aSubDirOrFile --- 212: PASSED: touchVar5.tmp\\aSubDirOrFile - touched 213: --- testing %s\\touchVar5.tmp\\aSubDirOrFile --- 214: PASSED: %s\\touchVar5.tmp\\aSubDirOrFile - touched 215: --- testing /%s/touchVar5.tmp/aSubDirOrFile --- 216: PASSED: /%s/touchVar5.tmp/aSubDirOrFile - touched 217: 218: *** testing existing directories *** 219: --- testing touchVar5.tmp\aSubDirOrFile --- 220: PASSED: touchVar5.tmp\aSubDirOrFile - touched 221: --- testing .\touchVar5.tmp\aSubDirOrFile --- 222: PASSED: .\touchVar5.tmp\aSubDirOrFile - touched 223: --- testing touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- 224: PASSED: touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - touched 225: --- testing %s\touchVar5.tmp\aSubDirOrFile --- 226: PASSED: %s\touchVar5.tmp\aSubDirOrFile - touched 227: --- testing %s\.\touchVar5.tmp\aSubDirOrFile --- 228: PASSED: %s\.\touchVar5.tmp\aSubDirOrFile - touched 229: --- testing %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- 230: PASSED: %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - touched 231: --- testing touchVar5.tmp\aSubDirOrFile\ --- 232: PASSED: touchVar5.tmp\aSubDirOrFile\ - touched 233: --- testing %s\touchVar5.tmp\aSubDirOrFile\ --- 234: PASSED: %s\touchVar5.tmp\aSubDirOrFile\ - touched 235: --- testing touchVar5.tmp\\aSubDirOrFile --- 236: PASSED: touchVar5.tmp\\aSubDirOrFile - touched 237: --- testing %s\\touchVar5.tmp\\aSubDirOrFile --- 238: PASSED: %s\\touchVar5.tmp\\aSubDirOrFile - touched 239: --- testing /%s/touchVar5.tmp/aSubDirOrFile --- 240: PASSED: /%s/touchVar5.tmp/aSubDirOrFile - touched 241: ===DONE=== 242: