diff --git a/.travis.yml b/.travis.yml index 51c642e80..66d814eca 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ before_install: - if [ "$SYMFONY_VERSION" != "" ]; then jq "(.require, .\"require-dev\")|=(with_entries(if .key|test(\"^symfony/\") then .value|=\"${SYMFONY_VERSION}\" else . end))" composer.json|ex -sc 'wq!composer.json' /dev/stdin; fi; install: - - travis_retry composer update -n --prefer-dist + - COMPOSER_MEMORY_LIMIT=-1 travis_retry composer update -n --prefer-dist script: - ./vendor/bin/phpunit -v @@ -34,7 +34,7 @@ jobs: - php: 5.5 env: deps=low SYMFONY_DEPRECATIONS_HELPER=weak install: - - travis_retry composer update -n --prefer-lowest --prefer-stable --prefer-dist + - COMPOSER_MEMORY_LIMIT=-1 travis_retry composer update -n --prefer-lowest --prefer-stable --prefer-dist - php: 5.6 env: SYMFONY_VERSION="2.8.*" diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 57bc50416..0cc7ade25 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -111,8 +111,14 @@ private function addDbalSection(ArrayNodeDefinition $node) */ private function getDbalConnectionsNode() { - $treeBuilder = new TreeBuilder(); - $node = $treeBuilder->root('connections'); + $treeBuilder = new TreeBuilder('connections'); + + if (method_exists($treeBuilder, 'getRootNode')) { + $node = $treeBuilder->getRootNode(); + } else { + // BC layer for symfony/config 4.1 and older + $node = $treeBuilder->root('connections'); + } /** @var ArrayNodeDefinition $connectionNode */ $connectionNode = $node @@ -362,8 +368,14 @@ private function addOrmSection(ArrayNodeDefinition $node) */ private function getOrmTargetEntityResolverNode() { - $treeBuilder = new TreeBuilder(); - $node = $treeBuilder->root('resolve_target_entities'); + $treeBuilder = new TreeBuilder('resolve_target_entities'); + + if (method_exists($treeBuilder, 'getRootNode')) { + $node = $treeBuilder->getRootNode(); + } else { + // BC layer for symfony/config 4.1 and older + $node = $treeBuilder->root('resolve_target_entities'); + } $node ->useAttributeAsKey('interface') @@ -381,8 +393,15 @@ private function getOrmTargetEntityResolverNode() */ private function getOrmEntityListenersNode() { - $builder = new TreeBuilder(); - $node = $builder->root('entity_listeners'); + $treeBuilder = new TreeBuilder('entity_listeners'); + + if (method_exists($treeBuilder, 'getRootNode')) { + $node = $treeBuilder->getRootNode(); + } else { + // BC layer for symfony/config 4.1 and older + $node = $treeBuilder->root('entity_listeners'); + } + $normalizer = static function ($mappings) { $entities = []; @@ -466,8 +485,14 @@ private function getOrmEntityListenersNode() */ private function getOrmEntityManagersNode() { - $treeBuilder = new TreeBuilder(); - $node = $treeBuilder->root('entity_managers'); + $treeBuilder = new TreeBuilder('entity_managers'); + + if (method_exists($treeBuilder, 'getRootNode')) { + $node = $treeBuilder->getRootNode(); + } else { + // BC layer for symfony/config 4.1 and older + $node = $treeBuilder->root('entity_managers'); + } $node ->requiresAtLeastOneElement() @@ -630,8 +655,14 @@ private function getOrmEntityManagersNode() */ private function getOrmCacheDriverNode($name) { - $treeBuilder = new TreeBuilder(); - $node = $treeBuilder->root($name); + $treeBuilder = new TreeBuilder($name); + + if (method_exists($treeBuilder, 'getRootNode')) { + $node = $treeBuilder->getRootNode(); + } else { + // BC layer for symfony/config 4.1 and older + $node = $treeBuilder->root($name); + } $node ->addDefaultsIfNotSet() diff --git a/DependencyInjection/DoctrineExtension.php b/DependencyInjection/DoctrineExtension.php index 11a37483a..d6823008c 100644 --- a/DependencyInjection/DoctrineExtension.php +++ b/DependencyInjection/DoctrineExtension.php @@ -801,7 +801,7 @@ protected function loadOrmCacheDrivers(array $entityManager, ContainerBuilder $c private function loadPropertyInfoExtractor($entityManagerName, ContainerBuilder $container) { $propertyExtractorDefinition = $container->register(sprintf('doctrine.orm.%s_entity_manager.property_info_extractor', $entityManagerName), DoctrineExtractor::class); - if (class_exists(PropertyInitializableExtractorInterface::class)) { + if (interface_exists(PropertyInitializableExtractorInterface::class)) { $argumentId = sprintf('doctrine.orm.%s_entity_manager', $entityManagerName); } else { $argumentId = sprintf('doctrine.orm.%s_entity_manager.metadata_factory', $entityManagerName); diff --git a/Tests/ContainerTest.php b/Tests/ContainerTest.php index be5bb3018..5918739c7 100644 --- a/Tests/ContainerTest.php +++ b/Tests/ContainerTest.php @@ -3,6 +3,7 @@ namespace Doctrine\Bundle\DoctrineBundle\Tests; use Doctrine\DBAL\Types\Type; +use Symfony\Component\PropertyInfo\PropertyInitializableExtractorInterface; class ContainerTest extends TestCase { @@ -48,7 +49,9 @@ public function testContainer() $this->assertFalse($container->has('doctrine.dbal.default_connection.events.mysqlsessioninit')); if (interface_exists('Symfony\Component\PropertyInfo\PropertyInfoExtractorInterface') && class_exists('Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor')) { - $this->assertInstanceOf('Doctrine\Common\Persistence\Mapping\ClassMetadataFactory', $container->get('doctrine.orm.default_entity_manager.metadata_factory')); + if (!interface_exists(PropertyInitializableExtractorInterface::class)) { + $this->assertInstanceOf('Doctrine\Common\Persistence\Mapping\ClassMetadataFactory', $container->get('doctrine.orm.default_entity_manager.metadata_factory')); + } $this->assertInstanceOf('Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor', $container->get('doctrine.orm.default_entity_manager.property_info_extractor')); } else { $this->assertFalse($container->has('doctrine.orm.default_entity_manager.metadata_factory')); diff --git a/Tests/ProfilerTest.php b/Tests/ProfilerTest.php index 89576eb22..158341d2d 100644 --- a/Tests/ProfilerTest.php +++ b/Tests/ProfilerTest.php @@ -73,6 +73,9 @@ public function testRender() // This is only needed for WebProfilerBundle=3.2, remove when support for it is dropped $requestCollector = new RequestDataCollector(); $requestCollector->collect($request, $response); + if (method_exists($requestCollector, 'lateCollect')) { + $requestCollector->lateCollect(); + } $profile->addCollector($requestCollector); $output = $this->twig->render('db.html.twig', [