1--TEST--
2Test copy() function: usage variations - copy data file across dirs
3--SKIPIF--
4<?php
5if(substr(PHP_OS, 0, 3) != "WIN")
6  die("skip Run only on Windows");
7?>
8--FILE--
9<?php
10/* Prototype: bool copy ( string $source, string $dest );
11   Description: Makes a copy of the file source to dest.
12     Returns TRUE on success or FALSE on failure.
13*/
14
15/* Test copy() function: Trying to create copy of source file
16     into different destination dir paths given in various notations */
17
18echo "*** Testing copy() function: copying data file across directories ***\n";
19$base_dir = dirname(__FILE__)."/copy_variation16";
20mkdir($base_dir);
21
22$sub_dir = $base_dir."/copy_variation16_sub";
23mkdir($sub_dir);
24
25$dirname_with_blank = $sub_dir."/copy variation6";
26mkdir($dirname_with_blank);
27
28$src_file_name = dirname(__FILE__)."/copy_variation16.tmp";
29$file_handle = fopen($src_file_name, "w");
30fwrite($file_handle, str_repeat(b"Hello world, this is 2007 year ...\n", 100));
31fclose($file_handle);
32
33echo "- Size of source file => ";
34var_dump( filesize($src_file_name) );
35clearstatcache();
36
37$dests = array(
38  $base_dir."/copy_copy_variation16.tmp",
39  $base_dir."/copy_variation16_sub/copy_copy_variation16.tmp",
40  "$sub_dir/copy_copy_variation16.tmp",
41  "$sub_dir/../copy_copy_variation16.tmp",
42  "$sub_dir/../copy_variation16_sub/copy_copy_variation16.tmp",
43  "$sub_dir/..///../copy_copy_variation16.tmp",
44  "$sub_dir/..///../*",
45  "$dirname_with_blank/copy_copy_variation16.tmp"
46);
47
48echo "\n--- Now applying copy() on source file to create copies ---";
49$count = 1;
50foreach($dests as $dest) {
51  echo "\n-- Iteration $count --\n";
52
53  echo "Size of source file => ";
54  var_dump( filesize($src_file_name) );
55
56  echo "Copy operation => ";
57  var_dump( copy($src_file_name, $dest) );
58
59  echo "Existence of destination file => ";
60  var_dump( file_exists($dest) );
61
62  if( file_exists($dest) ){
63    echo "Destination file name is => ";
64    print($dest);
65    echo "\n";
66
67    echo "Size of destination file => ";
68    var_dump( filesize($dest) );
69    clearstatcache();
70
71    unlink("$dest");
72  }
73  $count++;
74}
75
76unlink($src_file_name);
77rmdir($dirname_with_blank);
78rmdir($sub_dir);
79rmdir($base_dir);
80
81echo "*** Done ***\n";
82?>
83
84--EXPECTF--
85*** Testing copy() function: copying data file across directories ***
86- Size of source file => int(3500)
87
88--- Now applying copy() on source file to create copies ---
89-- Iteration 1 --
90Size of source file => int(3500)
91Copy operation => bool(true)
92Existence of destination file => bool(true)
93Destination file name is => %s/copy_variation16/copy_copy_variation16.tmp
94Size of destination file => int(3500)
95
96-- Iteration 2 --
97Size of source file => int(3500)
98Copy operation => bool(true)
99Existence of destination file => bool(true)
100Destination file name is => %s/copy_variation16/copy_variation16_sub/copy_copy_variation16.tmp
101Size of destination file => int(3500)
102
103-- Iteration 3 --
104Size of source file => int(3500)
105Copy operation => bool(true)
106Existence of destination file => bool(true)
107Destination file name is => %s/copy_variation16/copy_variation16_sub/copy_copy_variation16.tmp
108Size of destination file => int(3500)
109
110-- Iteration 4 --
111Size of source file => int(3500)
112Copy operation => bool(true)
113Existence of destination file => bool(true)
114Destination file name is => %s/copy_variation16/copy_variation16_sub/../copy_copy_variation16.tmp
115Size of destination file => int(3500)
116
117-- Iteration 5 --
118Size of source file => int(3500)
119Copy operation => bool(true)
120Existence of destination file => bool(true)
121Destination file name is => %s/copy_variation16/copy_variation16_sub/../copy_variation16_sub/copy_copy_variation16.tmp
122Size of destination file => int(3500)
123
124-- Iteration 6 --
125Size of source file => int(3500)
126Copy operation => bool(true)
127Existence of destination file => bool(true)
128Destination file name is => %s/copy_variation16/copy_variation16_sub/..///../copy_copy_variation16.tmp
129Size of destination file => int(3500)
130
131-- Iteration 7 --
132Size of source file => int(3500)
133Copy operation =>
134Warning: copy(%s): failed to open stream: No such file or directory in %s on line %s
135bool(false)
136Existence of destination file => bool(false)
137
138-- Iteration 8 --
139Size of source file => int(3500)
140Copy operation => bool(true)
141Existence of destination file => bool(true)
142Destination file name is => %s/copy_variation16/copy_variation16_sub/copy variation6/copy_copy_variation16.tmp
143Size of destination file => int(3500)
144*** Done ***
145