[YAML] Fixed parsing problem with nested DateTime lists

This commit is contained in:
Joschi Kuphal 2016-06-11 11:46:35 +02:00 committed by Fabien Potencier
parent e188cd75b5
commit 52384cf2e5
2 changed files with 17 additions and 1 deletions

View File

@ -398,7 +398,7 @@ class Inline
$value = self::parseScalar($sequence, $flags, array(',', ']'), array('"', "'"), $i, true, $references);
// the value can be an array if a reference has been resolved to an array var
if (!is_array($value) && !$isQuoted && false !== strpos($value, ': ')) {
if (!is_array($value) && !$value instanceof \DateTimeInterface && !$isQuoted && false !== strpos($value, ': ')) {
// embedded mapping?
try {
$pos = 0;

View File

@ -548,6 +548,22 @@ class InlineTest extends \PHPUnit_Framework_TestCase
);
}
/**
* @dataProvider getTimestampTests
*/
public function testParseNestedTimestampListAsDateTimeObject($yaml, $year, $month, $day, $hour, $minute, $second)
{
$expected = new \DateTime($yaml);
$expected->setTimeZone(new \DateTimeZone('UTC'));
$expected->setDate($year, $month, $day);
$expected->setTime($hour, $minute, $second);
$expectedNested = array('nested' => array($expected));
$yamlNested = "{nested: [$yaml]}";
$this->assertEquals($expectedNested, Inline::parse($yamlNested, Yaml::PARSE_DATETIME));
}
/**
* @dataProvider getDateTimeDumpTests
*/