/
githubmirror
/
symfony
Обзор
Документация
Войти
/
githubmirror
/
symfony
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
8.2
src/Symfony/Component/DependencyInjection/Tests/Compiler/CheckAliasValidityPassTest.php
91 строка
3 KB
Nicolas Grekas
[DependencyInjection] Skip validating deprecated aliases in CheckAliasValidityPass
06 май 2026, 14:55
06 май 2026, 14:55
1097b1e
Код
Авторство
О чём код?
<?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\Tests\Compiler; use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\Compiler\CheckAliasValidityPass; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\RuntimeException; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Tests\Fixtures\CheckAliasValidityPass\FooImplementing; use Symfony\Component\DependencyInjection\Tests\Fixtures\CheckAliasValidityPass\FooInterface; use Symfony\Component\DependencyInjection\Tests\Fixtures\CheckAliasValidityPass\FooNotImplementing; class CheckAliasValidityPassTest extends TestCase { public function testProcessDetectsClassNotImplementingAliasedInterface() { $this->expectException(RuntimeException::class); $container = new ContainerBuilder(); $container->register('a')->setClass(FooNotImplementing::class); $container->setAlias(FooInterface::class, 'a'); $this->process($container); } public function testProcessAcceptsClassImplementingAliasedInterface() { $container = new ContainerBuilder(); $container->register('a')->setClass(FooImplementing::class); $container->setAlias(FooInterface::class, 'a'); $this->process($container); $this->addToAssertionCount(1); } public function testProcessIgnoresArbitraryAlias() { $container = new ContainerBuilder(); $container->register('a')->setClass(FooImplementing::class); $container->setAlias('not_an_interface', 'a'); $this->process($container); $this->addToAssertionCount(1); } public function testProcessIgnoresTargetWithFactory() { $container = new ContainerBuilder(); $container->register('a')->setFactory(new Reference('foo')); $container->setAlias(FooInterface::class, 'a'); $this->process($container); $this->addToAssertionCount(1); } public function testProcessIgnoresTargetWithoutClass() { $container = new ContainerBuilder(); $container->register('a'); $container->setAlias(FooInterface::class, 'a'); $this->process($container); $this->addToAssertionCount(1); } public function testProcessIgnoresDeprecatedAlias() { $container = new ContainerBuilder(); $container->register('a')->setClass(FooNotImplementing::class); $container->setAlias(FooInterface::class, 'a') ->setDeprecated('vendor/package', '1.2', 'The "%alias_id%" alias is deprecated.'); $this->process($container); $this->addToAssertionCount(1); } protected function process(ContainerBuilder $container): void { $pass = new CheckAliasValidityPass(); $pass->process($container); } }