1--TEST-- 2Test rename() function : variation - various relative, absolute paths 3--CREDITS-- 4Dave Kelsey <d_kelsey@uk.ibm.com> 5--SKIPIF-- 6<?php 7if(substr(PHP_OS, 0, 3) != "WIN") 8 die("skip Only valid for Windows"); 9?> 10--FILE-- 11<?php 12/* Prototype : bool rename(string old_name, string new_name[, resource context]) 13 * Description: Rename a file 14 * Source code: ext/standard/file.c 15 * Alias to functions: 16 */ 17 18echo "*** Testing rename() with absolute and relative paths ***\n"; 19$mainDir = "renameVar11"; 20$subDir = "renameVar11Sub"; 21$absMainDir = dirname(__FILE__)."\\".$mainDir; 22mkdir($absMainDir); 23$absSubDir = $absMainDir."\\".$subDir; 24mkdir($absSubDir); 25 26$fromFile = "renameMe.tmp"; 27$toFile = "IwasRenamed.tmp"; 28 29$old_dir_path = getcwd(); 30chdir(dirname(__FILE__)); 31$unixifiedDir = '/'.substr(str_replace('\\','/',$absSubDir),3); 32 33 34$allDirs = array( 35 // absolute paths 36 "$absSubDir\\", 37 "$absSubDir\\..\\".$subDir, 38 "$absSubDir\\\\..\\.\\".$subDir, 39 "$absSubDir\\..\\..\\".$mainDir."\\.\\".$subDir, 40 "$absSubDir\\..\\\\\\".$subDir."\\\\..\\\\..\\".$subDir, 41 "$absSubDir\\BADDIR", 42 43 // relative paths 44 $mainDir."\\".$subDir, 45 $mainDir."\\\\".$subDir, 46 $mainDir."\\\\\\".$subDir, 47 ".\\".$mainDir."\\..\\".$mainDir."\\".$subDir, 48 "BADDIR", 49 50 // unixifed path 51 $unixifiedDir, 52); 53 54for($i = 0; $i<count($allDirs); $i++) { 55 $j = $i+1; 56 $dir = $allDirs[$i]; 57 echo "\n-- Iteration $j --\n"; 58 touch($absSubDir."\\".$fromFile); 59 $res = rename($dir."\\".$fromFile, $dir."\\".$toFile); 60 var_dump($res); 61 if ($res == true) { 62 $res = rename($dir."\\".$toFile, $dir."\\".$fromFile); 63 var_dump($res); 64 } 65 unlink($absSubDir."\\".$fromFile); 66} 67 68chdir($old_dir_path); 69rmdir($absSubDir); 70rmdir($absMainDir); 71 72echo "\n*** Done ***\n"; 73?> 74--EXPECTF-- 75*** Testing rename() with absolute and relative paths *** 76 77-- Iteration 1 -- 78bool(true) 79bool(true) 80 81-- Iteration 2 -- 82bool(true) 83bool(true) 84 85-- Iteration 3 -- 86bool(true) 87bool(true) 88 89-- Iteration 4 -- 90bool(true) 91bool(true) 92 93-- Iteration 5 -- 94 95Warning: rename(%s\renameVar11\renameVar11Sub\..\\\renameVar11Sub\\..\\..\renameVar11Sub\renameMe.tmp,%s\renameVar11\renameVar11Sub\..\\\renameVar11Sub\\..\\..\renameVar11Sub\IwasRenamed.tmp): The system cannot find the path specified. (code: 3) in %s on line %d 96bool(false) 97 98-- Iteration 6 -- 99 100Warning: rename(%s\renameVar11\renameVar11Sub\BADDIR\renameMe.tmp,%s\renameVar11\renameVar11Sub\BADDIR\IwasRenamed.tmp): The system cannot find the path specified. (code: 3) in %s on line %d 101bool(false) 102 103-- Iteration 7 -- 104bool(true) 105bool(true) 106 107-- Iteration 8 -- 108bool(true) 109bool(true) 110 111-- Iteration 9 -- 112bool(true) 113bool(true) 114 115-- Iteration 10 -- 116bool(true) 117bool(true) 118 119-- Iteration 11 -- 120 121Warning: rename(BADDIR\renameMe.tmp,BADDIR\IwasRenamed.tmp): The system cannot find the path specified. (code: 3) in %s on line %d 122bool(false) 123 124-- Iteration 12 -- 125bool(true) 126bool(true) 127 128*** Done ***