summaryrefslogtreecommitdiff
path: root/ext/standard/tests/file/userwrapper.phpt
blob: 3b512a6f36e47ee44efaed5de63ceabefdc1548c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
--TEST--
Userstream unlink, rename, mkdir, rmdir, and url_stat.
--FILE--
<?php # vim:ft=php:
class test {
    function unlink($file) {
        print "Unlinking file: $file\n";
    }

    function rename($from, $to) {
        print "Renaming $from to $to\n";
    }

    function mkdir($directory, $mode, $options) {
        printf("Making directory: %s as %o%s\n", $directory, $mode, $options & STREAM_MKDIR_RECURSIVE ? " recursively" : "");
    }

    function rmdir($directory, $options) {
        print "Removing directory: $directory\n";
    }

    function url_stat($path, $options) {
		/* By printing out a notice that we are actively stating the file
		   then subsequently performing multiple stat operations on it
		   we effectively test the stat cache mechanism */
        print "Stating file: $path\n";
        return array('dev'=>1, 'ino'=>2, 'mode'=>0644, 'nlink'=>3,
                     'uid'=>100, 'gid'=>1000, 'rdev'=>-1, 'size'=>31337,
                     'atime'=>1234567890, 'mtime'=>1231231231, 'ctime'=>1234564564,
                     'blksize'=>-1, 'blocks'=>-1);
    }
}

stream_wrapper_register('test', 'test');

unlink('test://example.com/path/to/file');
rename('test://example.com/path/to/from', 'test://example.com/path/to/to');
/* We *want* this to fail and thus not output the watch statement */
@rename('test://example.com/path/to/from', 'http://example.com/path/to/to');
mkdir('test://example.com/path/to/directory', 0755);
rmdir('test://example.com/path/to/directory');
print_r(stat('test://example.com/path/to/file'));
echo "Filesize = " . filesize('test://example.com/path/to/file') . "\n";
echo "filemtime = " . filemtime('test://example.com/path/to/file') . "\n";
?>
--EXPECT--
Unlinking file: test://example.com/path/to/file
Renaming test://example.com/path/to/from to test://example.com/path/to/to
Making directory: test://example.com/path/to/directory as 755
Removing directory: test://example.com/path/to/directory
Stating file: test://example.com/path/to/file
Array
(
    [0] => 1
    [1] => 2
    [2] => 420
    [3] => 3
    [4] => 100
    [5] => 1000
    [6] => -1
    [7] => 31337
    [8] => 1234567890
    [9] => 1231231231
    [10] => 1234564564
    [11] => -1
    [12] => -1
    [dev] => 1
    [ino] => 2
    [mode] => 420
    [nlink] => 3
    [uid] => 100
    [gid] => 1000
    [rdev] => -1
    [size] => 31337
    [atime] => 1234567890
    [mtime] => 1231231231
    [ctime] => 1234564564
    [blksize] => -1
    [blocks] => -1
)
Filesize = 31337
filemtime = 1231231231