Skip to content

Commit 6fbd834

Browse files
committed
Add PHP 8.4 build, run tests with Symfony 7.3 and 7.4, add Symfony 8.0 support
1 parent a8fc681 commit 6fbd834

15 files changed

+89
-124
lines changed

.github/workflows/ci.yaml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,26 @@ jobs:
1414
- '8.1'
1515
- '8.2'
1616
- '8.3'
17+
- '8.4'
1718
dependency:
1819
- ''
1920
symfony:
2021
- '5.4.*'
2122
- '6.4.*'
22-
- '7.0.*'
23+
- '7.3.*'
2324
include:
2425
- php: '8.1'
2526
symfony: '5.4.*'
2627
dependency: 'lowest'
28+
- php: '8.4'
29+
symfony: '7.4.*@dev'
30+
dependency: ''
31+
- php: '8.4'
32+
symfony: '8.0.*@dev'
33+
dependency: ''
2734
exclude:
2835
- php: '8.1'
29-
symfony: '7.0.*'
36+
symfony: '7.3.*'
3037
fail-fast: false
3138
steps:
3239
- name: Checkout

Loader/LoaderFactory.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ public function createYamlFileLoader($container): YamlFileLoader
4848

4949
public function createXmlFileLoader(ContainerBuilder $container): XmlFileLoader
5050
{
51+
trigger_deprecation('matthiasnoback/symfony-dependency-injection-test', '6.2', 'Support for XML service definitions is deprecated.');
52+
53+
if (!class_exists(XmlFileLoader::class)) {
54+
throw new \RuntimeException('Cannot create the XML loader because the installed version of "symfony/dependency-injection" does not support XML.');
55+
}
56+
5157
return new XmlFileLoader($container, new FileLocator());
5258
}
5359

PhpUnit/AbstractCompilerPassTestCase.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace Matthias\SymfonyDependencyInjectionTest\PhpUnit;
44

5-
use PHPUnit\Framework\Attributes\CoversNothing;
65
use PHPUnit\Framework\Attributes\Test;
76
use Symfony\Component\DependencyInjection\ContainerBuilder;
87

@@ -20,7 +19,6 @@ abstract protected function registerCompilerPass(ContainerBuilder $container): v
2019
* This test will run the compile method.
2120
*/
2221
#[Test]
23-
#[CoversNothing]
2422
final public function compilation_should_not_fail_with_empty_container(): void
2523
{
2624
try {

Tests/Fixtures/DependableExtension.php

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,19 @@
33
namespace Matthias\SymfonyDependencyInjectionTest\Tests\Fixtures;
44

55
use Symfony\Component\DependencyInjection\ContainerBuilder;
6-
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
6+
use Symfony\Component\DependencyInjection\Extension\Extension;
77

8-
class DependableExtension implements ExtensionInterface
8+
class DependableExtension extends Extension
99
{
10-
public function load(array $config, ContainerBuilder $container): void
10+
public function load(array $configs, ContainerBuilder $container): void
1111
{
1212
if ($container->hasParameter('parameter_from_non_dependable')) {
1313
$container->setParameter('dependable_parameter', 'dependable value');
1414
}
1515
}
1616

17-
public function getAlias()
17+
public function getAlias(): string
1818
{
1919
return 'dependable';
2020
}
21-
22-
public function getNamespace(): void
23-
{
24-
}
25-
26-
public function getXsdValidationBasePath(): void
27-
{
28-
}
2921
}

Tests/Fixtures/MatthiasDependencyInjectionTestExtension.php

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55
use Symfony\Component\Config\FileLocator;
66
use Symfony\Component\DependencyInjection\ContainerBuilder;
77
use Symfony\Component\DependencyInjection\Definition;
8-
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
9-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
8+
use Symfony\Component\DependencyInjection\Extension\Extension;
9+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
1010
use Symfony\Component\DependencyInjection\Reference;
1111

12-
class MatthiasDependencyInjectionTestExtension implements ExtensionInterface
12+
class MatthiasDependencyInjectionTestExtension extends Extension
1313
{
14-
public function load(array $config, ContainerBuilder $container): void
14+
public function load(array $configs, ContainerBuilder $container): void
1515
{
1616
// load some service definitions
17-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__));
18-
$loader->load('services.xml');
17+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__));
18+
$loader->load('services.php');
1919

2020
// set a parameter manually
2121
$container->setParameter('manual_parameter', 'parameter value');
@@ -41,16 +41,8 @@ public function load(array $config, ContainerBuilder $container): void
4141
$container->setDefinition('manual_with_reference', $definition);
4242
}
4343

44-
public function getAlias()
44+
public function getAlias(): string
4545
{
4646
return 'matthias_dependency_injection_test';
4747
}
48-
49-
public function getNamespace(): void
50-
{
51-
}
52-
53-
public function getXsdValidationBasePath(): void
54-
{
55-
}
5648
}

