Annotation of embedaddon/php/ext/standard/tests/file/touch_variation5.phpt, revision 1.1.1.1
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.. Not 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: mkdir($workDir);
22: $cwd = getcwd();
23:
24: $paths = array(
25: // relative
26: $workDir.'/'.$subDirOrFile,
27: './'.$workDir.'/'.$subDirOrFile,
28: $workDir.'/../'.$workDir.'/'.$subDirOrFile,
29:
30: // relative bad path
31: $workDir.'/../BADDIR/'.$subDirOrFile,
32: 'BADDIR/'.$subDirOrFile,
33:
34: //absolute
35: $cwd.'/'.$workDir.'/'.$subDirOrFile,
36: $cwd.'/./'.$workDir.'/'.$subDirOrFile,
37: $cwd.'/'.$workDir.'/../'.$workDir.'/'.$subDirOrFile,
38:
39: //absolute bad path
40: $cwd.'/BADDIR/'.$subDirOrFile,
41:
42: //trailing separators
43: $workDir.'/'.$subDirOrFile.'/',
44: $cwd.'/'.$workDir.'/'.$subDirOrFile.'/',
45:
46: // multiple separators
47: $workDir.'//'.$subDirOrFile,
48: $cwd.'//'.$workDir.'//'.$subDirOrFile,
49:
50: );
51:
52: echo "*** Testing touch() : variation ***\n";
53:
54: echo "\n*** testing nonexisting paths ***\n";
55: test_nonexisting($paths);
56:
57: echo "\n*** testing existing files ***\n";
58: test_existing($paths, false);
59:
60: echo "\n*** testing existing directories ***\n";
61: test_existing($paths, true);
62:
63:
64: rmdir($workDir);
65:
66:
67:
68: function test_nonexisting($paths) {
69: foreach($paths as $path) {
70: echo "--- testing $path ---\n";
71:
72: if (is_dir($path) || is_file($path)) {
73: echo "FAILED: $path - exists\n";
74: }
75: else {
76: $res = touch($path);
77: if ($res === true) {
78: // something was created
79: if (file_exists($path)) {
80: // something found
81: if (is_dir($path)) {
82: echo "FAILED: $path - unexpected directory\n";
83: }
84: else {
85: echo "PASSED: $path - created\n";
86: unlink($path);
87: }
88: }
89: else {
90: // nothing found
91: echo "FAILED: $path - touch returned true, nothing there\n";
92: }
93: }
94: else {
95: // nothing created
96: if (file_exists($path)) {
97: //something found
98: echo "FAILED: $path - touch returned false, something there\n";
99: if (is_dir($path)) {
100: rmdir($path);
101: }
102: else {
103: unlink($path);
104: }
105: }
106: }
107: }
108: }
109: }
110:
111: function test_existing($paths, $are_dirs) {
112: foreach($paths as $path) {
113: if ($are_dirs) {
114: $res = @mkdir($path);
115: if ($res == true) {
116: test_path($path);
117: rmdir($path);
118: }
119: }
120: else {
121: $h = @fopen($path,"w");
122: if ($h !== false) {
123: fclose($h);
124: test_path($path);
125: unlink($path);
126: }
127: }
128: }
129: }
130:
131:
132: function test_path($path) {
133: echo "--- testing $path ---\n";
134: $org_atime = get_atime($path);
135: clearstatcache();
136: $res = touch($path,0,0);
137: $next_atime = get_atime($path);
138: if ($next_atime == $org_atime) {
139: echo "FAILED: $path - access time not changed\n";
140: }
141: else {
142: echo "PASSED: $path - touched\n";
143: }
144: }
145:
146: function get_atime($path) {
147: $temp = stat($path);
148: return $temp['atime'];
149: }
150:
151:
152: ?>
153: ===DONE===
154: --EXPECTF--
155: *** Testing touch() : variation ***
156:
157: *** testing nonexisting paths ***
158: --- testing touchVar5.tmp/aSubDirOrFile ---
159: PASSED: touchVar5.tmp/aSubDirOrFile - created
160: --- testing ./touchVar5.tmp/aSubDirOrFile ---
161: PASSED: ./touchVar5.tmp/aSubDirOrFile - created
162: --- testing touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile ---
163: PASSED: touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - created
164: --- testing touchVar5.tmp/../BADDIR/aSubDirOrFile ---
165:
166: Warning: touch(): Unable to create file touchVar5.tmp/../BADDIR/aSubDirOrFile because %s in %s on line %d
167: --- testing BADDIR/aSubDirOrFile ---
168:
169: Warning: touch(): Unable to create file BADDIR/aSubDirOrFile because %s in %s on line %d
170: --- testing /%s/touchVar5.tmp/aSubDirOrFile ---
171: PASSED: /%s/touchVar5.tmp/aSubDirOrFile - created
172: --- testing /%s/./touchVar5.tmp/aSubDirOrFile ---
173: PASSED: /%s/./touchVar5.tmp/aSubDirOrFile - created
174: --- testing /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile ---
175: PASSED: /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - created
176: --- testing /%s/BADDIR/aSubDirOrFile ---
177:
178: Warning: touch(): Unable to create file /%s/BADDIR/aSubDirOrFile because %s in %s on line %d
179: --- testing touchVar5.tmp/aSubDirOrFile/ ---
180:
181: Warning: touch(): Unable to create file touchVar5.tmp/aSubDirOrFile/ because %s in %s on line %d
182: --- testing /%s/touchVar5.tmp/aSubDirOrFile/ ---
183:
184: Warning: touch(): Unable to create file /%s/touchVar5.tmp/aSubDirOrFile/ because %s in %s on line %d
185: --- testing touchVar5.tmp//aSubDirOrFile ---
186: PASSED: touchVar5.tmp//aSubDirOrFile - created
187: --- testing /%s//touchVar5.tmp//aSubDirOrFile ---
188: PASSED: /%s//touchVar5.tmp//aSubDirOrFile - created
189:
190: *** testing existing files ***
191: --- testing touchVar5.tmp/aSubDirOrFile ---
192: PASSED: touchVar5.tmp/aSubDirOrFile - touched
193: --- testing ./touchVar5.tmp/aSubDirOrFile ---
194: PASSED: ./touchVar5.tmp/aSubDirOrFile - touched
195: --- testing touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile ---
196: PASSED: touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - touched
197: --- testing /%s/touchVar5.tmp/aSubDirOrFile ---
198: PASSED: /%s/touchVar5.tmp/aSubDirOrFile - touched
199: --- testing /%s/./touchVar5.tmp/aSubDirOrFile ---
200: PASSED: /%s/./touchVar5.tmp/aSubDirOrFile - touched
201: --- testing /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile ---
202: PASSED: /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - touched
203: --- testing touchVar5.tmp//aSubDirOrFile ---
204: PASSED: touchVar5.tmp//aSubDirOrFile - touched
205: --- testing /%s//touchVar5.tmp//aSubDirOrFile ---
206: PASSED: /%s//touchVar5.tmp//aSubDirOrFile - touched
207:
208: *** testing existing directories ***
209: --- testing touchVar5.tmp/aSubDirOrFile ---
210: PASSED: touchVar5.tmp/aSubDirOrFile - touched
211: --- testing ./touchVar5.tmp/aSubDirOrFile ---
212: PASSED: ./touchVar5.tmp/aSubDirOrFile - touched
213: --- testing touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile ---
214: PASSED: touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - touched
215: --- testing /%s/touchVar5.tmp/aSubDirOrFile ---
216: PASSED: /%s/touchVar5.tmp/aSubDirOrFile - touched
217: --- testing /%s/./touchVar5.tmp/aSubDirOrFile ---
218: PASSED: /%s/./touchVar5.tmp/aSubDirOrFile - touched
219: --- testing /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile ---
220: PASSED: /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - touched
221: --- testing touchVar5.tmp/aSubDirOrFile/ ---
222: PASSED: touchVar5.tmp/aSubDirOrFile/ - touched
223: --- testing /%s/touchVar5.tmp/aSubDirOrFile/ ---
224: PASSED: /%s/touchVar5.tmp/aSubDirOrFile/ - touched
225: --- testing touchVar5.tmp//aSubDirOrFile ---
226: PASSED: touchVar5.tmp//aSubDirOrFile - touched
227: --- testing /%s//touchVar5.tmp//aSubDirOrFile ---
228: PASSED: /%s//touchVar5.tmp//aSubDirOrFile - touched
229: ===DONE===
230:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>