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

Issue #3108309 by kim.pepper, bonrita, alexpott, andypost, longwave: Support...

Issue #3108309 by kim.pepper, bonrita, alexpott, andypost, longwave: Support Yaml::PARSE_CUSTOM_TAGS in \Drupal\Component\Serialization\YamlSymfony::decode

(cherry picked from commit a91f4f4e)
parent af993a63
No related branches found
No related tags found
33 merge requests!12684Issue #3220784,!12537Add ViewsConfigUpdater deprecation support for default_argument_skip_url,!12523Issue #3493858 by vidorado, xavier.masson, smustgrave: Extend ViewsBlockBase...,!122353526426-warning-for-missing,!12212Issue #3445525 by alexpott, japerry, catch, mglaman, longwave: Add BC layer...,!11958Issue #3490507 by alexpott, smustgrave: Fix bogus mocking in...,!11769Issue #3517987: Add option to contextual filters to encode slashes in query parameter.,!11185Issue #3477324 by andypost, alexpott: Fix usage of str_getcsv() and fgetcsv() for PHP 8.4,!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,!9944Issue #3483353: Consider making the createCopy config action optionally fail...,!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,...,!8738Issue #3424162 by camilledavis, dineshkumarbollu, smustgrave: Claro...,!8704Make greek characters available in ckeditor5,!8597Draft: Issue #3442259 by catch, quietone, dww: Reduce time of Migrate Upgrade tests...,!8533Issue #3446962 by kim.pepper: Remove incorrectly added...,!8517Issue #3443748 by NexusNovaz, smustgrave: Testcase creates false positive,!8325Update file Sort.php,!8095Expose document root on install,!7930Resolve #3427374 "Taxonomytid viewsargumentdefault plugin",!7627Issue #3439440 by nicxvan, Binoli Lalani, longwave: Remove country support from DateFormatter,!7445Issue #3440169: When using drupalGet(), provide an associative array for $headers,!7401#3271894 Fix documented StreamWrapperInterface return types for realpath() and dirname(),!7384Add constraints to system.advisories,!7078Issue #3320569 by Spokje, mondrake, smustgrave, longwave, quietone, Lendude,...,!6622Issue #2559833 by piggito, mohit_aghera, larowlan, guptahemant, vakulrai,...,!6502Draft: Resolve #2938524 "Plach testing issue",!38582585169-10.1.x,!3226Issue #2987537: Custom menu link entity type should not declare "bundle" entity key
Pipeline #110384 passed with warnings
Pipeline: drupal

#110398

    Pipeline: drupal

    #110390

      ......@@ -43,7 +43,7 @@ public static function decode($raw) {
      $yaml = new Parser();
      // Make sure we have a single trailing newline. A very simple config like
      // 'foo: bar' with no newline will fail to parse otherwise.
      return $yaml->parse($raw, SymfonyYaml::PARSE_EXCEPTION_ON_INVALID_TYPE);
      return $yaml->parse($raw, SymfonyYaml::PARSE_EXCEPTION_ON_INVALID_TYPE | SymfonyYaml::PARSE_CUSTOM_TAGS);
      }
      catch (\Exception $e) {
      throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e);
      ......
      ......@@ -7,6 +7,7 @@
      use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
      use Drupal\Component\Serialization\YamlSymfony;
      use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
      use Symfony\Component\Yaml\Tag\TaggedValue;
      /**
      * Tests the YamlSymfony serialization implementation.
      ......@@ -106,4 +107,72 @@ public function testDecodeObjectSupportDisabled(): void {
      YamlSymfony::decode($yaml);
      }
      /**
      * Tests that YAML custom tags are supported and parsed.
      *
      * @covers ::decode
      *
      * @dataProvider taggedValuesProvider
      */
      public function testCustomTagSupport($expected, $yaml) {
      try {
      $this->assertEquals($expected, YamlSymfony::decode($yaml));
      }
      catch (InvalidDataTypeException $e) {
      $message = 'Custom tag support is not enabled. Enable the `Yaml::PARSE_CUSTOM_TAGS` flag to prevent the %s exception.';
      $this->fail(sprintf($message, InvalidDataTypeException::class));
      }
      }
      /**
      * Data provider for testCustomTagSupport().
      *
      * @return array
      * A list of test data.
      */
      public function taggedValuesProvider() {
      return [
      'sequences' => [
      [
      new TaggedValue('foo', ['yaml']),
      new TaggedValue('quz', ['bar']),
      ],
      <<<YAML
      - !foo
      - yaml
      - !quz [bar]
      YAML
      ],
      'mappings' => [
      new TaggedValue('foo', [
      'foo' => new TaggedValue('quz', ['bar']),
      'quz' => new TaggedValue('foo', ['quz' => 'bar']),
      ]),
      <<<YAML
      !foo
      foo: !quz [bar]
      quz: !foo
      quz: bar
      YAML
      ],
      'inline' => [
      [
      new TaggedValue('foo', [
      'foo',
      'bar',
      ]),
      new TaggedValue('quz',
      [
      'foo' => 'bar',
      'quz' => new TaggedValue('bar', ['one' => 'bar']),
      ]),
      ],
      <<<YAML
      - !foo [foo, bar]
      - !quz {foo: bar, quz: !bar {one: bar}}
      YAML
      ],
      ];
      }
      }
      0% Loading or .
      You are about to add 0 people to the discussion. Proceed with caution.
      Please register or to comment