1--TEST--
2Test copy() function: usage variations - destination file names(empty string, nulls & bools)
3--SKIPIF--
4<?php
5if(substr(PHP_OS, 0, 3) == "WIN")
6  die("skip Do not run on Windows");
7
8if(substr(PHP_OS, 0, 3) == "AIX")
9  die("skip Do not run on AIX");
10?>
11--FILE--
12<?php
13/* Prototype: bool copy ( string $source, string $dest );
14   Description: Makes a copy of the file source to dest.
15     Returns TRUE on success or FALSE on failure.
16*/
17
18/* Test copy() function: In creation of destination file names with empty string, nulls & bools
19     and checking the existence and size of destination files
20*/
21
22echo "*** Test copy() function: destination file names with empty string, nulls & bools ***\n";
23$file_path = __DIR__;
24$src_file_name = $file_path."/copy_variation4.tmp";
25$file_handle = fopen($src_file_name, "w");
26fwrite( $file_handle, str_repeat("Hello2World...\n", 100) );
27fclose($file_handle);
28
29/* array of destination file names */
30$dest_files = array(
31
32  /* File names containing(or with) nulls */
33  "",
34  NULL,
35  "\0",
36  FALSE,
37  false,
38  TRUE,
39  true
40);
41
42echo "Size of the source file before copy operation => ";
43var_dump( filesize($src_file_name) );
44clearstatcache();
45
46echo "\n-- Now applying copy() on source file to create copies --";
47$count = 1;
48foreach($dest_files as $dest_file) {
49  echo "\n-- Iteration $count --\n";
50  $dest_file_name = $file_path."/$dest_file";
51
52  echo "Existence of destination file before copy => ";
53  var_dump( file_exists($dest_file_name) );
54
55  echo "Copy operation => ";
56  var_dump( copy($src_file_name, $dest_file_name) );
57
58  echo "Existence of destination file => ";
59  var_dump( file_exists($dest_file_name) );
60
61  echo "Destination file name => ";
62  print($dest_file_name);
63  echo "\n";
64
65  echo "Size of source file => ";
66  var_dump( filesize($src_file_name) );
67  clearstatcache();
68
69  echo "Size of destination file => ";
70  var_dump( filesize($dest_file_name) );
71  clearstatcache();
72
73  unlink($dest_file_name);
74
75  $count++;
76
77}
78
79echo "*** Done ***\n";
80?>
81--CLEAN--
82<?php
83unlink(__DIR__."/copy_variation4.tmp");
84?>
85--EXPECTF--
86*** Test copy() function: destination file names with empty string, nulls & bools ***
87Size of the source file before copy operation => int(1500)
88
89-- Now applying copy() on source file to create copies --
90-- Iteration 1 --
91Existence of destination file before copy => bool(true)
92Copy operation =>
93Warning: copy(): The second argument to copy() function cannot be a directory in %s on line %d
94bool(false)
95Existence of destination file => bool(true)
96Destination file name => %s/
97Size of source file => int(1500)
98Size of destination file => int(%d)
99
100Warning: unlink(%s): %s
101
102-- Iteration 2 --
103Existence of destination file before copy => bool(true)
104Copy operation =>
105Warning: copy(): The second argument to copy() function cannot be a directory in %s on line %d
106bool(false)
107Existence of destination file => bool(true)
108Destination file name => %s/
109Size of source file => int(1500)
110Size of destination file => int(%d)
111
112Warning: unlink(%s): %s
113
114-- Iteration 3 --
115Existence of destination file before copy =>
116Warning: file_exists() expects parameter 1 to be a valid path, string given in %s on line %d
117NULL
118Copy operation =>
119Warning: copy() expects parameter 2 to be a valid path, string given in %s on line %d
120NULL
121Existence of destination file =>
122Warning: file_exists() expects parameter 1 to be a valid path, string given in %s on line %d
123NULL
124Destination file name => %s/�
125Size of source file => int(1500)
126Size of destination file =>
127Warning: filesize() expects parameter 1 to be a valid path, string given in %s on line %d
128NULL
129
130Warning: unlink() expects parameter 1 to be a valid path, string given in %s on line %d
131
132-- Iteration 4 --
133Existence of destination file before copy => bool(true)
134Copy operation =>
135Warning: copy(): The second argument to copy() function cannot be a directory in %s on line %d
136bool(false)
137Existence of destination file => bool(true)
138Destination file name => %s/
139Size of source file => int(1500)
140Size of destination file => int(%d)
141
142Warning: unlink(%s): %s
143
144-- Iteration 5 --
145Existence of destination file before copy => bool(true)
146Copy operation =>
147Warning: copy(): The second argument to copy() function cannot be a directory in %s on line %d
148bool(false)
149Existence of destination file => bool(true)
150Destination file name => %s/
151Size of source file => int(1500)
152Size of destination file => int(%d)
153
154Warning: unlink(%s): %s
155
156-- Iteration 6 --
157Existence of destination file before copy => bool(false)
158Copy operation => bool(true)
159Existence of destination file => bool(true)
160Destination file name => %s/1
161Size of source file => int(1500)
162Size of destination file => int(1500)
163
164-- Iteration 7 --
165Existence of destination file before copy => bool(false)
166Copy operation => bool(true)
167Existence of destination file => bool(true)
168Destination file name => %s/1
169Size of source file => int(1500)
170Size of destination file => int(1500)
171*** Done ***
172