composer update
This commit is contained in:
parent
9ac51e0523
commit
623395064f
279 changed files with 4458 additions and 16328 deletions
416
vendor/symfony/yaml/Tests/ParserTest.php
vendored
416
vendor/symfony/yaml/Tests/ParserTest.php
vendored
|
@ -31,9 +31,30 @@ class ParserTest extends \PHPUnit_Framework_TestCase
|
|||
/**
|
||||
* @dataProvider getDataFormSpecifications
|
||||
*/
|
||||
public function testSpecifications($file, $expected, $yaml, $comment)
|
||||
public function testSpecifications($file, $expected, $yaml, $comment, $deprecated)
|
||||
{
|
||||
$deprecations = array();
|
||||
|
||||
if ($deprecated) {
|
||||
set_error_handler(function ($type, $msg) use (&$deprecations) {
|
||||
if (E_USER_DEPRECATED !== $type) {
|
||||
restore_error_handler();
|
||||
|
||||
return call_user_func_array('PHPUnit_Util_ErrorHandler::handleError', func_get_args());
|
||||
}
|
||||
|
||||
$deprecations[] = $msg;
|
||||
});
|
||||
}
|
||||
|
||||
$this->assertEquals($expected, var_export($this->parser->parse($yaml), true), $comment);
|
||||
|
||||
if ($deprecated) {
|
||||
restore_error_handler();
|
||||
|
||||
$this->assertCount(1, $deprecations);
|
||||
$this->assertContains('Using the comma as a group separator for floats is deprecated since version 3.2 and will be removed in 4.0.', $deprecations[0]);
|
||||
}
|
||||
}
|
||||
|
||||
public function getDataFormSpecifications()
|
||||
|
@ -58,7 +79,7 @@ class ParserTest extends \PHPUnit_Framework_TestCase
|
|||
} else {
|
||||
eval('$expected = '.trim($test['php']).';');
|
||||
|
||||
$tests[] = array($file, var_export($expected, true), $test['yaml'], $test['test']);
|
||||
$tests[] = array($file, var_export($expected, true), $test['yaml'], $test['test'], isset($test['deprecated']) ? $test['deprecated'] : false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -421,19 +442,37 @@ EOF;
|
|||
|
||||
public function testObjectSupportEnabled()
|
||||
{
|
||||
$input = <<<EOF
|
||||
foo: !!php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";}
|
||||
$input = <<<'EOF'
|
||||
foo: !php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";}
|
||||
bar: 1
|
||||
EOF;
|
||||
$this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, false, true), '->parse() is able to parse objects');
|
||||
$this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, Yaml::PARSE_OBJECT), '->parse() is able to parse objects');
|
||||
}
|
||||
|
||||
$input = <<<EOF
|
||||
/**
|
||||
* @group legacy
|
||||
*/
|
||||
public function testObjectSupportEnabledPassingTrue()
|
||||
{
|
||||
$input = <<<'EOF'
|
||||
foo: !php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";}
|
||||
bar: 1
|
||||
EOF;
|
||||
$this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, false, true), '->parse() is able to parse objects');
|
||||
}
|
||||
|
||||
/**
|
||||
* @group legacy
|
||||
*/
|
||||
public function testObjectSupportEnabledWithDeprecatedTag()
|
||||
{
|
||||
$input = <<<'EOF'
|
||||
foo: !!php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";}
|
||||
bar: 1
|
||||
EOF;
|
||||
$this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, Yaml::PARSE_OBJECT), '->parse() is able to parse objects');
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider invalidDumpedObjectProvider
|
||||
*/
|
||||
|
@ -446,6 +485,15 @@ EOF;
|
|||
* @dataProvider getObjectForMapTests
|
||||
*/
|
||||
public function testObjectForMap($yaml, $expected)
|
||||
{
|
||||
$this->assertEquals($expected, $this->parser->parse($yaml, Yaml::PARSE_OBJECT_FOR_MAP));
|
||||
}
|
||||
|
||||
/**
|
||||
* @group legacy
|
||||
* @dataProvider getObjectForMapTests
|
||||
*/
|
||||
public function testObjectForMapEnabledWithMappingUsingBooleanToggles($yaml, $expected)
|
||||
{
|
||||
$this->assertEquals($expected, $this->parser->parse($yaml, false, false, true));
|
||||
}
|
||||
|
@ -454,7 +502,7 @@ EOF;
|
|||
{
|
||||
$tests = array();
|
||||
|
||||
$yaml = <<<EOF
|
||||
$yaml = <<<'EOF'
|
||||
foo:
|
||||
fiz: [cat]
|
||||
EOF;
|
||||
|
@ -475,7 +523,7 @@ EOF;
|
|||
$expected->baz = 'foobar';
|
||||
$tests['object-for-map-is-applied-after-parsing'] = array($yaml, $expected);
|
||||
|
||||
$yaml = <<<EOT
|
||||
$yaml = <<<'EOT'
|
||||
array:
|
||||
- key: one
|
||||
- key: two
|
||||
|
@ -488,7 +536,7 @@ EOT;
|
|||
$expected->array[1]->key = 'two';
|
||||
$tests['nest-map-and-sequence'] = array($yaml, $expected);
|
||||
|
||||
$yaml = <<<YAML
|
||||
$yaml = <<<'YAML'
|
||||
map:
|
||||
1: one
|
||||
2: two
|
||||
|
@ -499,7 +547,7 @@ YAML;
|
|||
$expected->map->{2} = 'two';
|
||||
$tests['numeric-keys'] = array($yaml, $expected);
|
||||
|
||||
$yaml = <<<YAML
|
||||
$yaml = <<<'YAML'
|
||||
map:
|
||||
0: one
|
||||
1: two
|
||||
|
@ -519,16 +567,26 @@ YAML;
|
|||
*/
|
||||
public function testObjectsSupportDisabledWithExceptions($yaml)
|
||||
{
|
||||
$this->parser->parse($yaml, true, false);
|
||||
$this->parser->parse($yaml, Yaml::PARSE_EXCEPTION_ON_INVALID_TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @group legacy
|
||||
* @dataProvider invalidDumpedObjectProvider
|
||||
* @expectedException \Symfony\Component\Yaml\Exception\ParseException
|
||||
*/
|
||||
public function testObjectsSupportDisabledWithExceptionsUsingBooleanToggles($yaml)
|
||||
{
|
||||
$this->parser->parse($yaml, true);
|
||||
}
|
||||
|
||||
public function invalidDumpedObjectProvider()
|
||||
{
|
||||
$yamlTag = <<<EOF
|
||||
$yamlTag = <<<'EOF'
|
||||
foo: !!php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";}
|
||||
bar: 1
|
||||
EOF;
|
||||
$localTag = <<<EOF
|
||||
$localTag = <<<'EOF'
|
||||
foo: !php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";}
|
||||
bar: 1
|
||||
EOF;
|
||||
|
@ -596,7 +654,7 @@ EOF;
|
|||
|
||||
/**
|
||||
* @expectedException \Symfony\Component\Yaml\Exception\ParseException
|
||||
* @expectedExceptionMessage Multiple documents are not supported.
|
||||
* @expectedExceptionMessageRegExp /^Multiple documents are not supported.+/
|
||||
*/
|
||||
public function testMultipleDocumentsNotSupportedException()
|
||||
{
|
||||
|
@ -628,6 +686,53 @@ EOF
|
|||
);
|
||||
}
|
||||
|
||||
public function testSequenceInMappingStartedBySingleDashLine()
|
||||
{
|
||||
$yaml = <<<'EOT'
|
||||
a:
|
||||
-
|
||||
b:
|
||||
-
|
||||
bar: baz
|
||||
- foo
|
||||
d: e
|
||||
EOT;
|
||||
$expected = array(
|
||||
'a' => array(
|
||||
array(
|
||||
'b' => array(
|
||||
array(
|
||||
'bar' => 'baz',
|
||||
),
|
||||
),
|
||||
),
|
||||
'foo',
|
||||
),
|
||||
'd' => 'e',
|
||||
);
|
||||
|
||||
$this->assertSame($expected, $this->parser->parse($yaml));
|
||||
}
|
||||
|
||||
public function testSequenceFollowedByCommentEmbeddedInMapping()
|
||||
{
|
||||
$yaml = <<<'EOT'
|
||||
a:
|
||||
b:
|
||||
- c
|
||||
# comment
|
||||
d: e
|
||||
EOT;
|
||||
$expected = array(
|
||||
'a' => array(
|
||||
'b' => array('c'),
|
||||
'd' => 'e',
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertSame($expected, $this->parser->parse($yaml));
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Symfony\Component\Yaml\Exception\ParseException
|
||||
*/
|
||||
|
@ -647,7 +752,7 @@ EOF
|
|||
*/
|
||||
public function testScalarInSequence()
|
||||
{
|
||||
Yaml::parse(<<<EOF
|
||||
Yaml::parse(<<<'EOF'
|
||||
foo:
|
||||
- bar
|
||||
"missing colon"
|
||||
|
@ -665,10 +770,11 @@ EOF
|
|||
*
|
||||
* @see http://yaml.org/spec/1.2/spec.html#id2759572
|
||||
* @see http://yaml.org/spec/1.1/#id932806
|
||||
* @group legacy
|
||||
*/
|
||||
public function testMappingDuplicateKeyBlock()
|
||||
{
|
||||
$input = <<<EOD
|
||||
$input = <<<'EOD'
|
||||
parent:
|
||||
child: first
|
||||
child: duplicate
|
||||
|
@ -684,9 +790,12 @@ EOD;
|
|||
$this->assertSame($expected, Yaml::parse($input));
|
||||
}
|
||||
|
||||
/**
|
||||
* @group legacy
|
||||
*/
|
||||
public function testMappingDuplicateKeyFlow()
|
||||
{
|
||||
$input = <<<EOD
|
||||
$input = <<<'EOD'
|
||||
parent: { child: first, child: duplicate }
|
||||
parent: { child: duplicate, child: duplicate }
|
||||
EOD;
|
||||
|
@ -698,6 +807,74 @@ EOD;
|
|||
$this->assertSame($expected, Yaml::parse($input));
|
||||
}
|
||||
|
||||
/**
|
||||
* @group legacy
|
||||
* @dataProvider getParseExceptionOnDuplicateData
|
||||
* @expectedDeprecation Duplicate key "%s" detected on line %d whilst parsing YAML. Silent handling of duplicate mapping keys in YAML is deprecated %s.
|
||||
* throws \Symfony\Component\Yaml\Exception\ParseException in 4.0
|
||||
*/
|
||||
public function testParseExceptionOnDuplicate($input, $duplicateKey, $lineNumber)
|
||||
{
|
||||
Yaml::parse($input);
|
||||
}
|
||||
|
||||
public function getParseExceptionOnDuplicateData()
|
||||
{
|
||||
$tests = array();
|
||||
|
||||
$yaml = <<<EOD
|
||||
parent: { child: first, child: duplicate }
|
||||
EOD;
|
||||
$tests[] = array($yaml, 'child', 1);
|
||||
|
||||
$yaml = <<<EOD
|
||||
parent:
|
||||
child: first,
|
||||
child: duplicate
|
||||
EOD;
|
||||
$tests[] = array($yaml, 'child', 3);
|
||||
|
||||
$yaml = <<<EOD
|
||||
parent: { child: foo }
|
||||
parent: { child: bar }
|
||||
EOD;
|
||||
$tests[] = array($yaml, 'parent', 2);
|
||||
|
||||
$yaml = <<<EOD
|
||||
parent: { child_mapping: { value: bar}, child_mapping: { value: bar} }
|
||||
EOD;
|
||||
$tests[] = array($yaml, 'child_mapping', 1);
|
||||
|
||||
$yaml = <<<EOD
|
||||
parent:
|
||||
child_mapping:
|
||||
value: bar
|
||||
child_mapping:
|
||||
value: bar
|
||||
EOD;
|
||||
$tests[] = array($yaml, 'child_mapping', 4);
|
||||
|
||||
$yaml = <<<EOD
|
||||
parent: { child_sequence: ['key1', 'key2', 'key3'], child_sequence: ['key1', 'key2', 'key3'] }
|
||||
EOD;
|
||||
$tests[] = array($yaml, 'child_sequence', 1);
|
||||
|
||||
$yaml = <<<EOD
|
||||
parent:
|
||||
child_sequence:
|
||||
- key1
|
||||
- key2
|
||||
- key3
|
||||
child_sequence:
|
||||
- key1
|
||||
- key2
|
||||
- key3
|
||||
EOD;
|
||||
$tests[] = array($yaml, 'child_sequence', 6);
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
public function testEmptyValue()
|
||||
{
|
||||
$input = <<<'EOF'
|
||||
|
@ -883,7 +1060,7 @@ EOF;
|
|||
*/
|
||||
public function testColonInMappingValueException()
|
||||
{
|
||||
$yaml = <<<EOF
|
||||
$yaml = <<<'EOF'
|
||||
foo: bar: baz
|
||||
EOF;
|
||||
|
||||
|
@ -892,7 +1069,7 @@ EOF;
|
|||
|
||||
public function testColonInMappingValueExceptionNotTriggeredByColonInComment()
|
||||
{
|
||||
$yaml = <<<EOT
|
||||
$yaml = <<<'EOT'
|
||||
foo:
|
||||
bar: foobar # Note: a comment after a colon
|
||||
EOT;
|
||||
|
@ -977,6 +1154,7 @@ EOT
|
|||
foo
|
||||
# bar
|
||||
baz
|
||||
|
||||
EOT
|
||||
,
|
||||
),
|
||||
|
@ -992,7 +1170,7 @@ EOT
|
|||
);
|
||||
$tests[] = array($yaml, $expected);
|
||||
|
||||
$yaml = <<<EOT
|
||||
$yaml = <<<'EOT'
|
||||
foo:
|
||||
bar:
|
||||
scalar-block: >
|
||||
|
@ -1005,7 +1183,7 @@ EOT;
|
|||
$expected = array(
|
||||
'foo' => array(
|
||||
'bar' => array(
|
||||
'scalar-block' => 'line1 line2>',
|
||||
'scalar-block' => "line1 line2>\n",
|
||||
),
|
||||
'baz' => array(
|
||||
'foobar' => null,
|
||||
|
@ -1035,7 +1213,7 @@ EOT;
|
|||
|
||||
public function testBlankLinesAreParsedAsNewLinesInFoldedBlocks()
|
||||
{
|
||||
$yaml = <<<EOT
|
||||
$yaml = <<<'EOT'
|
||||
test: >
|
||||
<h2>A heading</h2>
|
||||
|
||||
|
@ -1047,7 +1225,7 @@ EOT;
|
|||
|
||||
$this->assertSame(
|
||||
array(
|
||||
'test' => <<<EOT
|
||||
'test' => <<<'EOT'
|
||||
<h2>A heading</h2>
|
||||
<ul> <li>a list</li> <li>may be a good example</li> </ul>
|
||||
EOT
|
||||
|
@ -1059,7 +1237,7 @@ EOT
|
|||
|
||||
public function testAdditionallyIndentedLinesAreParsedAsNewLinesInFoldedBlocks()
|
||||
{
|
||||
$yaml = <<<EOT
|
||||
$yaml = <<<'EOT'
|
||||
test: >
|
||||
<h2>A heading</h2>
|
||||
|
||||
|
@ -1071,7 +1249,7 @@ EOT;
|
|||
|
||||
$this->assertSame(
|
||||
array(
|
||||
'test' => <<<EOT
|
||||
'test' => <<<'EOT'
|
||||
<h2>A heading</h2>
|
||||
<ul>
|
||||
<li>a list</li>
|
||||
|
@ -1083,6 +1261,194 @@ EOT
|
|||
$this->parser->parse($yaml)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getBinaryData
|
||||
*/
|
||||
public function testParseBinaryData($data)
|
||||
{
|
||||
$this->assertSame(array('data' => 'Hello world'), $this->parser->parse($data));
|
||||
}
|
||||
|
||||
public function getBinaryData()
|
||||
{
|
||||
return array(
|
||||
'enclosed with double quotes' => array('data: !!binary "SGVsbG8gd29ybGQ="'),
|
||||
'enclosed with single quotes' => array("data: !!binary 'SGVsbG8gd29ybGQ='"),
|
||||
'containing spaces' => array('data: !!binary "SGVs bG8gd 29ybGQ="'),
|
||||
'in block scalar' => array(
|
||||
<<<'EOT'
|
||||
data: !!binary |
|
||||
SGVsbG8gd29ybGQ=
|
||||
EOT
|
||||
),
|
||||
'containing spaces in block scalar' => array(
|
||||
<<<'EOT'
|
||||
data: !!binary |
|
||||
SGVs bG8gd 29ybGQ=
|
||||
EOT
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getInvalidBinaryData
|
||||
*/
|
||||
public function testParseInvalidBinaryData($data, $expectedMessage)
|
||||
{
|
||||
$this->setExpectedExceptionRegExp('\Symfony\Component\Yaml\Exception\ParseException', $expectedMessage);
|
||||
|
||||
$this->parser->parse($data);
|
||||
}
|
||||
|
||||
public function getInvalidBinaryData()
|
||||
{
|
||||
return array(
|
||||
'length not a multiple of four' => array('data: !!binary "SGVsbG8d29ybGQ="', '/The normalized base64 encoded data \(data without whitespace characters\) length must be a multiple of four \(\d+ bytes given\)/'),
|
||||
'invalid characters' => array('!!binary "SGVsbG8#d29ybGQ="', '/The base64 encoded data \(.*\) contains invalid characters/'),
|
||||
'too many equals characters' => array('data: !!binary "SGVsbG8gd29yb==="', '/The base64 encoded data \(.*\) contains invalid characters/'),
|
||||
'misplaced equals character' => array('data: !!binary "SGVsbG8gd29ybG=Q"', '/The base64 encoded data \(.*\) contains invalid characters/'),
|
||||
'length not a multiple of four in block scalar' => array(
|
||||
<<<'EOT'
|
||||
data: !!binary |
|
||||
SGVsbG8d29ybGQ=
|
||||
EOT
|
||||
,
|
||||
'/The normalized base64 encoded data \(data without whitespace characters\) length must be a multiple of four \(\d+ bytes given\)/',
|
||||
),
|
||||
'invalid characters in block scalar' => array(
|
||||
<<<'EOT'
|
||||
data: !!binary |
|
||||
SGVsbG8#d29ybGQ=
|
||||
EOT
|
||||
,
|
||||
'/The base64 encoded data \(.*\) contains invalid characters/',
|
||||
),
|
||||
'too many equals characters in block scalar' => array(
|
||||
<<<'EOT'
|
||||
data: !!binary |
|
||||
SGVsbG8gd29yb===
|
||||
EOT
|
||||
,
|
||||
'/The base64 encoded data \(.*\) contains invalid characters/',
|
||||
),
|
||||
'misplaced equals character in block scalar' => array(
|
||||
<<<'EOT'
|
||||
data: !!binary |
|
||||
SGVsbG8gd29ybG=Q
|
||||
EOT
|
||||
,
|
||||
'/The base64 encoded data \(.*\) contains invalid characters/',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
public function testParseDateAsMappingValue()
|
||||
{
|
||||
$yaml = <<<'EOT'
|
||||
date: 2002-12-14
|
||||
EOT;
|
||||
$expectedDate = new \DateTime();
|
||||
$expectedDate->setTimeZone(new \DateTimeZone('UTC'));
|
||||
$expectedDate->setDate(2002, 12, 14);
|
||||
$expectedDate->setTime(0, 0, 0);
|
||||
|
||||
$this->assertEquals(array('date' => $expectedDate), $this->parser->parse($yaml, Yaml::PARSE_DATETIME));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $lineNumber
|
||||
* @param $yaml
|
||||
* @dataProvider parserThrowsExceptionWithCorrectLineNumberProvider
|
||||
*/
|
||||
public function testParserThrowsExceptionWithCorrectLineNumber($lineNumber, $yaml)
|
||||
{
|
||||
$this->setExpectedException(
|
||||
'\Symfony\Component\Yaml\Exception\ParseException',
|
||||
sprintf('Unexpected characters near "," at line %d (near "bar: "123",").', $lineNumber)
|
||||
);
|
||||
|
||||
$this->parser->parse($yaml);
|
||||
}
|
||||
|
||||
public function parserThrowsExceptionWithCorrectLineNumberProvider()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
4,
|
||||
<<<'YAML'
|
||||
foo:
|
||||
-
|
||||
# bar
|
||||
bar: "123",
|
||||
YAML
|
||||
),
|
||||
array(
|
||||
5,
|
||||
<<<'YAML'
|
||||
foo:
|
||||
-
|
||||
# bar
|
||||
# bar
|
||||
bar: "123",
|
||||
YAML
|
||||
),
|
||||
array(
|
||||
8,
|
||||
<<<'YAML'
|
||||
foo:
|
||||
-
|
||||
# foobar
|
||||
baz: 123
|
||||
bar:
|
||||
-
|
||||
# bar
|
||||
bar: "123",
|
||||
YAML
|
||||
),
|
||||
array(
|
||||
10,
|
||||
<<<'YAML'
|
||||
foo:
|
||||
-
|
||||
# foobar
|
||||
# foobar
|
||||
baz: 123
|
||||
bar:
|
||||
-
|
||||
# bar
|
||||
# bar
|
||||
bar: "123",
|
||||
YAML
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
public function testParseMultiLineQuotedString()
|
||||
{
|
||||
$yaml = <<<EOT
|
||||
foo: "bar
|
||||
baz
|
||||
foobar
|
||||
foo"
|
||||
bar: baz
|
||||
EOT;
|
||||
|
||||
$this->assertSame(array('foo' => 'bar baz foobar foo', 'bar' => 'baz'), $this->parser->parse($yaml));
|
||||
}
|
||||
|
||||
public function testParseMultiLineUnquotedString()
|
||||
{
|
||||
$yaml = <<<EOT
|
||||
foo: bar
|
||||
baz
|
||||
foobar
|
||||
foo
|
||||
bar: baz
|
||||
EOT;
|
||||
|
||||
$this->assertSame(array('foo' => 'bar baz foobar foo', 'bar' => 'baz'), $this->parser->parse($yaml));
|
||||
}
|
||||
}
|
||||
|
||||
class B
|
||||
|
|
Reference in a new issue