Skip to content

Commit 430a515

Browse files
committed
FileMutator: fixes
1 parent 38c23f4 commit 430a515

File tree

2 files changed

+156
-7
lines changed

2 files changed

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

0 commit comments

Comments
 (0)