Skip to content

Commit fad3d3e

Browse files
committed
[FrameworkBundle] Fix service reset between tests
1 parent fea8f98 commit fad3d3e

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed

src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,9 @@ protected static function ensureKernelShutdown()
160160
static::$kernel->shutdown();
161161
static::$booted = false;
162162

163-
if ($container instanceof ResetInterface) {
163+
if ($container->has('services_resetter')) {
164+
$container->get('services_resetter')->reset();
165+
} elseif ($container instanceof ResetInterface) {
164166
$container->reset();
165167
}
166168
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\TestServiceContainer;
13+
14+
class ResettableService
15+
{
16+
private $count = 0;
17+
18+
public function myCustomName(): void
19+
{
20+
++$this->count;
21+
}
22+
23+
public function getCount(): int
24+
{
25+
return $this->count;
26+
}
27+
}

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/KernelTestCaseTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\TestServiceContainer\NonPublicService;
1616
use Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\TestServiceContainer\PrivateService;
1717
use Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\TestServiceContainer\PublicService;
18+
use Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\TestServiceContainer\ResettableService;
1819
use Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\TestServiceContainer\UnusedPrivateService;
1920
use Symfony\Component\DependencyInjection\ContainerInterface;
2021

@@ -41,4 +42,14 @@ public function testThatPrivateServicesAreAvailableIfTestConfigIsEnabled()
4142
$this->assertTrue($container->has('private_service'));
4243
$this->assertFalse($container->has(UnusedPrivateService::class));
4344
}
45+
46+
public function testServicesAreResetOnEnsureKernelShutdown()
47+
{
48+
static::bootKernel(['test_case' => 'TestServiceContainer']);
49+
50+
$resettableService = static::getContainer()->get(ResettableService::class);
51+
52+
self::ensureKernelShutdown();
53+
self::assertSame(1, $resettableService->getCount());
54+
}
4455
}

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/TestServiceContainer/services.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,8 @@ services:
1313
arguments:
1414
- '@Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\TestServiceContainer\NonPublicService'
1515
- '@Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\TestServiceContainer\PrivateService'
16+
17+
Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\TestServiceContainer\ResettableService:
18+
public: true
19+
tags:
20+
- kernel.reset: { method: 'myCustomName' }

0 commit comments

Comments
 (0)