Skip to content

Commit 819b97f

Browse files
committed
FileMutator: fixes
1 parent 38c23f4 commit 819b97f

File tree

2 files changed

+154
-7
lines changed

2 files changed

+154
-7
lines changed

src/Framework/FileMutator.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public function dir_rewinddir()
6060

6161
public function mkdir($path, $mode, $options)
6262
{
63-
return $this->native('mkdir', $mode, false, $this->context);
63+
return $this->native('mkdir', $path, $mode, false, $this->context);
6464
}
6565

6666

@@ -72,7 +72,7 @@ public function rename($pathFrom, $pathTo)
7272

7373
public function rmdir($path, $options)
7474
{
75-
return $this->native('rmdir', $this->context);
75+
return $this->native('rmdir', $path, $this->context);
7676
}
7777

7878

@@ -110,6 +110,7 @@ public function stream_metadata($path, $option, $value)
110110
{
111111
switch ($option) {
112112
case STREAM_META_TOUCH:
113+
$value += [null, null];
113114
return $this->native('touch', $path, $value[0], $value[1]);
114115
case STREAM_META_OWNER_NAME:
115116
case STREAM_META_OWNER:
@@ -156,7 +157,7 @@ public function stream_read($count)
156157

157158
public function stream_seek($offset, $whence = SEEK_SET)
158159
{
159-
return fseek($this->handle, $offset, $whence);
160+
return fseek($this->handle, $offset, $whence) === 0;
160161
}
161162

162163

@@ -197,10 +198,10 @@ public function unlink($path)
197198

198199
public function url_stat($path, $flags)
199200
{
200-
return $this->native(
201-
$flags & STREAM_URL_STAT_LINK ? 'lstat' : 'stat',
202-
$path
203-
);
201+
$func = $flags & STREAM_URL_STAT_LINK ? 'lstat' : 'stat';
202+
return $flags & STREAM_URL_STAT_QUIET
203+
? @$this->native($func, $path)
204+
: $this->native($func, $path);
204205
}
205206

206207

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
<?php
2+
3+
use Tester\Assert;
4+
5+
require __DIR__ . '/../bootstrap.php';
6+
7+
8+
Tester\Environment::bypassFinals();
9+
10+
Assert::error(function () {
11+
chmod('unknown', 0777);
12+
}, E_WARNING);
13+
14+
Assert::error(function () {
15+
copy('unknown', 'unknown2');
16+
}, [E_WARNING, E_WARNING, E_WARNING]);
17+
18+
Assert::false(file_exists('unknown'));
19+
20+
Assert::error(function () {
21+
file_get_contents('unknown');
22+
}, [E_WARNING, E_WARNING]);
23+
24+
Assert::error(function () {
25+
file_put_contents(__DIR__, 'content');
26+
}, [E_WARNING, E_WARNING]);
27+
28+
Assert::error(function () {
29+
file('unknown');
30+
}, [E_WARNING, E_WARNING]);
31+
32+
Assert::error(function () {
33+
fileatime('unknown');
34+
}, [E_WARNING, E_WARNING]);
35+
36+
Assert::error(function () {
37+
filectime('unknown');
38+
}, [E_WARNING, E_WARNING]);
39+
40+
Assert::error(function () {
41+
filegroup('unknown');
42+
}, [E_WARNING, E_WARNING]);
43+
44+
Assert::error(function () {
45+
fileinode('unknown');
46+
}, [E_WARNING, E_WARNING]);
47+
48+
Assert::error(function () {
49+
filemtime('unknown');
50+
}, [E_WARNING, E_WARNING]);
51+
52+
Assert::error(function () {
53+
fileowner('unknown');
54+
}, [E_WARNING, E_WARNING]);
55+
56+
Assert::error(function () {
57+
fileperms('unknown');
58+
}, [E_WARNING, E_WARNING]);
59+
60+
Assert::error(function () {
61+
filesize('unknown');
62+
}, [E_WARNING, E_WARNING]);
63+
64+
Assert::error(function () {
65+
filetype('unknown');
66+
}, [E_WARNING, E_WARNING]);
67+
68+
Assert::error(function () {
69+
fopen('unknown', 'r');
70+
}, [E_WARNING, E_WARNING]);
71+
72+
Assert::same([], glob('unknown'));
73+
Assert::false(is_dir('unknown'));
74+
Assert::false(is_executable('unknown'));
75+
Assert::false(is_file('unknown'));
76+
Assert::false(is_link('unknown'));
77+
Assert::false(is_readable('unknown'));
78+
Assert::false(is_writable('unknown'));
79+
80+
if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
81+
Assert::error(function () {
82+
chgrp('unknown', 'group');
83+
}, E_WARNING);
84+
85+
Assert::error(function () {
86+
chown('unknown', 'user');
87+
}, E_WARNING);
88+
89+
Assert::error(function () {
90+
lchgrp('unknown', 'group');
91+
}, E_WARNING);
92+
93+
Assert::error(function () {
94+
lchown('unknown', 'user');
95+
}, E_WARNING);
96+
}
97+
98+
Assert::error(function () {
99+
link('unknown', 'unknown2');
100+
}, E_WARNING);
101+
102+
Assert::error(function () {
103+
linkinfo('unknown');
104+
}, E_WARNING);
105+
106+
Assert::error(function () {
107+
lstat('unknown');
108+
}, [E_WARNING, E_WARNING]);
109+
110+
Assert::error(function () {
111+
mkdir(__DIR__);
112+
}, E_WARNING);
113+
114+
Assert::error(function () {
115+
parse_ini_file('unknown');
116+
}, [E_WARNING, E_WARNING]);
117+
118+
Assert::error(function () {
119+
readfile('unknown');
120+
}, [E_WARNING, E_WARNING]);
121+
122+
Assert::error(function () {
123+
readlink('unknown');
124+
}, E_WARNING);
125+
126+
Assert::false(realpath('unknown'));
127+
128+
Assert::error(function () {
129+
rename('unknown', 'unknown2');
130+
}, E_WARNING);
131+
132+
Assert::error(function () {
133+
rmdir('unknown');
134+
}, E_WARNING);
135+
136+
Assert::error(function () {
137+
stat('unknown');
138+
}, [E_WARNING, E_WARNING]);
139+
140+
Assert::error(function () {
141+
unlink('unknown');
142+
}, E_WARNING);
143+
144+
Assert::same(-1, fseek(fopen(__FILE__, 'r'), -1));
145+
146+
// not tested: symlink(), touch()

0 commit comments

Comments
 (0)