From afa40bdca89c2eff3ae858c96b06a9e0ba3a2902 Mon Sep 17 00:00:00 2001 From: Yonel Ceruto Date: Wed, 19 Jun 2024 15:52:13 -0400 Subject: [PATCH] Fix kernel configuration loading --- .../Kernel/MicroKernelTrait.php | 4 +- .../Tests/Kernel/MicroKernelTraitTest.php | 14 ++++++ .../Tests/Kernel/default/config/bundles.php | 16 +++++++ .../Tests/Kernel/default/config/routes.yaml | 3 ++ .../Tests/Kernel/default/config/services.yaml | 4 ++ .../Kernel/default/src/DefaultKernel.php | 43 +++++++++++++++++++ 6 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/bundles.php create mode 100644 src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/routes.yaml create mode 100644 src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/services.yaml create mode 100644 src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/src/DefaultKernel.php diff --git a/src/Symfony/Bundle/FrameworkBundle/Kernel/MicroKernelTrait.php b/src/Symfony/Bundle/FrameworkBundle/Kernel/MicroKernelTrait.php index 9e823752761e8..f40373a302b45 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Kernel/MicroKernelTrait.php +++ b/src/Symfony/Bundle/FrameworkBundle/Kernel/MicroKernelTrait.php @@ -54,7 +54,7 @@ private function configureContainer(ContainerConfigurator $container, LoaderInte $container->import($configDir.'/{packages}/*.{php,yaml}'); $container->import($configDir.'/{packages}/'.$this->environment.'/*.{php,yaml}'); - if (is_file($configDir.'/services.yaml')) { + if (is_file($this->getConfigDir().'/services.yaml')) { $container->import($configDir.'/services.yaml'); $container->import($configDir.'/{services}_'.$this->environment.'.yaml'); } else { @@ -79,7 +79,7 @@ private function configureRoutes(RoutingConfigurator $routes): void $routes->import($configDir.'/{routes}/'.$this->environment.'/*.{php,yaml}'); $routes->import($configDir.'/{routes}/*.{php,yaml}'); - if (is_file($configDir.'/routes.yaml')) { + if (is_file($this->getConfigDir().'/routes.yaml')) { $routes->import($configDir.'/routes.yaml'); } else { $routes->import($configDir.'/{routes}.php'); diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/MicroKernelTraitTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/MicroKernelTraitTest.php index eaa11eebe4b52..a9d2ae7209efe 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/MicroKernelTraitTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/MicroKernelTraitTest.php @@ -25,6 +25,7 @@ use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; +require_once __DIR__.'/default/src/DefaultKernel.php'; require_once __DIR__.'/flex-style/src/FlexStyleMicroKernel.php'; class MicroKernelTraitTest extends TestCase @@ -150,6 +151,19 @@ public function testSimpleKernel() $this->assertSame('Hello World!', $response->getContent()); } + + public function testDefaultKernel() + { + $kernel = $this->kernel = new DefaultKernel('test', false); + $kernel->boot(); + + $this->assertTrue($kernel->getContainer()->has('foo_service')); + + $request = Request::create('/'); + $response = $kernel->handle($request, HttpKernelInterface::MAIN_REQUEST, false); + + $this->assertSame('OK', $response->getContent()); + } } abstract class MinimalKernel extends Kernel diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/bundles.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/bundles.php new file mode 100644 index 0000000000000..fbde1ef1c9a87 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/bundles.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Bundle\FrameworkBundle\FrameworkBundle; + +return [ + FrameworkBundle::class => ['all' => true], +]; diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/routes.yaml b/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/routes.yaml new file mode 100644 index 0000000000000..5653fe0b9e394 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/routes.yaml @@ -0,0 +1,3 @@ +welcome: + path: / + controller: 'kernel' diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/services.yaml b/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/services.yaml new file mode 100644 index 0000000000000..fa0d7df8e1c1e --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/config/services.yaml @@ -0,0 +1,4 @@ +services: + foo_service: + class: stdClass + public: true diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/src/DefaultKernel.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/src/DefaultKernel.php new file mode 100644 index 0000000000000..93d1207938128 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Kernel/default/src/DefaultKernel.php @@ -0,0 +1,43 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bundle\FrameworkBundle\Tests\Kernel; + +use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\Kernel; + +class DefaultKernel extends Kernel +{ + use MicroKernelTrait; + + public function __invoke(): Response + { + return new Response('OK'); + } + + private string $cacheDir; + + public function getCacheDir(): string + { + return $this->cacheDir ??= sys_get_temp_dir().'/sf_default_kernel'; + } + + public function getLogDir(): string + { + return $this->cacheDir; + } + + public function getProjectDir(): string + { + return \dirname(__DIR__); + } +}