minor #37209 [DI][Framework] Use PHP instead of XML for test config (GaryPEGEOT)

This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[DI][Framework] Use PHP instead of XML for test config

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | Partially #37186
| License       | MIT

See #37186

Commits
-------

36cc98228e [DI][Framework] Use PHP instead of XML for test config
This commit is contained in:
Fabien Potencier 2020-06-11 17:33:22 +02:00
commit 3f20e65019
3 changed files with 58 additions and 42 deletions

View File

@ -259,7 +259,7 @@ class FrameworkExtension extends Extension
}
if (!empty($config['test'])) {
$loader->load('test.xml');
$phpLoader->load('test.php');
if (!class_exists(AbstractBrowser::class)) {
$container->removeDefinition('test.client');

View File

@ -0,0 +1,57 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
use Symfony\Bundle\FrameworkBundle\Test\TestContainer;
use Symfony\Component\BrowserKit\CookieJar;
use Symfony\Component\BrowserKit\History;
use Symfony\Component\DependencyInjection\ServiceLocator;
use Symfony\Component\HttpKernel\EventListener\TestSessionListener;
return static function (ContainerConfigurator $container) {
$container->parameters()->set('test.client.parameters', []);
$container->services()
->set('test.client', KernelBrowser::class)
->args([
service('kernel'),
param('test.client.parameters'),
service('test.client.history'),
service('test.client.cookiejar'),
])
->share(false)
->public()
->set('test.client.history', History::class)->share(false)
->set('test.client.cookiejar', CookieJar::class)->share(false)
->set('test.session.listener', TestSessionListener::class)
->args([
service_locator([
'session' => service('session')->ignoreOnInvalid(),
]),
])
->tag('kernel.event_subscriber')
->set('test.service_container', TestContainer::class)
->args([
service('kernel'),
'test.private_services_locator',
])
->public()
->set('test.private_services_locator', ServiceLocator::class)
->args([abstract_arg('callable collection')])
->public()
;
};

View File

@ -1,41 +0,0 @@
<?xml version="1.0" ?>
<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">
<parameters>
<parameter key="test.client.parameters" type="collection"></parameter>
</parameters>
<services>
<defaults public="false" />
<service id="test.client" class="Symfony\Bundle\FrameworkBundle\KernelBrowser" shared="false" public="true">
<argument type="service" id="kernel" />
<argument>%test.client.parameters%</argument>
<argument type="service" id="test.client.history" />
<argument type="service" id="test.client.cookiejar" />
</service>
<service id="test.client.history" class="Symfony\Component\BrowserKit\History" shared="false" />
<service id="test.client.cookiejar" class="Symfony\Component\BrowserKit\CookieJar" shared="false" />
<service id="test.session.listener" class="Symfony\Component\HttpKernel\EventListener\TestSessionListener">
<tag name="kernel.event_subscriber" />
<argument type="service_locator">
<argument key="session" type="service" id="session" on-invalid="ignore" />
</argument>
</service>
<service id="test.service_container" class="Symfony\Bundle\FrameworkBundle\Test\TestContainer" public="true">
<argument type="service" id="kernel" />
<argument>test.private_services_locator</argument>
</service>
<service id="test.private_services_locator" class="Symfony\Component\DependencyInjection\ServiceLocator" public="true">
<argument type="collection" />
</service>
</services>
</container>