diff --git a/link b/link
index a5030d0683..6a2ec15e22 100755
--- a/link
+++ b/link
@@ -37,7 +37,12 @@ if (!is_dir("$argv[1]/vendor/symfony")) {
$sfPackages = array('symfony/symfony' => __DIR__);
$filesystem = new Filesystem();
-foreach (glob(__DIR__.'/src/Symfony/{Bundle,Bridge,Component,Component/Security}/*', GLOB_BRACE | GLOB_ONLYDIR | GLOB_NOSORT) as $dir) {
+$braces = array('Bundle', 'Bridge', 'Component', 'Component/Security');
+$directories = call_user_func_array('array_merge', array_values(array_map(function ($part) {
+ return glob(__DIR__.'/src/Symfony/'.$part.'/*', GLOB_ONLYDIR | GLOB_NOSORT);
+}, $braces)));
+
+foreach ($directories as $dir) {
if ($filesystem->exists($composer = "$dir/composer.json")) {
$sfPackages[json_decode(file_get_contents($composer))->name] = $dir;
}
diff --git a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php
index 82b289ba87..f0e1818f85 100644
--- a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php
+++ b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php
@@ -161,32 +161,53 @@ class DeprecationErrorHandler
return $b['count'] - $a['count'];
};
- foreach (array('unsilenced', 'remaining', 'legacy', 'other') as $group) {
- if ($deprecations[$group.'Count']) {
- echo "\n", $colorize(sprintf('%s deprecation notices (%d)', ucfirst($group), $deprecations[$group.'Count']), 'legacy' !== $group), "\n";
+ $displayDeprecations = function ($deprecations) use ($colorize, $cmp) {
+ foreach (array('unsilenced', 'remaining', 'legacy', 'other') as $group) {
+ if ($deprecations[$group.'Count']) {
+ echo "\n", $colorize(sprintf('%s deprecation notices (%d)', ucfirst($group), $deprecations[$group.'Count']), 'legacy' !== $group), "\n";
- uasort($deprecations[$group], $cmp);
+ uasort($deprecations[$group], $cmp);
- foreach ($deprecations[$group] as $msg => $notices) {
- echo "\n ", $notices['count'], 'x: ', $msg, "\n";
+ foreach ($deprecations[$group] as $msg => $notices) {
+ echo "\n ", $notices['count'], 'x: ', $msg, "\n";
- arsort($notices);
+ arsort($notices);
- foreach ($notices as $method => $count) {
- if ('count' !== $method) {
- echo ' ', $count, 'x in ', preg_replace('/(.*)\\\\(.*?::.*?)$/', '$2 from $1', $method), "\n";
+ foreach ($notices as $method => $count) {
+ if ('count' !== $method) {
+ echo ' ', $count, 'x in ', preg_replace('/(.*)\\\\(.*?::.*?)$/', '$2 from $1', $method), "\n";
+ }
}
}
}
}
- }
- if (!empty($notices)) {
- echo "\n";
+ if (!empty($notices)) {
+ echo "\n";
+ }
+ };
+
+ $displayDeprecations($deprecations);
+
+ // store failing status
+ $isFailing = DeprecationErrorHandler::MODE_WEAK !== $mode && $mode < $deprecations['unsilencedCount'] + $deprecations['remainingCount'] + $deprecations['otherCount'];
+
+ // reset deprecations array
+ foreach ($deprecations as $group => $arrayOrInt) {
+ $deprecations[$group] = is_int($arrayOrInt) ? 0 : array();
}
- if (DeprecationErrorHandler::MODE_WEAK !== $mode && $mode < $deprecations['unsilencedCount'] + $deprecations['remainingCount'] + $deprecations['otherCount']) {
- exit(1);
- }
+ register_shutdown_function(function () use (&$deprecations, $isFailing, $displayDeprecations, $mode) {
+ foreach ($deprecations as $group => $arrayOrInt) {
+ if (0 < (is_int($arrayOrInt) ? $arrayOrInt : count($arrayOrInt))) {
+ echo "Shutdown-time deprecations:\n";
+ break;
+ }
+ }
+ $displayDeprecations($deprecations);
+ if ($isFailing || DeprecationErrorHandler::MODE_WEAK !== $mode && $mode < $deprecations['unsilencedCount'] + $deprecations['remainingCount'] + $deprecations['otherCount']) {
+ exit(1);
+ }
+ });
});
}
}
diff --git a/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/default.phpt b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/default.phpt
index 39a3e98586..7a0595a7dd 100644
--- a/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/default.phpt
+++ b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/default.phpt
@@ -59,6 +59,10 @@ $foo = new FooTestCase();
$foo->testLegacyFoo();
$foo->testNonLegacyBar();
+register_shutdown_function(function () {
+ exit('I get precedence over any exit statements inside the deprecation error handler.');
+});
+
?>
--EXPECTF--
Unsilenced deprecation notices (3)
@@ -80,3 +84,4 @@ Other deprecation notices (1)
1x: root deprecation
+I get precedence over any exit statements inside the deprecation error handler.
diff --git a/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/shutdown_deprecations.phpt b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/shutdown_deprecations.phpt
new file mode 100644
index 0000000000..fddeed6085
--- /dev/null
+++ b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/shutdown_deprecations.phpt
@@ -0,0 +1,91 @@
+--TEST--
+Test DeprecationErrorHandler in default mode
+--FILE--
+testLegacyFoo();
+$foo->testNonLegacyBar();
+
+register_shutdown_function(function () {
+ @trigger_error('root deprecation during shutdown', E_USER_DEPRECATED);
+});
+
+?>
+--EXPECTF--
+Unsilenced deprecation notices (3)
+
+ 2x: unsilenced foo deprecation
+ 2x in FooTestCase::testLegacyFoo
+
+ 1x: unsilenced bar deprecation
+ 1x in FooTestCase::testNonLegacyBar
+
+Remaining deprecation notices (1)
+
+ 1x: silenced bar deprecation
+ 1x in FooTestCase::testNonLegacyBar
+
+Legacy deprecation notices (1)
+
+Other deprecation notices (1)
+
+ 1x: root deprecation
+
+Shutdown-time deprecations:
+
+Other deprecation notices (1)
+
+ 1x: root deprecation during shutdown
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/AddCacheWarmerPassTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/AddCacheWarmerPassTest.php
index 330deae646..e58ed97724 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/AddCacheWarmerPassTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/AddCacheWarmerPassTest.php
@@ -12,6 +12,7 @@
namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
use PHPUnit\Framework\TestCase;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddCacheWarmerPass;
@@ -19,73 +20,44 @@ class AddCacheWarmerPassTest extends TestCase
{
public function testThatCacheWarmersAreProcessedInPriorityOrder()
{
- $services = array(
- 'my_cache_warmer_service1' => array(0 => array('priority' => 100)),
- 'my_cache_warmer_service2' => array(0 => array('priority' => 200)),
- 'my_cache_warmer_service3' => array(),
- );
-
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('findTaggedServiceIds', 'getDefinition', 'hasDefinition'))->getMock();
-
- $container->expects($this->atLeastOnce())
- ->method('findTaggedServiceIds')
- ->will($this->returnValue($services));
- $container->expects($this->atLeastOnce())
- ->method('getDefinition')
- ->with('cache_warmer')
- ->will($this->returnValue($definition));
- $container->expects($this->atLeastOnce())
- ->method('hasDefinition')
- ->with('cache_warmer')
- ->will($this->returnValue(true));
-
- $definition->expects($this->once())
- ->method('replaceArgument')
- ->with(0, array(
- new Reference('my_cache_warmer_service2'),
- new Reference('my_cache_warmer_service1'),
- new Reference('my_cache_warmer_service3'),
- ));
+ $container = new ContainerBuilder();
+ $cacheWarmerDefinition = $container->register('cache_warmer')->addArgument(array());
+ $container->register('my_cache_warmer_service1')->addTag('kernel.cache_warmer', array('priority' => 100));
+ $container->register('my_cache_warmer_service2')->addTag('kernel.cache_warmer', array('priority' => 200));
+ $container->register('my_cache_warmer_service3')->addTag('kernel.cache_warmer');
$addCacheWarmerPass = new AddCacheWarmerPass();
$addCacheWarmerPass->process($container);
+
+ $this->assertEquals(
+ array(
+ new Reference('my_cache_warmer_service2'),
+ new Reference('my_cache_warmer_service1'),
+ new Reference('my_cache_warmer_service3'),
+ ),
+ $cacheWarmerDefinition->getArgument(0)
+ );
}
public function testThatCompilerPassIsIgnoredIfThereIsNoCacheWarmerDefinition()
{
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
-
- $container->expects($this->never())->method('findTaggedServiceIds');
- $container->expects($this->never())->method('getDefinition');
- $container->expects($this->atLeastOnce())
- ->method('hasDefinition')
- ->with('cache_warmer')
- ->will($this->returnValue(false));
- $definition->expects($this->never())->method('replaceArgument');
+ $container = new ContainerBuilder();
$addCacheWarmerPass = new AddCacheWarmerPass();
$addCacheWarmerPass->process($container);
+
+ // we just check that the pass does not break if no cache warmer is registered
+ $this->addToAssertionCount(1);
}
public function testThatCacheWarmersMightBeNotDefined()
{
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
-
- $container->expects($this->atLeastOnce())
- ->method('findTaggedServiceIds')
- ->will($this->returnValue(array()));
- $container->expects($this->never())->method('getDefinition');
- $container->expects($this->atLeastOnce())
- ->method('hasDefinition')
- ->with('cache_warmer')
- ->will($this->returnValue(true));
-
- $definition->expects($this->never())->method('replaceArgument');
+ $container = new ContainerBuilder();
+ $cacheWarmerDefinition = $container->register('cache_warmer')->addArgument(array());
$addCacheWarmerPass = new AddCacheWarmerPass();
$addCacheWarmerPass->process($container);
+
+ $this->assertSame(array(), $cacheWarmerDefinition->getArgument(0));
}
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/AddConstraintValidatorsPassTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/AddConstraintValidatorsPassTest.php
index e58068900f..0be1f77d51 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/AddConstraintValidatorsPassTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/AddConstraintValidatorsPassTest.php
@@ -13,72 +13,40 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
use PHPUnit\Framework\TestCase;
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConstraintValidatorsPass;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Reference;
class AddConstraintValidatorsPassTest extends TestCase
{
public function testThatConstraintValidatorServicesAreProcessed()
{
- $services = array(
- 'my_constraint_validator_service1' => array(0 => array('alias' => 'my_constraint_validator_alias1')),
- 'my_constraint_validator_service2' => array(),
- );
-
- $validatorFactoryDefinition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('findTaggedServiceIds', 'getDefinition', 'hasDefinition'))->getMock();
-
- $validatorDefinition1 = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->setMethods(array('getClass'))->getMock();
- $validatorDefinition2 = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->setMethods(array('getClass'))->getMock();
-
- $validatorDefinition1->expects($this->atLeastOnce())
- ->method('getClass')
- ->willReturn('My\Fully\Qualified\Class\Named\Validator1');
- $validatorDefinition2->expects($this->atLeastOnce())
- ->method('getClass')
- ->willReturn('My\Fully\Qualified\Class\Named\Validator2');
-
- $container->expects($this->any())
- ->method('getDefinition')
- ->with($this->anything())
- ->will($this->returnValueMap(array(
- array('my_constraint_validator_service1', $validatorDefinition1),
- array('my_constraint_validator_service2', $validatorDefinition2),
- array('validator.validator_factory', $validatorFactoryDefinition),
- )));
-
- $container->expects($this->atLeastOnce())
- ->method('findTaggedServiceIds')
- ->will($this->returnValue($services));
- $container->expects($this->atLeastOnce())
- ->method('hasDefinition')
- ->with('validator.validator_factory')
- ->will($this->returnValue(true));
-
- $validatorFactoryDefinition->expects($this->once())
- ->method('replaceArgument')
- ->with(1, array(
- 'My\Fully\Qualified\Class\Named\Validator1' => 'my_constraint_validator_service1',
- 'my_constraint_validator_alias1' => 'my_constraint_validator_service1',
- 'My\Fully\Qualified\Class\Named\Validator2' => 'my_constraint_validator_service2',
- ));
+ $container = new ContainerBuilder();
+ $constraintValidatorFactoryDefinition = $container->register('validator.validator_factory')
+ ->setArguments(array(new Reference('service_container'), array()));
+ $container->register('my_constraint_validator_service1', 'My\Fully\Qualified\Class\Named\Validator1')
+ ->addTag('validator.constraint_validator', array('alias' => 'my_constraint_validator_alias1'));
+ $container->register('my_constraint_validator_service2', 'My\Fully\Qualified\Class\Named\Validator2')
+ ->addTag('validator.constraint_validator');
$addConstraintValidatorsPass = new AddConstraintValidatorsPass();
$addConstraintValidatorsPass->process($container);
+
+ $this->assertEquals(
+ array(
+ 'My\Fully\Qualified\Class\Named\Validator1' => 'my_constraint_validator_service1',
+ 'my_constraint_validator_alias1' => 'my_constraint_validator_service1',
+ 'My\Fully\Qualified\Class\Named\Validator2' => 'my_constraint_validator_service2',
+ ),
+ $constraintValidatorFactoryDefinition->getArgument(1)
+ );
}
public function testThatCompilerPassIsIgnoredIfThereIsNoConstraintValidatorFactoryDefinition()
{
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
-
- $container->expects($this->never())->method('findTaggedServiceIds');
- $container->expects($this->never())->method('getDefinition');
- $container->expects($this->atLeastOnce())
- ->method('hasDefinition')
- ->with('validator.validator_factory')
- ->will($this->returnValue(false));
- $definition->expects($this->never())->method('replaceArgument');
-
$addConstraintValidatorsPass = new AddConstraintValidatorsPass();
- $addConstraintValidatorsPass->process($container);
+ $addConstraintValidatorsPass->process(new ContainerBuilder());
+
+ // we just check that the pass does not fail if no constraint validator factory is registered
+ $this->addToAssertionCount(1);
}
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/LegacyFragmentRendererPassTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/LegacyFragmentRendererPassTest.php
index d4f75ee95c..b275047939 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/LegacyFragmentRendererPassTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/LegacyFragmentRendererPassTest.php
@@ -12,6 +12,7 @@
namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
use PHPUnit\Framework\TestCase;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\FragmentRendererPass;
@@ -29,29 +30,10 @@ class LegacyFragmentRendererPassTest extends TestCase
*/
public function testContentRendererWithoutInterface()
{
- // one service, not implementing any interface
- $services = array(
- 'my_content_renderer' => array(),
- );
-
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $definition->expects($this->atLeastOnce())
- ->method('getClass')
- ->will($this->returnValue('stdClass'));
-
- $builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
- $builder->expects($this->any())
- ->method('hasDefinition')
- ->will($this->returnValue(true));
-
- // We don't test kernel.fragment_renderer here
- $builder->expects($this->atLeastOnce())
- ->method('findTaggedServiceIds')
- ->will($this->returnValue($services));
-
- $builder->expects($this->atLeastOnce())
- ->method('getDefinition')
- ->will($this->returnValue($definition));
+ $builder = new ContainerBuilder();
+ $builder->register('fragment.handler');
+ $builder->register('my_content_renderer', 'stdClass')
+ ->addTag('kernel.fragment_renderer');
$pass = new FragmentRendererPass();
$pass->process($builder);
@@ -59,38 +41,15 @@ class LegacyFragmentRendererPassTest extends TestCase
public function testValidContentRenderer()
{
- $services = array(
- 'my_content_renderer' => array(),
- );
-
- $renderer = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $renderer
- ->expects($this->once())
- ->method('addMethodCall')
- ->with('addRenderer', array(new Reference('my_content_renderer')))
- ;
-
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $definition->expects($this->atLeastOnce())
- ->method('getClass')
- ->will($this->returnValue('Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\RendererService'));
-
- $builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
- $builder->expects($this->any())
- ->method('hasDefinition')
- ->will($this->returnValue(true));
-
- // We don't test kernel.fragment_renderer here
- $builder->expects($this->atLeastOnce())
- ->method('findTaggedServiceIds')
- ->will($this->returnValue($services));
-
- $builder->expects($this->atLeastOnce())
- ->method('getDefinition')
- ->will($this->onConsecutiveCalls($renderer, $definition));
+ $builder = new ContainerBuilder();
+ $fragmentHandlerDefinition = $builder->register('fragment.handler');
+ $builder->register('my_content_renderer', 'Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\RendererService')
+ ->addTag('kernel.fragment_renderer');
$pass = new FragmentRendererPass();
$pass->process($builder);
+
+ $this->assertEquals(array(array('addRenderer', array(new Reference('my_content_renderer')))), $fragmentHandlerDefinition->getMethodCalls());
}
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/LoggingTranslatorPassTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/LoggingTranslatorPassTest.php
index db6557913b..00da2724d1 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/LoggingTranslatorPassTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/LoggingTranslatorPassTest.php
@@ -13,75 +13,52 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
use PHPUnit\Framework\TestCase;
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\LoggingTranslatorPass;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Reference;
class LoggingTranslatorPassTest extends TestCase
{
public function testProcess()
{
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->getMock();
- $parameterBag = $this->getMockBuilder('Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface')->getMock();
-
- $container->expects($this->exactly(2))
- ->method('hasAlias')
- ->will($this->returnValue(true));
-
- $container->expects($this->once())
- ->method('getParameter')
- ->will($this->returnValue(true));
-
- $container->expects($this->once())
- ->method('getAlias')
- ->will($this->returnValue('translation.default'));
-
- $container->expects($this->exactly(3))
- ->method('getDefinition')
- ->will($this->returnValue($definition));
-
- $container->expects($this->once())
- ->method('hasParameter')
- ->with('translator.logging')
- ->will($this->returnValue(true));
-
- $definition->expects($this->once())
- ->method('getClass')
- ->will($this->returnValue('%translator.class%'));
-
- $parameterBag->expects($this->once())
- ->method('resolveValue')
- ->will($this->returnValue("Symfony\Bundle\FrameworkBundle\Translation\Translator"));
-
- $container->expects($this->once())
- ->method('getParameterBag')
- ->will($this->returnValue($parameterBag));
+ $container = new ContainerBuilder();
+ $container->setParameter('translator.logging', true);
+ $container->setParameter('translator.class', 'Symfony\Component\Translation\Translator');
+ $container->register('monolog.logger');
+ $container->setAlias('logger', 'monolog.logger');
+ $container->register('translator.default', '%translator.class%');
+ $container->register('translator.logging', '%translator.class%');
+ $container->setAlias('translator', 'translator.default');
+ $translationWarmerDefinition = $container->register('translation.warmer')->addArgument(new Reference('translator'));
$pass = new LoggingTranslatorPass();
$pass->process($container);
+
+ $this->assertEquals(new Reference('translator.logging.inner'), $translationWarmerDefinition->getArgument(0));
}
public function testThatCompilerPassIsIgnoredIfThereIsNotLoggerDefinition()
{
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->getMock();
- $container->expects($this->once())
- ->method('hasAlias')
- ->will($this->returnValue(false));
+ $container = new ContainerBuilder();
+ $container->register('identity_translator');
+ $container->setAlias('translator', 'identity_translator');
$pass = new LoggingTranslatorPass();
$pass->process($container);
+
+ // we just check that the compiler pass does not break if a logger is not registered
+ $this->addToAssertionCount(1);
}
public function testThatCompilerPassIsIgnoredIfThereIsNotTranslatorDefinition()
{
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->getMock();
- $container->expects($this->at(0))
- ->method('hasAlias')
- ->will($this->returnValue(true));
-
- $container->expects($this->at(0))
- ->method('hasAlias')
- ->will($this->returnValue(false));
+ $container = new ContainerBuilder();
+ $container->register('monolog.logger');
+ $container->setAlias('logger', 'monolog.logger');
$pass = new LoggingTranslatorPass();
$pass->process($container);
+
+ // we just check that the compiler pass does not break if a translator is not registered
+ $this->addToAssertionCount(1);
}
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/ProfilerPassTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/ProfilerPassTest.php
index e064ce9f17..9fcae720b2 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/ProfilerPassTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/ProfilerPassTest.php
@@ -12,18 +12,11 @@
namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Definition;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ProfilerPass;
class ProfilerPassTest extends TestCase
{
- private $profilerDefinition;
-
- protected function setUp()
- {
- $this->profilerDefinition = new Definition('ProfilerClass');
- }
-
/**
* Tests that collectors that specify a template but no "id" will throw
* an exception (both are needed if the template is specified).
@@ -31,17 +24,15 @@ class ProfilerPassTest extends TestCase
* Thus, a fully-valid tag looks something like this:
*
*
+ *
+ * @expectedException \InvalidArgumentException
*/
public function testTemplateNoIdThrowsException()
{
- // one service, with a template key, but no id
- $services = array(
- 'my_collector_service' => array(0 => array('template' => 'foo')),
- );
-
- $builder = $this->createContainerMock($services);
-
- $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('InvalidArgumentException');
+ $builder = new ContainerBuilder();
+ $builder->register('profiler', 'ProfilerClass');
+ $builder->register('my_collector_service')
+ ->addTag('data_collector', array('template' => 'foo'));
$profilerPass = new ProfilerPass();
$profilerPass->process($builder);
@@ -49,45 +40,19 @@ class ProfilerPassTest extends TestCase
public function testValidCollector()
{
- // one service, with a template key, but no id
- $services = array(
- 'my_collector_service' => array(0 => array('template' => 'foo', 'id' => 'my_collector')),
- );
-
- $container = $this->createContainerMock($services);
-
- // fake the getDefinition() to return a Profiler definition
- $container->expects($this->atLeastOnce())
- ->method('getDefinition');
-
- // assert that the data_collector.templates parameter should be set
- $container->expects($this->once())
- ->method('setParameter')
- ->with('data_collector.templates', array('my_collector_service' => array('my_collector', 'foo')));
+ $container = new ContainerBuilder();
+ $profilerDefinition = $container->register('profiler', 'ProfilerClass');
+ $container->register('my_collector_service')
+ ->addTag('data_collector', array('template' => 'foo', 'id' => 'my_collector'));
$profilerPass = new ProfilerPass();
$profilerPass->process($container);
+ $this->assertSame(array('my_collector_service' => array('my_collector', 'foo')), $container->getParameter('data_collector.templates'));
+
// grab the method calls off of the "profiler" definition
- $methodCalls = $this->profilerDefinition->getMethodCalls();
+ $methodCalls = $profilerDefinition->getMethodCalls();
$this->assertCount(1, $methodCalls);
$this->assertEquals('add', $methodCalls[0][0]); // grab the method part of the first call
}
-
- private function createContainerMock($services)
- {
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'getDefinition', 'findTaggedServiceIds', 'setParameter'))->getMock();
- $container->expects($this->any())
- ->method('hasDefinition')
- ->with($this->equalTo('profiler'))
- ->will($this->returnValue(true));
- $container->expects($this->any())
- ->method('getDefinition')
- ->will($this->returnValue($this->profilerDefinition));
- $container->expects($this->atLeastOnce())
- ->method('findTaggedServiceIds')
- ->will($this->returnValue($services));
-
- return $container;
- }
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/SerializerPassTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/SerializerPassTest.php
index a2a07bc753..12e9e1c34b 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/SerializerPassTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/SerializerPassTest.php
@@ -12,6 +12,7 @@
namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
use PHPUnit\Framework\TestCase;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\SerializerPass;
@@ -22,48 +23,30 @@ use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\SerializerPass;
*/
class SerializerPassTest extends TestCase
{
+ /**
+ * @expectedException \RuntimeException
+ * @expectedExceptionMessage You must tag at least one service as "serializer.normalizer" to use the Serializer service
+ */
public function testThrowExceptionWhenNoNormalizers()
{
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds'))->getMock();
-
- $container->expects($this->once())
- ->method('hasDefinition')
- ->with('serializer')
- ->will($this->returnValue(true));
-
- $container->expects($this->once())
- ->method('findTaggedServiceIds')
- ->with('serializer.normalizer')
- ->will($this->returnValue(array()));
-
- $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('RuntimeException');
+ $container = new ContainerBuilder();
+ $container->register('serializer');
$serializerPass = new SerializerPass();
$serializerPass->process($container);
}
+ /**
+ * @expectedException \RuntimeException
+ * @expectedExceptionMessage You must tag at least one service as "serializer.encoder" to use the Serializer service
+ */
public function testThrowExceptionWhenNoEncoders()
{
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
-
- $container->expects($this->once())
- ->method('hasDefinition')
- ->with('serializer')
- ->will($this->returnValue(true));
-
- $container->expects($this->any())
- ->method('findTaggedServiceIds')
- ->will($this->onConsecutiveCalls(
- array('n' => array('serializer.normalizer')),
- array()
- ));
-
- $container->expects($this->once())
- ->method('getDefinition')
- ->will($this->returnValue($definition));
-
- $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('RuntimeException');
+ $container = new ContainerBuilder();
+ $container->register('serializer')
+ ->addArgument(array())
+ ->addArgument(array());
+ $container->register('normalizer')->addTag('serializer.normalizer');
$serializerPass = new SerializerPass();
$serializerPass->process($container);
@@ -71,34 +54,18 @@ class SerializerPassTest extends TestCase
public function testServicesAreOrderedAccordingToPriority()
{
- $services = array(
- 'n3' => array(array()),
- 'n1' => array(array('priority' => 200)),
- 'n2' => array(array('priority' => 100)),
- );
-
- $expected = array(
- new Reference('n1'),
- new Reference('n2'),
- new Reference('n3'),
- );
-
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('findTaggedServiceIds'))->getMock();
-
- $container->expects($this->any())
- ->method('findTaggedServiceIds')
- ->will($this->returnValue($services));
+ $container = new ContainerBuilder();
+ $serializerDefinition = $container->register('serializer')
+ ->addArgument(array())
+ ->addArgument(array());
+ $container->register('normalizer3')->addTag('serializer.normalizer');
+ $container->register('normalizer1')->addTag('serializer.normalizer', array('priority' => 200));
+ $container->register('normalizer2')->addTag('serializer.normalizer', array('priority' => 100));
+ $container->register('encoder')->addTag('serializer.encoder');
$serializerPass = new SerializerPass();
+ $serializerPass->process($container);
- $method = new \ReflectionMethod(
- 'Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\SerializerPass',
- 'findAndSortTaggedServices'
- );
- $method->setAccessible(true);
-
- $actual = $method->invoke($serializerPass, 'tag', $container);
-
- $this->assertEquals($expected, $actual);
+ $this->assertEquals(array(new Reference('normalizer1'), new Reference('normalizer2'), new Reference('normalizer3')), $serializerDefinition->getArgument(0));
}
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/TranslatorPassTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/TranslatorPassTest.php
index 10a38aabdb..e176c7534a 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/TranslatorPassTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/TranslatorPassTest.php
@@ -12,6 +12,7 @@
namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
use PHPUnit\Framework\TestCase;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TranslatorPass;
@@ -19,28 +20,22 @@ class TranslatorPassTest extends TestCase
{
public function testValidCollector()
{
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $definition->expects($this->at(0))
- ->method('addMethodCall')
- ->with('addLoader', array('xliff', new Reference('xliff')));
- $definition->expects($this->at(1))
- ->method('addMethodCall')
- ->with('addLoader', array('xlf', new Reference('xliff')));
+ $container = new ContainerBuilder();
+ $container->register('translator.default')
+ ->setArguments(array(null, null, array()));
+ $translationLoaderDefinition = $container->register('translation.loader');
+ $container->register('xliff')
+ ->addTag('translation.loader', array('alias' => 'xliff', 'legacy-alias' => 'xlf'));
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'getDefinition', 'findTaggedServiceIds', 'findDefinition'))->getMock();
- $container->expects($this->any())
- ->method('hasDefinition')
- ->will($this->returnValue(true));
- $container->expects($this->once())
- ->method('getDefinition')
- ->will($this->returnValue($definition));
- $container->expects($this->once())
- ->method('findTaggedServiceIds')
- ->will($this->returnValue(array('xliff' => array(array('alias' => 'xliff', 'legacy-alias' => 'xlf')))));
- $container->expects($this->once())
- ->method('findDefinition')
- ->will($this->returnValue($this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock()));
$pass = new TranslatorPass();
$pass->process($container);
+
+ $this->assertEquals(
+ array(
+ array('addLoader', array('xliff', new Reference('xliff'))),
+ array('addLoader', array('xlf', new Reference('xliff'))),
+ ),
+ $translationLoaderDefinition->getMethodCalls()
+ );
}
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Validator/ConstraintValidatorFactoryTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Validator/ConstraintValidatorFactoryTest.php
index 6cf9574ece..995048455f 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Validator/ConstraintValidatorFactoryTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Validator/ConstraintValidatorFactoryTest.php
@@ -14,7 +14,9 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\Validator;
use PHPUnit\Framework\TestCase;
use Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory;
use Symfony\Component\DependencyInjection\Container;
+use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\Constraints\Blank as BlankConstraint;
+use Symfony\Component\Validator\ConstraintValidator;
class ConstraintValidatorFactoryTest extends TestCase
{
@@ -42,26 +44,13 @@ class ConstraintValidatorFactoryTest extends TestCase
public function testGetInstanceReturnsService()
{
- $service = 'validator_constraint_service';
- $alias = 'validator_constraint_alias';
- $validator = $this->getMockForAbstractClass('Symfony\\Component\\Validator\\ConstraintValidator');
+ $validator = new DummyConstraintValidator();
- // mock ContainerBuilder b/c it implements TaggedContainerInterface
- $container = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\ContainerBuilder')->setMethods(array('get'))->getMock();
- $container
- ->expects($this->once())
- ->method('get')
- ->with($service)
- ->will($this->returnValue($validator));
-
- $constraint = $this->getMockBuilder('Symfony\\Component\\Validator\\Constraint')->getMock();
- $constraint
- ->expects($this->once())
- ->method('validatedBy')
- ->will($this->returnValue($alias));
+ $container = new Container();
+ $container->set('validator_constraint_service', $validator);
$factory = new ConstraintValidatorFactory($container, array('validator_constraint_alias' => 'validator_constraint_service'));
- $this->assertSame($validator, $factory->getInstance($constraint));
+ $this->assertSame($validator, $factory->getInstance(new ConstraintStub()));
}
/**
@@ -79,3 +68,18 @@ class ConstraintValidatorFactoryTest extends TestCase
$factory->getInstance($constraint);
}
}
+
+class ConstraintStub extends Constraint
+{
+ public function validatedBy()
+ {
+ return 'validator_constraint_alias';
+ }
+}
+
+class DummyConstraintValidator extends ConstraintValidator
+{
+ public function validate($value, Constraint $constraint)
+ {
+ }
+}
diff --git a/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/Compiler/TwigLoaderPassTest.php b/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/Compiler/TwigLoaderPassTest.php
index 10bcf3e8f6..b7870ac56c 100644
--- a/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/Compiler/TwigLoaderPassTest.php
+++ b/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/Compiler/TwigLoaderPassTest.php
@@ -12,13 +12,14 @@
namespace Symfony\Bundle\TwigBundle\Tests\DependencyInjection\Compiler;
use PHPUnit\Framework\TestCase;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Bundle\TwigBundle\DependencyInjection\Compiler\TwigLoaderPass;
class TwigLoaderPassTest extends TestCase
{
/**
- * @var \PHPUnit_Framework_MockObject_MockObject
+ * @var ContainerBuilder
*/
private $builder;
/**
@@ -32,62 +33,33 @@ class TwigLoaderPassTest extends TestCase
protected function setUp()
{
- $this->builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'setAlias', 'getDefinition'))->getMock();
+ $this->builder = new ContainerBuilder();
+ $this->builder->register('twig');
$this->chainLoader = new Definition('loader');
$this->pass = new TwigLoaderPass();
}
- public function testMapperPassWithOneTaggedLoaders()
+ public function testMapperPassWithOneTaggedLoader()
{
- $serviceIds = array(
- 'test_loader_1' => array(
- array(),
- ),
- );
-
- $this->builder->expects($this->once())
- ->method('hasDefinition')
- ->with('twig')
- ->will($this->returnValue(true));
- $this->builder->expects($this->once())
- ->method('findTaggedServiceIds')
- ->with('twig.loader')
- ->will($this->returnValue($serviceIds));
- $this->builder->expects($this->once())
- ->method('setAlias')
- ->with('twig.loader', 'test_loader_1');
+ $this->builder->register('test_loader_1')
+ ->addTag('twig.loader');
$this->pass->process($this->builder);
+
+ $this->assertSame('test_loader_1', (string) $this->builder->getAlias('twig.loader'));
}
public function testMapperPassWithTwoTaggedLoaders()
{
- $serviceIds = array(
- 'test_loader_1' => array(
- array(),
- ),
- 'test_loader_2' => array(
- array(),
- ),
- );
-
- $this->builder->expects($this->once())
- ->method('hasDefinition')
- ->with('twig')
- ->will($this->returnValue(true));
- $this->builder->expects($this->once())
- ->method('findTaggedServiceIds')
- ->with('twig.loader')
- ->will($this->returnValue($serviceIds));
- $this->builder->expects($this->once())
- ->method('getDefinition')
- ->with('twig.loader.chain')
- ->will($this->returnValue($this->chainLoader));
- $this->builder->expects($this->once())
- ->method('setAlias')
- ->with('twig.loader', 'twig.loader.chain');
+ $this->builder->setDefinition('twig.loader.chain', $this->chainLoader);
+ $this->builder->register('test_loader_1')
+ ->addTag('twig.loader');
+ $this->builder->register('test_loader_2')
+ ->addTag('twig.loader');
$this->pass->process($this->builder);
+
+ $this->assertSame('twig.loader.chain', (string) $this->builder->getAlias('twig.loader'));
$calls = $this->chainLoader->getMethodCalls();
$this->assertCount(2, $calls);
$this->assertEquals('addLoader', $calls[0][0]);
@@ -98,32 +70,15 @@ class TwigLoaderPassTest extends TestCase
public function testMapperPassWithTwoTaggedLoadersWithPriority()
{
- $serviceIds = array(
- 'test_loader_1' => array(
- array('priority' => 100),
- ),
- 'test_loader_2' => array(
- array('priority' => 200),
- ),
- );
-
- $this->builder->expects($this->once())
- ->method('hasDefinition')
- ->with('twig')
- ->will($this->returnValue(true));
- $this->builder->expects($this->once())
- ->method('findTaggedServiceIds')
- ->with('twig.loader')
- ->will($this->returnValue($serviceIds));
- $this->builder->expects($this->once())
- ->method('getDefinition')
- ->with('twig.loader.chain')
- ->will($this->returnValue($this->chainLoader));
- $this->builder->expects($this->once())
- ->method('setAlias')
- ->with('twig.loader', 'twig.loader.chain');
+ $this->builder->setDefinition('twig.loader.chain', $this->chainLoader);
+ $this->builder->register('test_loader_1')
+ ->addTag('twig.loader', array('priority' => 100));
+ $this->builder->register('test_loader_2')
+ ->addTag('twig.loader', array('priority' => 200));
$this->pass->process($this->builder);
+
+ $this->assertSame('twig.loader.chain', (string) $this->builder->getAlias('twig.loader'));
$calls = $this->chainLoader->getMethodCalls();
$this->assertCount(2, $calls);
$this->assertEquals('addLoader', $calls[0][0]);
@@ -137,15 +92,6 @@ class TwigLoaderPassTest extends TestCase
*/
public function testMapperPassWithZeroTaggedLoaders()
{
- $this->builder->expects($this->once())
- ->method('hasDefinition')
- ->with('twig')
- ->will($this->returnValue(true));
- $this->builder->expects($this->once())
- ->method('findTaggedServiceIds')
- ->with('twig.loader')
- ->will($this->returnValue(array()));
-
$this->pass->process($this->builder);
}
}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ExtensionCompilerPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ExtensionCompilerPassTest.php
index e083611458..f4c4353abe 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ExtensionCompilerPassTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ExtensionCompilerPassTest.php
@@ -12,7 +12,10 @@
namespace Symfony\Component\DependencyInjection\Tests\Compiler;
use PHPUnit\Framework\TestCase;
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\Compiler\ExtensionCompilerPass;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Extension\Extension;
/**
* @author Wouter J
@@ -24,33 +27,52 @@ class ExtensionCompilerPassTest extends TestCase
protected function setUp()
{
- $this->container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->getMock();
+ $this->container = new ContainerBuilder();
$this->pass = new ExtensionCompilerPass();
}
public function testProcess()
{
- $extension1 = $this->createExtensionMock(true);
- $extension1->expects($this->once())->method('process');
- $extension2 = $this->createExtensionMock(false);
- $extension3 = $this->createExtensionMock(false);
- $extension4 = $this->createExtensionMock(true);
- $extension4->expects($this->once())->method('process');
+ $extension1 = new CompilerPassExtension('extension1');
+ $extension2 = new DummyExtension('extension2');
+ $extension3 = new DummyExtension('extension3');
+ $extension4 = new CompilerPassExtension('extension4');
- $this->container->expects($this->any())
- ->method('getExtensions')
- ->will($this->returnValue(array($extension1, $extension2, $extension3, $extension4)))
- ;
+ $this->container->registerExtension($extension1);
+ $this->container->registerExtension($extension2);
+ $this->container->registerExtension($extension3);
+ $this->container->registerExtension($extension4);
$this->pass->process($this->container);
- }
- private function createExtensionMock($hasInlineCompile)
- {
- return $this->getMockBuilder('Symfony\Component\DependencyInjection\\'.(
- $hasInlineCompile
- ? 'Compiler\CompilerPassInterface'
- : 'Extension\ExtensionInterface'
- ))->getMock();
+ $this->assertCount(2, $this->container->getDefinitions());
}
}
+
+class DummyExtension extends Extension
+{
+ private $alias;
+
+ public function __construct($alias)
+ {
+ $this->alias = $alias;
+ }
+
+ public function getAlias()
+ {
+ return $this->alias;
+ }
+
+ public function load(array $configs, ContainerBuilder $container)
+ {
+ }
+
+ public function process(ContainerBuilder $container)
+ {
+ $container->register($this->alias);
+ }
+}
+
+class CompilerPassExtension extends DummyExtension implements CompilerPassInterface
+{
+}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Extension/ExtensionTest.php b/src/Symfony/Component/DependencyInjection/Tests/Extension/ExtensionTest.php
index 90852c359e..9f66bfd7c6 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Extension/ExtensionTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Extension/ExtensionTest.php
@@ -12,6 +12,8 @@
namespace Symfony\Component\DependencyInjection\Tests\Extension;
use PHPUnit\Framework\TestCase;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Extension\Extension;
class ExtensionTest extends TestCase
{
@@ -20,36 +22,8 @@ class ExtensionTest extends TestCase
*/
public function testIsConfigEnabledReturnsTheResolvedValue($enabled)
{
- $pb = $this->getMockBuilder('Symfony\Component\DependencyInjection\ParameterBag\ParameterBag')
- ->setMethods(array('resolveValue'))
- ->getMock()
- ;
-
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')
- ->setMethods(array('getParameterBag'))
- ->getMock()
- ;
-
- $pb->expects($this->once())
- ->method('resolveValue')
- ->with($this->equalTo($enabled))
- ->will($this->returnValue($enabled))
- ;
-
- $container->expects($this->once())
- ->method('getParameterBag')
- ->will($this->returnValue($pb))
- ;
-
- $extension = $this->getMockBuilder('Symfony\Component\DependencyInjection\Extension\Extension')
- ->setMethods(array())
- ->getMockForAbstractClass()
- ;
-
- $r = new \ReflectionMethod('Symfony\Component\DependencyInjection\Extension\Extension', 'isConfigEnabled');
- $r->setAccessible(true);
-
- $r->invoke($extension, $container, array('enabled' => $enabled));
+ $extension = new EnableableExtension();
+ $this->assertSame($enabled, $extension->isConfigEnabled(new ContainerBuilder(), array('enabled' => $enabled)));
}
public function getResolvedEnabledFixtures()
@@ -66,18 +40,20 @@ class ExtensionTest extends TestCase
*/
public function testIsConfigEnabledOnNonEnableableConfig()
{
- $container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')
- ->getMock()
- ;
+ $extension = new EnableableExtension();
- $extension = $this->getMockBuilder('Symfony\Component\DependencyInjection\Extension\Extension')
- ->setMethods(array())
- ->getMockForAbstractClass()
- ;
-
- $r = new \ReflectionMethod('Symfony\Component\DependencyInjection\Extension\Extension', 'isConfigEnabled');
- $r->setAccessible(true);
-
- $r->invoke($extension, $container, array());
+ $extension->isConfigEnabled(new ContainerBuilder(), array());
+ }
+}
+
+class EnableableExtension extends Extension
+{
+ public function load(array $configs, ContainerBuilder $container)
+ {
+ }
+
+ public function isConfigEnabled(ContainerBuilder $container, array $config)
+ {
+ return parent::isConfigEnabled($container, $config);
}
}
diff --git a/src/Symfony/Component/EventDispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php b/src/Symfony/Component/EventDispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php
index 53d7282b37..7490d0d25f 100644
--- a/src/Symfony/Component/EventDispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php
+++ b/src/Symfony/Component/EventDispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php
@@ -25,32 +25,10 @@ class RegisterListenersPassTest extends TestCase
*/
public function testEventSubscriberWithoutInterface()
{
- // one service, not implementing any interface
- $services = array(
- 'my_event_subscriber' => array(0 => array()),
- );
-
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $definition->expects($this->atLeastOnce())
- ->method('isPublic')
- ->will($this->returnValue(true));
- $definition->expects($this->atLeastOnce())
- ->method('getClass')
- ->will($this->returnValue('stdClass'));
-
- $builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
- $builder->expects($this->any())
- ->method('hasDefinition')
- ->will($this->returnValue(true));
-
- // We don't test kernel.event_listener here
- $builder->expects($this->atLeastOnce())
- ->method('findTaggedServiceIds')
- ->will($this->onConsecutiveCalls(array(), $services));
-
- $builder->expects($this->atLeastOnce())
- ->method('getDefinition')
- ->will($this->returnValue($definition));
+ $builder = new ContainerBuilder();
+ $builder->register('event_dispatcher');
+ $builder->register('my_event_subscriber', 'stdClass')
+ ->addTag('kernel.event_subscriber');
$registerListenersPass = new RegisterListenersPass();
$registerListenersPass->process($builder);
@@ -62,34 +40,15 @@ class RegisterListenersPassTest extends TestCase
'my_event_subscriber' => array(0 => array()),
);
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $definition->expects($this->atLeastOnce())
- ->method('isPublic')
- ->will($this->returnValue(true));
- $definition->expects($this->atLeastOnce())
- ->method('getClass')
- ->will($this->returnValue('Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService'));
-
- $builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition', 'findDefinition'))->getMock();
- $builder->expects($this->any())
- ->method('hasDefinition')
- ->will($this->returnValue(true));
-
- // We don't test kernel.event_listener here
- $builder->expects($this->atLeastOnce())
- ->method('findTaggedServiceIds')
- ->will($this->onConsecutiveCalls(array(), $services));
-
- $builder->expects($this->atLeastOnce())
- ->method('getDefinition')
- ->will($this->returnValue($definition));
-
- $builder->expects($this->atLeastOnce())
- ->method('findDefinition')
- ->will($this->returnValue($definition));
+ $builder = new ContainerBuilder();
+ $eventDispatcherDefinition = $builder->register('event_dispatcher');
+ $builder->register('my_event_subscriber', 'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService')
+ ->addTag('kernel.event_subscriber');
$registerListenersPass = new RegisterListenersPass();
$registerListenersPass->process($builder);
+
+ $this->assertEquals(array(array('addSubscriberService', array('my_event_subscriber', 'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService'))), $eventDispatcherDefinition->getMethodCalls());
}
/**
diff --git a/src/Symfony/Component/Finder/Finder.php b/src/Symfony/Component/Finder/Finder.php
index 99a9c63337..4d9b470fe1 100644
--- a/src/Symfony/Component/Finder/Finder.php
+++ b/src/Symfony/Component/Finder/Finder.php
@@ -423,6 +423,8 @@ class Finder implements \IteratorAggregate, \Countable
/**
* Excludes "hidden" directories and files (starting with a dot).
*
+ * This option is enabled by default.
+ *
* @param bool $ignoreDotFiles Whether to exclude "hidden" files or not
*
* @return $this
@@ -443,6 +445,8 @@ class Finder implements \IteratorAggregate, \Countable
/**
* Forces the finder to ignore version control directories.
*
+ * This option is enabled by default.
+ *
* @param bool $ignoreVCS Whether to exclude VCS files or not
*
* @return $this
diff --git a/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/FragmentRendererPassTest.php b/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/FragmentRendererPassTest.php
index 2a27fcac21..8bac207d17 100644
--- a/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/FragmentRendererPassTest.php
+++ b/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/FragmentRendererPassTest.php
@@ -12,6 +12,7 @@
namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
use PHPUnit\Framework\TestCase;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\DependencyInjection\FragmentRendererPass;
@@ -24,118 +25,47 @@ class FragmentRendererPassTest extends TestCase
*/
public function testLegacyFragmentRedererWithoutAlias()
{
- // no alias
- $services = array(
- 'my_content_renderer' => array(array()),
- );
-
- $renderer = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $renderer
- ->expects($this->once())
- ->method('addMethodCall')
- ->with('addRenderer', array(new Reference('my_content_renderer')))
- ;
-
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $definition->expects($this->atLeastOnce())
- ->method('getClass')
- ->will($this->returnValue('Symfony\Component\HttpKernel\Tests\DependencyInjection\RendererService'));
- $definition
- ->expects($this->once())
- ->method('isPublic')
- ->will($this->returnValue(true))
- ;
-
- $builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
- $builder->expects($this->any())
- ->method('hasDefinition')
- ->will($this->returnValue(true));
-
- // We don't test kernel.fragment_renderer here
- $builder->expects($this->atLeastOnce())
- ->method('findTaggedServiceIds')
- ->will($this->returnValue($services));
-
- $builder->expects($this->atLeastOnce())
- ->method('getDefinition')
- ->will($this->onConsecutiveCalls($renderer, $definition));
+ $builder = new ContainerBuilder();
+ $fragmentHandlerDefinition = $builder->register('fragment.handler');
+ $builder->register('my_content_renderer', 'Symfony\Component\HttpKernel\Tests\DependencyInjection\RendererService')
+ ->addTag('kernel.fragment_renderer');
$pass = new FragmentRendererPass();
$pass->process($builder);
+
+ $this->assertEquals(array(array('addRenderer', array(new Reference('my_content_renderer')))), $fragmentHandlerDefinition->getMethodCalls());
}
/**
* Tests that content rendering not implementing FragmentRendererInterface
- * trigger an exception.
+ * triggers an exception.
*
* @expectedException \InvalidArgumentException
*/
public function testContentRendererWithoutInterface()
{
- // one service, not implementing any interface
- $services = array(
- 'my_content_renderer' => array(array('alias' => 'foo')),
- );
-
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
-
- $builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
- $builder->expects($this->any())
- ->method('hasDefinition')
- ->will($this->returnValue(true));
-
- // We don't test kernel.fragment_renderer here
- $builder->expects($this->atLeastOnce())
- ->method('findTaggedServiceIds')
- ->will($this->returnValue($services));
-
- $builder->expects($this->atLeastOnce())
- ->method('getDefinition')
- ->will($this->returnValue($definition));
+ $builder = new ContainerBuilder();
+ $fragmentHandlerDefinition = $builder->register('fragment.handler');
+ $builder->register('my_content_renderer', 'Symfony\Component\DependencyInjection\Definition')
+ ->addTag('kernel.fragment_renderer', array('alias' => 'foo'));
$pass = new FragmentRendererPass();
$pass->process($builder);
+
+ $this->assertEquals(array(array('addRendererService', array('foo', 'my_content_renderer'))), $fragmentHandlerDefinition->getMethodCalls());
}
public function testValidContentRenderer()
{
- $services = array(
- 'my_content_renderer' => array(array('alias' => 'foo')),
- );
-
- $renderer = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $renderer
- ->expects($this->once())
- ->method('addMethodCall')
- ->with('addRendererService', array('foo', 'my_content_renderer'))
- ;
-
- $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
- $definition->expects($this->atLeastOnce())
- ->method('getClass')
- ->will($this->returnValue('Symfony\Component\HttpKernel\Tests\DependencyInjection\RendererService'));
- $definition
- ->expects($this->once())
- ->method('isPublic')
- ->will($this->returnValue(true))
- ;
-
- $builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
- $builder->expects($this->any())
- ->method('hasDefinition')
- ->will($this->returnValue(true));
-
- // We don't test kernel.fragment_renderer here
- $builder->expects($this->atLeastOnce())
- ->method('findTaggedServiceIds')
- ->will($this->returnValue($services));
-
- $builder->expects($this->atLeastOnce())
- ->method('getDefinition')
- ->will($this->onConsecutiveCalls($renderer, $definition));
+ $builder = new ContainerBuilder();
+ $fragmentHandlerDefinition = $builder->register('fragment.handler');
+ $builder->register('my_content_renderer', 'Symfony\Component\HttpKernel\Tests\DependencyInjection\RendererService')
+ ->addTag('kernel.fragment_renderer', array('alias' => 'foo'));
$pass = new FragmentRendererPass();
$pass->process($builder);
+
+ $this->assertEquals(array(array('addRendererService', array('foo', 'my_content_renderer'))), $fragmentHandlerDefinition->getMethodCalls());
}
}
diff --git a/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php b/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php
index 81fc8b455d..ae421d919b 100644
--- a/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php
+++ b/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php
@@ -12,44 +12,39 @@
namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
use PHPUnit\Framework\TestCase;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass;
class MergeExtensionConfigurationPassTest extends TestCase
{
public function testAutoloadMainExtension()
{
- $container = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\ContainerBuilder')->setMethods(array('getExtensionConfig', 'loadFromExtension', 'getParameterBag', 'getDefinitions', 'getAliases', 'getExtensions'))->getMock();
- $params = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\ParameterBag\\ParameterBag')->getMock();
+ $container = new ContainerBuilder();
+ $container->registerExtension(new LoadedExtension());
+ $container->registerExtension(new NotLoadedExtension());
+ $container->loadFromExtension('loaded', array());
- $container->expects($this->at(0))
- ->method('getExtensionConfig')
- ->with('loaded')
- ->will($this->returnValue(array(array())));
- $container->expects($this->at(1))
- ->method('getExtensionConfig')
- ->with('notloaded')
- ->will($this->returnValue(array()));
- $container->expects($this->once())
- ->method('loadFromExtension')
- ->with('notloaded', array());
-
- $container->expects($this->any())
- ->method('getParameterBag')
- ->will($this->returnValue($params));
- $params->expects($this->any())
- ->method('all')
- ->will($this->returnValue(array()));
- $container->expects($this->any())
- ->method('getDefinitions')
- ->will($this->returnValue(array()));
- $container->expects($this->any())
- ->method('getAliases')
- ->will($this->returnValue(array()));
- $container->expects($this->any())
- ->method('getExtensions')
- ->will($this->returnValue(array()));
-
- $configPass = new MergeExtensionConfigurationPass(array('loaded', 'notloaded'));
+ $configPass = new MergeExtensionConfigurationPass(array('loaded', 'not_loaded'));
$configPass->process($container);
+
+ $this->assertTrue($container->hasDefinition('loaded.foo'));
+ $this->assertTrue($container->hasDefinition('not_loaded.bar'));
+ }
+}
+
+class LoadedExtension extends Extension
+{
+ public function load(array $configs, ContainerBuilder $container)
+ {
+ $container->register('loaded.foo');
+ }
+}
+
+class NotLoadedExtension extends Extension
+{
+ public function load(array $configs, ContainerBuilder $container)
+ {
+ $container->register('not_loaded.bar');
}
}