1--TEST--
2Test rename() function: usage variations
3--SKIPIF--
4<?php
5if (substr(PHP_OS, 0, 3) != 'WIN') {
6    die('skip.. only for Windows');
7}
8?>
9--FILE--
10<?php
11/* Prototype: bool rename ( string $oldname, string $newname [, resource $context] );
12   Description: Renames a file or directory
13*/
14
15require dirname(__FILE__).'/file.inc';
16
17/* create directory */
18$file_path = dirname(__FILE__);
19mkdir("$file_path/rename_variation");
20
21/* rename files across directories */
22echo "*** Testing rename() : rename files across directories ***\n";
23$src_filenames = array(
24  "$file_path/rename_variation/rename_variation.tmp",
25
26  /* Testing a file trailing slash */
27  "$file_path/rename_variation/rename_variation.tmp/",
28
29  /* Testing file with double slashes */
30  "$file_path/rename_variation//rename_variation.tmp",
31  "$file_path//rename_variation//rename_variation.tmp",
32);
33
34$counter = 1;
35
36/* loop through each $file and rename it to rename_variation2.tmp */
37foreach($src_filenames as $src_filename) {
38  echo "-- Iteration $counter --\n";
39  $fp = fopen("$file_path/rename_variation/rename_variation.tmp", "w");
40  fclose($fp);
41  $dest_filename = "$file_path/rename_variation2.tmp";
42  var_dump( rename($src_filename, $dest_filename) );
43
44  // ensure that file got renamed to new name
45  var_dump( file_exists($src_filename) );  // expecting false
46  var_dump( file_exists($dest_filename) );  // expecting true
47  $counter++;
48
49  // unlink the file
50  unlink($dest_filename);
51}
52
53rmdir("$file_path/rename_variation");
54
55echo "Done\n";
56?>
57--CLEAN--
58<?php
59$file_path = dirname(__FILE__);
60unlink($file_path."/rename_variation_link.tmp");
61unlink($file_path."/rename_variation.tmp");
62rmdir($file_path."/rename_variation_dir");
63?>
64--EXPECTF--
65*** Testing rename() : rename files across directories ***
66-- Iteration 1 --
67bool(true)
68bool(false)
69bool(true)
70-- Iteration 2 --
71
72Warning: rename(%s/rename_variation/rename_variation.tmp/,%s/rename_variation2.tmp): The filename, directory name, or volume label syntax is incorrect. (code: 123) in %s on line %d
73bool(false)
74bool(false)
75bool(false)
76
77Warning: unlink(%s/rename_variation2.tmp): No such file or directory in %s on line %d
78-- Iteration 3 --
79bool(true)
80bool(false)
81bool(true)
82-- Iteration 4 --
83bool(true)
84bool(false)
85bool(true)
86Done
87
88