Skip to content

Commit 4716256

Browse files
xersion22nicolas-grekas
authored andcommitted
[DependencyInjection] Add test case to ensure XML parse exception message includes filename and position
1 parent 900da8a commit 4716256

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

Tests/Fixtures/xml/services31.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd">
3+
<services>
4+
<service id="invalid_service" class="App\Foo">
5+
<bogusTag />
6+
</service>
7+
</services>
8+
</container>

Tests/Loader/XmlFileLoaderTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1286,4 +1286,20 @@ public function testLoadServicesWithEnvironment()
12861286

12871287
self::assertInstanceOf(RemoteCallerSocket::class, $container->get(RemoteCaller::class));
12881288
}
1289+
1290+
public function testXmlParseExceptionIncludesFilenameAndPosition()
1291+
{
1292+
$container = new ContainerBuilder();
1293+
$loader = new XmlFileLoader(
1294+
$container,
1295+
new FileLocator(__DIR__.'/../Fixtures/xml')
1296+
);
1297+
1298+
$invalidXMLFileName = 'services31.xml';
1299+
1300+
$this->expectException(InvalidArgumentException::class);
1301+
$this->expectExceptionMessageMatches('/Unable to parse file .*services31\.xml.*bogusTag.*This element is not expected.*line 5, column 0/');
1302+
1303+
$loader->load($invalidXMLFileName);
1304+
}
12891305
}

0 commit comments

Comments
 (0)