8000 [DI] Fix XmlFileLoader bad error message · simPod/symfony@be7afc6 · GitHub
[go: up one dir, main page]

Skip to content

Commit be7afc6

Browse files
przemyslaw-boguszfabpot
authored andcommitted
[DI] Fix XmlFileLoader bad error message
1 parent bd0bf52 commit be7afc6

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

src/Symfony/Component/Config/Tests/Fixtures/Util/not_readable.xml

Whitespace-only changes.

src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,31 @@ public function testLoadFile()
2020
{
2121
$fixtures = __DIR__.'/../Fixtures/Util/';
2222

23+
try {
24+
XmlUtils::loadFile($fixtures);
25+
$this->fail();
26+
} catch (\InvalidArgumentException $e) {
27+
$this->assertStringContainsString('is not a file', $e->getMessage());
28+
}
29+
30+
try {
31+
XmlUtils::loadFile($fixtures.'non_existing.xml');
32+
$this->fail();
33+
} catch (\InvalidArgumentException $e) {
34+
$this->assertStringContainsString('is not a file', $e->getMessage());
35+
}
36+
37+
try {
38+
if ('\\' === \DIRECTORY_SEPARATOR) {
39+
$this->markTestSkipped('chmod is not supported on Windows');
40+
}
41+
chmod($fixtures.'not_readable.xml', 000);
42+
XmlUtils::loadFile($fixtures.'not_readable.xml');
43+
$this->fail();
44+
} catch (\InvalidArgumentException $e) {
45+
$this->assertStringContainsString('is not readable', $e->getMessage());
46+
}
47+
2348
try {
2449
XmlUtils::loadFile($fixtures.'invalid.xml');
2550
$this->fail();
@@ -165,7 +190,7 @@ public function testLoadEmptyXmlFile()
165190
$file = __DIR__.'/../Fixtures/foo.xml';
166191

167192
$this->expectException('InvalidArgumentException');
168-
$this->expectExceptionMessage(sprintf('File %s does not contain valid XML, it is empty.', $file));
193+
$this->expectExceptionMessage(sprintf('File "%s" does not contain valid XML, it is empty.', $file));
169194

170195
XmlUtils::loadFile($file);
171196
}
@@ -186,7 +211,7 @@ public function testLoadWrongEmptyXMLWithErrorHandler()
186211
XmlUtils::loadFile($file);
187212
$this->fail('An exception should have been raised');
188213
} catch (\InvalidArgumentException $e) {
189-
$this->assertEquals(sprintf('File %s does not contain valid XML, it is empty.', $file), $e->getMessage());
214+
$this->assertEquals(sprintf('File "%s" does not contain valid XML, it is empty.', $file), $e->getMessage());
190215
}
191216
} finally {
192217
restore_error_handler();

src/Symfony/Component/Config/Util/XmlUtils.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,18 @@ public static function parse($content, $schemaOrCallable = null)
122122
*/
123123
public static function loadFile($file, $schemaOrCallable = null)
124124
{
125+
if (!is_file($file)) {
126+
throw new \InvalidArgumentException(sprintf('Resource "%s" is not a file.', $file));
127+
}
128+
129+
if (!is_readable($file)) {
130+
throw new \InvalidArgumentException(sprintf('File "%s" is not readable.', $file));
131+
}
132+
125133
$content = @file_get_contents($file);
134+
126135
if ('' === trim($content)) {
127-
throw new \InvalidArgumentException(sprintf('File %s does not contain valid XML, it is empty.', $file));
136+
throw new \InvalidArgumentException(sprintf('File "%s" does not contain valid XML, it is empty.', $file));
128137
}
129138

130139
try {

0 commit comments

Comments
 (0)
0