Skip to content

Commit 603e6cb

Browse files
olix21theofidry
authored andcommitted
Enable support for Symfony 5 (#487)
1 parent 9f7360e commit 603e6cb

File tree

11 files changed

+126
-38
lines changed

11 files changed

+126
-38
lines changed

.travis.yml

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ matrix:
2929
- php: '7.2'
3030
env:
3131
- COMPOSER_FLAGS="--prefer-lowest"
32+
- SYMFONY_DEPRECATIONS_HELPER="weak_vendors"
3233
- php: '7.2'
3334
env: SYMFONY_REQUIRE="~3.4.0"
3435
- php: '7.2'

composer.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@
3636
"doctrine/data-fixtures": "^1.2",
3737
"doctrine/orm": "^2.5.11",
3838
"psr/log": "^1.0",
39-
"symfony/finder": "^3.4 || ^4.0",
40-
"symfony/framework-bundle": "^3.4.24 || ^4.0",
39+
"symfony/finder": "^3.4 || ^4.0 || ^5.0",
40+
"symfony/framework-bundle": "^3.4.24 || ^4.0 || ^5.0",
4141
"theofidry/alice-data-fixtures": "^1.0"
4242
},
4343
"require-dev": {
4444
"doctrine/persistence": "^1.0",
4545
"phpunit/phpunit": "^8.5",
4646
"phpspec/prophecy": "^1.7",
47-
"symfony/phpunit-bridge": "^3.4.31 || ^4.0"
47+
"symfony/phpunit-bridge": "^3.4.31 || ^4.0 || ^5.0"
4848
},
4949

5050
"extra": {

fixtures/Functional/AppKernel.php

+11-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ public function registerBundles()
4343
*/
4444
public function registerContainerConfiguration(LoaderInterface $loader)
4545
{
46-
$loader->load(__DIR__.'/config/config.yml');
46+
if ('public' !== $this->getEnvironment()) {
47+
$loader->load(__DIR__.'/config/config.yml');
48+
} else {
49+
$loader->load(__DIR__.'/config/test/config.yml');
50+
}
4751
$loader->load(__DIR__.'/config/doctrine.yml');
4852
}
4953

@@ -62,9 +66,15 @@ public function build(ContainerBuilder $container)
6266
public function process(ContainerBuilder $container)
6367
{
6468
foreach ($container->getDefinitions() as $id => $definition) {
69+
if ('slugger' === $id) {
70+
continue;
71+
}
6572
$definition->setPublic(true);
6673
}
6774
foreach ($container->getAliases() as $id => $definition) {
75+
if ('Symfony\Component\String\Slugger\SluggerInterface' === $id) {
76+
continue;
77+
}
6878
$definition->setPublic(true);
6979
}
7080
}

fixtures/Functional/SimpleKernel.php

+4
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ public function locateResource($name, $dir = null, $first = true)
5656
$first = $this->overrideFirst;
5757
}
5858

59+
if (Kernel::VERSION_ID >= 50000) {
60+
return parent::locateResource($name);
61+
}
62+
5963
return parent::locateResource($name, $dir, $first);
6064
}
6165
}
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
parameters:
2+
test_app.random: 'Random parameter'
3+
4+
framework:
5+
secret: test
6+
test: ~
7+
8+
services:
9+
data_fixtures.faker.provider.foo:
10+
class: Hautelook\AliceBundle\Functional\TestBundle\DataFixtures\Faker\Provider\FooProvider
11+
tags: [ { name: nelmio_alice.faker.provider } ]
12+
public: true
13+
14+
app.city_factory:
15+
class: Hautelook\AliceBundle\Functional\TestBundle\Entity\CityFactory
16+
public: true
17+
18+
logger:
19+
class: Psr\Log\NullLogger
20+
public: true
21+
22+
hautelook_alice.data_fixtures.loader.file_resolver_loader:
23+
class: Fidry\AliceDataFixtures\Loader\FileResolverLoader
24+
arguments:
25+
$decoratedLoader: '@fidry_alice_data_fixtures.doctrine.purger_loader'
26+
$fileResolver: '@hautelook_alice.resolver.file'
27+
public: true
28+
29+
hautelook_alice.loader.doctrine_orm_loader:
30+
class: Hautelook\AliceBundle\Loader\DoctrineOrmLoader
31+
arguments:
32+
$bundleResolver: '@hautelook_alice.resolver.bundle'
33+
$fixtureLocator: '@hautelook_alice.locator'
34+
$purgeLoader: '@hautelook_alice.data_fixtures.purge_loader'
35+
$appendLoader: '@hautelook_alice.data_fixtures.append_loader'
36+
public: true