Tests/Fixtures/NonDependablePrependableExtension.php

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,21 @@
33
namespace Matthias\SymfonyDependencyInjectionTest\Tests\Fixtures;
44

55
use Symfony\Component\DependencyInjection\ContainerBuilder;
6-
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
6+
use Symfony\Component\DependencyInjection\Extension\Extension;
77
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
88

9-
class NonDependablePrependableExtension implements ExtensionInterface, PrependExtensionInterface
9+
class NonDependablePrependableExtension extends Extension implements PrependExtensionInterface
1010
{
11-
public function load(array $config, ContainerBuilder $container): void
11+
public function load(array $configs, ContainerBuilder $container): void
1212
{
1313
}
1414

15-
public function getAlias()
15+
public function getAlias(): string
1616
{
1717
return 'non_dependable';
1818
}
1919

20-
public function getNamespace(): void
21-
{
22-
}
23-
24-
public function getXsdValidationBasePath(): void
25-
{
26-
}
27-
28-
public function prepend(ContainerBuilder $container)
20+
public function prepend(ContainerBuilder $container): void
2921
{
3022
$container->setParameter('parameter_from_non_dependable', 'non-dependable value');
3123
}

Tests/Fixtures/NonPrependableTestExtension.php

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,21 @@
33
namespace Matthias\SymfonyDependencyInjectionTest\Tests\Fixtures;
44

55
use Symfony\Component\DependencyInjection\ContainerBuilder;
6-
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
6+
use Symfony\Component\DependencyInjection\Extension\Extension;
77

8-
class NonPrependableTestExtension implements ExtensionInterface
8+
class NonPrependableTestExtension extends Extension
99
{
1010
public function prepend(ContainerBuilder $container): void
1111
{
1212
$container->setParameter('ignored_invocation', 'ignored value');
1313
}
1414

15-
public function load(array $config, ContainerBuilder $container): void
15+
public function load(array $configs, ContainerBuilder $container): void
1616
{
1717
}
1818

19-
public function getAlias()
19+
public function getAlias(): string
2020
{
2121
return 'non_prependable_test';
2222
}
23-
24-
public function getNamespace(): void
25-
{
26-
}
27-
28-
public function getXsdValidationBasePath(): void
29-
{
30-
}
3123
}

Tests/Fixtures/PrependableTestExtension.php

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,22 @@
33
namespace Matthias\SymfonyDependencyInjectionTest\Tests\Fixtures;
44

55
use Symfony\Component\DependencyInjection\ContainerBuilder;
6-
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
6+
use Symfony\Component\DependencyInjection\Extension\Extension;
77
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
88

9-
class PrependableTestExtension implements ExtensionInterface, PrependExtensionInterface
9+
class PrependableTestExtension extends Extension implements PrependExtensionInterface
1010
{
1111
public function prepend(ContainerBuilder $container): void
1212
{
1313
$container->setParameter('prepend_parameter_set', 'prepended value');
1414
}
1515

16-
public function load(array $config, ContainerBuilder $container): void
16+
public function load(array $configs, ContainerBuilder $container): void
1717
{
1818
}
1919

20-
public function getAlias()
20+
public function getAlias(): string
2121
{
2222
return 'prependable_test';
2323
}
24-
25-
public function getNamespace(): void
26-
{
27-
}
28-
29-
public function getXsdValidationBasePath(): void
30-
{
31-
}
3224
}

Tests/Fixtures/SimpleExtension.php

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,16 @@
33
namespace Matthias\SymfonyDependencyInjectionTest\Tests\Fixtures;
44

55
use Symfony\Component\DependencyInjection\ContainerBuilder;
6-
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
6+
use Symfony\Component\DependencyInjection\Extension\Extension;
77

8-
class SimpleExtension implements ExtensionInterface
8+
class SimpleExtension extends Extension
99
{
10-
public function load(array $config, ContainerBuilder $container): void
10+
public function load(array $configs, ContainerBuilder $container): void
1111
{
1212
}
1313

14-
public function getAlias()
14+
public function getAlias(): string
1515
{
1616
return 'simple';
1717
}
18-
19-
public function getNamespace(): void
20-
{
21-
}
22-
23-
public function getXsdValidationBasePath(): void
24-
{
25-
}
2618
}

Tests/Fixtures/services.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
return static function (ContainerConfigurator $container): void {
6+
$container->services()
7+
->set('loaded_service_id', \stdClass::class)
8+
9+
->set('parent_service_id', \stdClass::class)
10+
11+
->set('child_service_id')
12+
->parent('parent_service_id')
13+
->args([
14+
'first argument',
15+
'second argument',
16+
])
17+
18+
->set('service_with_method_calls_id')
19+
->call('theRightMethodName', ['first argument', 'second argument'])
20+
21+
->set('synthetic_service')
22+
->synthetic()
23+
;
24+
};

0 commit comments

Comments
 (0)