Annotation of embedaddon/php/ext/standard/tests/file/fopen_variation8.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Test fopen() function : variation: use include path and stream context (relative directories in path)
3: --CREDITS--
4: Dave Kelsey <d_kelsey@uk.ibm.com>
5: --FILE--
6: <?php
7: /* Prototype : resource fopen(string filename, string mode [, bool use_include_path [, resource context]])
8: * Description: Open a file or a URL and return a file pointer
9: * Source code: ext/standard/file.c
10: * Alias to functions:
11: */
12:
13:
14:
15: $thisTestDir = basename(__FILE__, ".php") . ".dir";
16: mkdir($thisTestDir);
17: chdir($thisTestDir);
18:
19: //create the include directory structure
20: $workingDir = "workdir";
21: $filename = basename(__FILE__, ".php") . ".tmp";
22: $scriptDir = dirname(__FILE__);
23: $baseDir = getcwd();
24: $secondFile = $baseDir."/dir2/".$filename;
25: $firstFile = "../dir1/".$filename;
26: $scriptFile = $scriptDir.'/'.$filename;
27:
28: $newdirs = array("dir1", "dir2", "dir3");
29: $pathSep = ":";
30: $newIncludePath = "";
31: if(substr(PHP_OS, 0, 3) == 'WIN' ) {
32: $pathSep = ";";
33: }
34: foreach($newdirs as $newdir) {
35: mkdir($newdir);
36: $newIncludePath .= '../'.$newdir.$pathSep;
37: }
38: mkdir($workingDir);
39: chdir($workingDir);
40:
41: //define the files to go into these directories, create one in dir2
42: echo "\n--- testing include path ---\n";
43: set_include_path($newIncludePath);
44: $modes = array("r", "r+", "rt");
45: foreach($modes as $mode) {
46: test_fopen($mode);
47: }
48: restore_include_path();
49:
50: // remove the directory structure
51: chdir($baseDir);
52: rmdir($workingDir);
53: foreach($newdirs as $newdir) {
54: rmdir($newdir);
55: }
56:
57: chdir("..");
58: rmdir($thisTestDir);
59:
60: function test_fopen($mode) {
61: global $scriptFile, $secondFile, $firstFile, $filename;
62:
63: // create a file in the middle directory
64: $h = fopen($secondFile, "w");
65: fwrite($h, (binary) "in dir2");
66: fclose($h);
67:
68: echo "\n** testing with mode=$mode **\n";
69: // should read dir2 file
70: $h = fopen($filename, $mode, true);
71: fpassthru($h);
72: fclose($h);
73: echo "\n";
74:
75: //create a file in dir1
76: $h = fopen($firstFile, "w");
77: fwrite($h, (binary) "in dir1");
78: fclose($h);
79:
80: //should now read dir1 file
81: $h = fopen($filename, $mode, true);
82: fpassthru($h);
83: fclose($h);
84: echo "\n";
85:
86: // create a file in working directory
87: $h = fopen($filename, "w");
88: fwrite($h, (binary) "in working dir");
89: fclose($h);
90:
91: //should read the dir1 file
92: $h = fopen($filename, $mode, true);
93: fpassthru($h);
94: fclose($h);
95: echo "\n";
96:
97: unlink($firstFile);
98: unlink($secondFile);
99:
100: //should read the working dir file
101: $h = fopen($filename, $mode, true);
102: fpassthru($h);
103: fclose($h);
104: echo "\n";
105:
106: // create a file in the script directory
107: $h = fopen($scriptFile, "w");
108: fwrite($h, (binary) "in script dir");
109: fclose($h);
110:
111: //should read the file in script dir
112: $h = fopen($filename, $mode, true);
113: fpassthru($h);
114: fclose($h);
115: echo "\n";
116:
117: //cleanup
118: unlink($filename);
119: unlink($scriptFile);
120:
121: }
122:
123: ?>
124: ===DONE===
125: --EXPECTF--
126:
127: --- testing include path ---
128:
129: ** testing with mode=r **
130: in dir2
131: in dir1
132: in dir1
133: in working dir
134: in script dir
135:
136: ** testing with mode=r+ **
137: in dir2
138: in dir1
139: in dir1
140: in working dir
141: in script dir
142:
143: ** testing with mode=rt **
144: in dir2
145: in dir1
146: in dir1
147: in working dir
148: in script dir
149: ===DONE===
150:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>