From 73afd0f0e7205349aac91e23a4db2be32a914e0d Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 3 Feb 2016 18:21:36 +0100 Subject: [PATCH] add files used in FileResource objects Starting with Symfony 3.1, the constructor of the `FileResource` class will throw an exception when the passed file does not exist. --- .../Routing/Loader/ObjectRouteLoader.php | 4 ++- .../Routing/Tests/Fixtures/file_resource.yml | 0 .../Tests/Loader/ObjectRouteLoaderTest.php | 26 ++++++++++++------- .../Tests/RouteCollectionBuilderTest.php | 2 +- 4 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 src/Symfony/Component/Routing/Tests/Fixtures/file_resource.yml diff --git a/src/Symfony/Component/Routing/Loader/ObjectRouteLoader.php b/src/Symfony/Component/Routing/Loader/ObjectRouteLoader.php index 65d0ce36fa24b..4d79b6cfc3640 100644 --- a/src/Symfony/Component/Routing/Loader/ObjectRouteLoader.php +++ b/src/Symfony/Component/Routing/Loader/ObjectRouteLoader.php @@ -87,7 +87,9 @@ public function supports($resource, $type = null) private function addClassResource(\ReflectionClass $class, RouteCollection $collection) { do { - $collection->addResource(new FileResource($class->getFileName())); + if (is_file($class->getFileName())) { + $collection->addResource(new FileResource($class->getFileName())); + } } while ($class = $class->getParentClass()); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/file_resource.yml b/src/Symfony/Component/Routing/Tests/Fixtures/file_resource.yml new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/Symfony/Component/Routing/Tests/Loader/ObjectRouteLoaderTest.php b/src/Symfony/Component/Routing/Tests/Loader/ObjectRouteLoaderTest.php index 0fbd14fa0a00c..50b8d8ff992e5 100644 --- a/src/Symfony/Component/Routing/Tests/Loader/ObjectRouteLoaderTest.php +++ b/src/Symfony/Component/Routing/Tests/Loader/ObjectRouteLoaderTest.php @@ -25,17 +25,8 @@ public function testLoadCallsServiceAndReturnsCollection() $collection = new RouteCollection(); $collection->add('foo', new Route('/foo')); - // create some callable object - $service = $this->getMockBuilder('stdClass') - ->setMethods(array('loadRoutes')) - ->getMock(); - $service->expects($this->once()) - ->method('loadRoutes') - ->with($loader) - ->will($this->returnValue($collection)); - $loader->loaderMap = array( - 'my_route_provider_service' => $service, + 'my_route_provider_service' => new RouteService($collection), ); $actualRoutes = $loader->load( @@ -114,3 +105,18 @@ protected function getServiceObject($id) return isset($this->loaderMap[$id]) ? $this->loaderMap[$id] : null; } } + +class RouteService +{ + private $collection; + + public function __construct($collection) + { + $this->collection = $collection; + } + + public function loadRoutes() + { + return $this->collection; + } +} diff --git a/src/Symfony/Component/Routing/Tests/RouteCollectionBuilderTest.php b/src/Symfony/Component/Routing/Tests/RouteCollectionBuilderTest.php index e3a98e3b72698..b944ffe80805e 100644 --- a/src/Symfony/Component/Routing/Tests/RouteCollectionBuilderTest.php +++ b/src/Symfony/Component/Routing/Tests/RouteCollectionBuilderTest.php @@ -30,7 +30,7 @@ public function testImport() $originalRoute = new Route('/foo/path'); $expectedCollection = new RouteCollection(); $expectedCollection->add('one_test_route', $originalRoute); - $expectedCollection->addResource(new FileResource('file_resource.yml')); + $expectedCollection->addResource(new FileResource(__DIR__.'/Fixtures/file_resource.yml')); $resolvedLoader ->expects($this->once())