fixtures/HttpKernel/DummyKernel.php

+8
Original file line numberDiff line numberDiff line change
@@ -182,4 +182,12 @@ public function isClassInActiveBundle($class)
182182
{
183183
$this->__call(__METHOD__, \func_get_args());
184184
}
185+
186+
/**
187+
* {@inheritdoc}
188+
*/
189+
public function getProjectDir()
190+
{
191+
$this->__call(__METHOD__, \func_get_args());
192+
}
185193
}

phpunit.xml.dist

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
verbose="true">
88

99
<php>
10+
<server name="APP_ENV" value="test" force="true" />
1011
<server name="KERNEL_DIR" value="tests/Functional" />
11-
12-
<env name="SYMFONY_DEPRECATIONS_HELPER" value="weak_vendors" />
12+
<server name="KERNEL_CLASS" value="Hautelook\AliceBundle\Functional\TestKernel" />
13+
<env name="SYMFONY_DEPRECATIONS_HELPER" value="max[self]=0" />
1314
</php>
1415

1516
<testsuites>

src/DependencyInjection/HautelookAliceExtension.php

+6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
2121
use Symfony\Component\Finder\Finder;
2222
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
23+
use Symfony\Component\HttpKernel\Kernel;
2324

2425
/**
2526
* @private
@@ -62,12 +63,17 @@ public function load(array $configs, ContainerBuilder $container)
6263
*
6364
*
6465
* @throws \InvalidArgumentException
66+
* @throws \Exception
6567
*/
6668
private function loadConfig(array $configs, ContainerBuilder $container)
6769
{
6870
$configuration = new Configuration();
6971
$processedConfiguration = $this->processConfiguration($configuration, $configs);
7072

73+
if (Kernel::VERSION_ID >= 40000) {
74+
$processedConfiguration['root_dirs'] = ['%kernel.project_dir%'];
75+
}
76+
7177
foreach ($processedConfiguration as $key => $value) {
7278
$container->setParameter(
7379
$this->getAlias().'.'.$key,

src/Resolver/File/KernelFileResolver.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public function resolve(array $filePaths): array
4545
public function resolveFile(string $file): string
4646
{
4747
$realFile = ('@' === $file[0])
48-
? $this->kernel->locateResource($file, null, true)
48+
? $this->kernel->locateResource($file)
4949
: $file
5050
;
5151

tests/DependencyInjection/HautelookAliceBundleTest.php

+45-31
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,28 @@
1616
use Hautelook\AliceBundle\Functional\ConfigurableKernel;
1717
use Hautelook\AliceBundle\Functional\WithoutDoctrineKernel;
1818
use Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle;
19-
use PHPUnit\Framework\TestCase;
20-
use Symfony\Component\HttpKernel\KernelInterface;
19+
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
20+
use Symfony\Component\HttpKernel\Kernel;
2121

2222
/**
2323
* @covers \Hautelook\AliceBundle\HautelookAliceBundle
2424
* @covers \Hautelook\AliceBundle\DependencyInjection\Configuration
2525
* @covers \Hautelook\AliceBundle\DependencyInjection\HautelookAliceExtension
2626
*/
27-
class HautelookAliceBundleTest extends TestCase
27+
class HautelookAliceBundleTest extends KernelTestCase
2828
{
29-
/**
30-
* @var KernelInterface|null
31-
*/
32-
protected $kernel;
33-
3429
/**
3530
* {@inheritdoc}
3631
*/
37-
public function tearDown(): void
32+
protected function tearDown(): void
3833
{
39-
if (null !== $this->kernel) {
40-
$this->kernel->shutdown();
34+
if (Kernel::VERSION_ID < 41000) {
35+
if (null !== self::$kernel) {
36+
self::$kernel->shutdown();
37+
}
38+
} else {
39+
parent::tearDown();
40+
static::$class = null;
4141
}
4242
}
4343

@@ -46,88 +46,102 @@ public function testCannotBootIfFidryAliceDataFixturesBundleIsNotRegistered()
4646
$this->expectException(\LogicException::class);
4747
$this->expectExceptionMessage('To register "Hautelook\AliceBundle\HautelookAliceBundle", you also need: "Doctrine\Bundle\DoctrineBundle\DoctrineBundle", "Fidry\AliceDataFixtures\Bridge\Symfony\FidryAliceDataFixturesBundle".');
4848

49-
$this->kernel = new ConfigurableKernel('ConfigurableKernel0', true);
50-
$this->kernel->boot();
49+
self::$kernel = new ConfigurableKernel('ConfigurableKernel0', true);
50+
self::$kernel->boot();
5151
}
5252

5353
public function testWillReplaceFixtureLoadCommandWithErrorInformationCommandIfDoctrineBundleIsNotRegistered()
5454
{
5555
$this->expectException(\LogicException::class);
5656
$this->expectExceptionMessage('To register "Hautelook\AliceBundle\HautelookAliceBundle", you also need: "Doctrine\Bundle\DoctrineBundle\DoctrineBundle".');
5757

58-
$this->kernel = new WithoutDoctrineKernel('ConfigurableKernel1', true);
59-
$this->kernel->addBundle(new FidryAliceDataFixturesBundle());
60-
$this->kernel->addBundle(new NelmioAliceBundle());
61-
$this->kernel->boot();
58+
self::$kernel = new WithoutDoctrineKernel('ConfigurableKernel1', true);
59+
self::$kernel->addBundle(new FidryAliceDataFixturesBundle());
60+
self::$kernel->addBundle(new NelmioAliceBundle());
61+
self::$kernel->boot();
6262
}
6363

6464
public function testServiceRegistration()
6565
{
66-
$this->kernel = new AppKernel('public', true);
67-
$this->kernel->boot();
66+
if (Kernel::VERSION_ID < 41000) {
67+
self::$kernel = new AppKernel('public', true);
68+
self::$kernel->boot();
69+
$container = self::$kernel->getContainer();
70+
} else {
71+
parent::bootKernel(['environment' => 'public', 'debug' => true]);
72+
$container = self::$container;
73+
}
6874

6975
// Resolvers
7076
$this->assertInstanceOf(
7177
\Hautelook\AliceBundle\Resolver\Bundle\SimpleBundleResolver::class,
72-
$this->kernel->getContainer()->get('hautelook_alice.resolver.bundle.simple_resolver')
78+
$container->get('hautelook_alice.resolver.bundle.simple_resolver')
7379
);
7480

7581
$this->assertInstanceOf(
7682
\Hautelook\AliceBundle\Resolver\Bundle\NoBundleResolver::class,
77-
$this->kernel->getContainer()->get('hautelook_alice.resolver.bundle.no_bundle_resolver')
83+
$container->get('hautelook_alice.resolver.bundle.no_bundle_resolver')
7884
);
7985

8086
$this->assertInstanceOf(
8187
\Hautelook\AliceBundle\BundleResolverInterface::class,
82-
$this->kernel->getContainer()->get('hautelook_alice.resolver.bundle')
88+
$container->get('hautelook_alice.resolver.bundle')
8389
);
8490

8591
// Locators
8692
$this->assertInstanceOf(
8793
\Hautelook\AliceBundle\Locator\EnvironmentlessFilesLocator::class,
88-
$this->kernel->getContainer()->get('hautelook_alice.locator.environmentless')
94+
$container->get('hautelook_alice.locator.environmentless')
8995
);
9096

9197
$this->assertInstanceOf(
9298
\Hautelook\AliceBundle\Locator\EnvDirectoryLocator::class,
93-
$this->kernel->getContainer()->get('hautelook_alice.locator.env_directory')
99+
$container->get('hautelook_alice.locator.env_directory')
94100
);
95101

96102
$this->assertInstanceOf(
97103
\Hautelook\AliceBundle\FixtureLocatorInterface::class,
98-
$this->kernel->getContainer()->get('hautelook_alice.locator')
104+
$container->get('hautelook_alice.locator')
99105
);
100106

101107
// Loader
102108
$this->assertInstanceOf(
103109
\Fidry\AliceDataFixtures\Loader\FileResolverLoader::class,
104-
$this->kernel->getContainer()->get('hautelook_alice.data_fixtures.loader.file_resolver_loader')
110+
$container->get('hautelook_alice.data_fixtures.loader.file_resolver_loader')
105111
);
106112

107113
$this->assertInstanceOf(
108114
\Fidry\AliceDataFixtures\LoaderInterface::class,
109-
$this->kernel->getContainer()->get('hautelook_alice.data_fixtures.purge_loader')
115+
$container->get('hautelook_alice.data_fixtures.purge_loader')
110116
);
111117

112118
$this->assertInstanceOf(
113119
\Fidry\AliceDataFixtures\LoaderInterface::class,
114-
$this->kernel->getContainer()->get('hautelook_alice.data_fixtures.append_loader')
120+
$container->get('hautelook_alice.data_fixtures.append_loader')
115121
);
116122

117123
$this->assertInstanceOf(
118124
\Hautelook\AliceBundle\Loader\DoctrineOrmLoader::class,
119-
$this->kernel->getContainer()->get('hautelook_alice.loader.doctrine_orm_loader')
125+
$container->get('hautelook_alice.loader.doctrine_orm_loader')
120126
);
121127

122128
$this->assertInstanceOf(
123129
\Hautelook\AliceBundle\LoaderInterface::class,
124-
$this->kernel->getContainer()->get('hautelook_alice.loader')
130+
$container->get('hautelook_alice.loader')
125131
);
126132

127133
// Commands
128134
$this->assertInstanceOf(
129135
\Hautelook\AliceBundle\Console\Command\Doctrine\DoctrineOrmLoadDataFixturesCommand::class,
130-
$this->kernel->getContainer()->get('hautelook_alice.console.command.doctrine.doctrine_orm_load_data_fixtures_command')
136+
$container->get('hautelook_alice.console.command.doctrine.doctrine_orm_load_data_fixtures_command')
131137
);
132138
}
139+
140+
/**
141+
* {@inheritdoc}
142+
*/
143+
protected static function getKernelClass()
144+
{
145+
return AppKernel::class;
146+
}
133147
}

tests/Resolver/File/KernelFileResolverTest.php

+8
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Hautelook\AliceBundle\HttpKernel\DummyKernel;
1717
use PHPUnit\Framework\TestCase;
1818
use ReflectionClass;
19+
use Symfony\Component\HttpKernel\Kernel;
1920
use Symfony\Component\HttpKernel\KernelInterface;
2021

2122
/**
@@ -88,6 +89,10 @@ public function testThrowsAnExceptionIfFileIsADirectory()
8889

8990
public function testResolveFileWithTheKernelIfPossible()
9091
{
92+
if (Kernel::VERSION_ID >= 50000) {
93+
$this->markTestSkipped('Symfony 5 dropped the $first parameter in the locateResource method. This method can no longer return an array');
94+
}
95+
9196
$files = [
9297
'@SimpleBundle/files/foo.yml',
9398
__FILE__,
@@ -109,6 +114,9 @@ public function testResolveFileWithTheKernelIfPossible()
109114

110115
public function testThrowsAnErrorIfTheFileResolvedByTheKernelIsNotAString()
111116
{
117+
if (Kernel::VERSION_ID >= 50000) {
118+
$this->markTestSkipped('Symfony 5 dropped the $first parameter in the locateResource method. This method can no longer return an array');
119+
}
112120
$this->expectException(\TypeError::class);
113121

114122
$files = [

0 commit comments

Comments
 (0)