Skip to content
Snippets Groups Projects
Verified Commit 3552c87a authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3450516 by kim.pepper: Add support for !service_closure custom tag in YamlFileLoader

(cherry picked from commit 72397df3)
(cherry picked from commit 03dbcdc7)
parent f761bb6a
Branches
Tags
15 merge requests!10602Issue #3438769 by vinmayiswamy, antonnavi, michelle, amateescu: Sub workspace does not clear,!10301Issue #3469309 by mstrelan, smustgrave, moshe weitzman: Use one-time login...,!10187Issue #3487488 by dakwamine: ExtensionMimeTypeGuesser::guessMimeType must support file names with "0" (zero) like foo.0.zip,!9929Issue #3445469 by pooja_sharma, smustgrave: Add additional test coverage for...,!9787Resolve issue 3479427 - bootstrap barrio issue under Windows,!9742Issue #3463908 by catch, quietone: Split OptionsFieldUiTest into two,!9526Issue #3458177 by mondrake, catch, quietone, godotislate, longwave, larowlan,...,!8949Backport .gitlabci.yml changes.,!8738Issue #3424162 by camilledavis, dineshkumarbollu, smustgrave: Claro...,!8704Make greek characters available in ckeditor5,!8533Issue #3446962 by kim.pepper: Remove incorrectly added...,!8517Issue #3443748 by NexusNovaz, smustgrave: Testcase creates false positive,!6502Draft: Resolve #2938524 "Plach testing issue",!38582585169-10.1.x,!3226Issue #2987537: Custom menu link entity type should not declare "bundle" entity key
Pipeline #190802 passed with warnings
Pipeline: drupal

#190835

    Pipeline: drupal

    #190826

      Pipeline: drupal

      #190819

        +1
        ......@@ -9,6 +9,7 @@
        use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
        use Drupal\Core\Serialization\Yaml;
        use Symfony\Component\DependencyInjection\Alias;
        use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
        use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;
        use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
        use Symfony\Component\DependencyInjection\ContainerInterface;
        ......@@ -492,6 +493,11 @@ private function resolveServices(mixed $value): mixed
        return $argument;
        }
        if ($value->getTag() === 'service_closure') {
        return new ServiceClosureArgument($this->resolveServices($argument));
        }
        }
        if (is_array($value)) {
        $value = array_map(array($this, 'resolveServices'), $value);
        ......
        ......@@ -9,7 +9,9 @@
        use Drupal\Core\DependencyInjection\YamlFileLoader;
        use Drupal\Tests\UnitTestCase;
        use org\bovigo\vfs\vfsStream;
        use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
        use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
        use Symfony\Component\DependencyInjection\Reference;
        /**
        * @coversDefaultClass \Drupal\Core\DependencyInjection\YamlFileLoader
        ......@@ -39,6 +41,9 @@ class: \Drupal\Core\ExampleClass
        example_tagged_iterator:
        class: \Drupal\Core\ExampleClass
        arguments: [!tagged_iterator foo.bar]"
        example_service_closure:
        class: \Drupal\Core\ExampleClass
        arguments: [!service_closure '@example_service_1']"
        YAML;
        vfsStream::setup('drupal', NULL, [
        ......@@ -63,6 +68,13 @@ class: \Drupal\Core\ExampleClass
        $this->assertTrue($builder->has('Drupal\Core\ExampleClass'));
        $this->assertSame('Drupal\Core\ExampleClass', $builder->getDefinition('Drupal\Core\ExampleClass')->getClass());
        $this->assertInstanceOf(TaggedIteratorArgument::class, $builder->getDefinition('example_tagged_iterator')->getArgument(0));
        // Test service closures.
        $service_closure = $builder->getDefinition('example_service_closure')->getArgument(0);
        $this->assertInstanceOf(ServiceClosureArgument::class, $service_closure);
        $ref = $service_closure->getValues()[0];
        $this->assertInstanceOf(Reference::class, $ref);
        $this->assertEquals('example_service_1', $ref);
        }
        /**
        ......
        0% Loading or .
        You are about to add 0 people to the discussion. Proceed with caution.
        Please register or to comment