Merge branch '2.8' into 3.3
* 2.8: Test that it do not remove the new flashes when displaying the existing ones [HttpFoundation] AutExpireFlashBag should not clear new flashes [Form] Don't rely on if http-foundation isn't in FileType Fix merge substitute aliases in inline mappings added ability for substitute aliases when mapping in YAML is on single line [Console] Fix global console flag when used in chain
This commit is contained in:
commit
b4afeb2e81
@ -285,6 +285,14 @@ class ArgvInput extends Input
|
|||||||
if ($token === $value || 0 === strpos($token, $value.'=')) {
|
if ($token === $value || 0 === strpos($token, $value.'=')) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (0 === strpos($token, '-') && 0 !== strpos($token, '--')) {
|
||||||
|
$searchableToken = str_replace('-', '', $token);
|
||||||
|
$searchableValue = str_replace('-', '', $value);
|
||||||
|
if ('' !== $searchableToken && '' !== $searchableValue && false !== strpos($searchableToken, $searchableValue)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,6 +314,9 @@ class ArgvInputTest extends TestCase
|
|||||||
$input = new ArgvInput(array('cli.php', '-f', 'foo'));
|
$input = new ArgvInput(array('cli.php', '-f', 'foo'));
|
||||||
$this->assertTrue($input->hasParameterOption('-f'), '->hasParameterOption() returns true if the given short option is in the raw input');
|
$this->assertTrue($input->hasParameterOption('-f'), '->hasParameterOption() returns true if the given short option is in the raw input');
|
||||||
|
|
||||||
|
$input = new ArgvInput(array('cli.php', '-fh'));
|
||||||
|
$this->assertTrue($input->hasParameterOption('-fh'), '->hasParameterOption() returns true if the given short option is in the raw input');
|
||||||
|
|
||||||
$input = new ArgvInput(array('cli.php', '--foo', 'foo'));
|
$input = new ArgvInput(array('cli.php', '--foo', 'foo'));
|
||||||
$this->assertTrue($input->hasParameterOption('--foo'), '->hasParameterOption() returns true if the given short option is in the raw input');
|
$this->assertTrue($input->hasParameterOption('--foo'), '->hasParameterOption() returns true if the given short option is in the raw input');
|
||||||
|
|
||||||
|
@ -92,9 +92,12 @@ class FileType extends AbstractType
|
|||||||
*/
|
*/
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
{
|
{
|
||||||
$dataClass = function (Options $options) {
|
$dataClass = null;
|
||||||
return $options['multiple'] ? null : 'Symfony\Component\HttpFoundation\File\File';
|
if (class_exists('Symfony\Component\HttpFoundation\File\File')) {
|
||||||
};
|
$dataClass = function (Options $options) {
|
||||||
|
return $options['multiple'] ? null : 'Symfony\Component\HttpFoundation\File\File';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
$emptyData = function (Options $options) {
|
$emptyData = function (Options $options) {
|
||||||
return $options['multiple'] ? array() : null;
|
return $options['multiple'] ? array() : null;
|
||||||
|
@ -106,7 +106,7 @@ class AutoExpireFlashBag implements FlashBagInterface
|
|||||||
public function all()
|
public function all()
|
||||||
{
|
{
|
||||||
$return = $this->flashes['display'];
|
$return = $this->flashes['display'];
|
||||||
$this->flashes = array('new' => array(), 'display' => array());
|
$this->flashes['display'] = array();
|
||||||
|
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
@ -150,4 +150,12 @@ class AutoExpireFlashBagTest extends TestCase
|
|||||||
{
|
{
|
||||||
$this->assertEquals(array('notice' => array('A previous flash message')), $this->bag->clear());
|
$this->assertEquals(array('notice' => array('A previous flash message')), $this->bag->clear());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testDoNotRemoveTheNewFlashesWhenDisplayingTheExistingOnes()
|
||||||
|
{
|
||||||
|
$this->bag->add('success', 'Something');
|
||||||
|
$this->bag->all();
|
||||||
|
|
||||||
|
$this->assertEquals(array('new' => array('success' => array('Something')), 'display' => array()), $this->array);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -462,6 +462,7 @@ class Inline
|
|||||||
$output = array();
|
$output = array();
|
||||||
$len = strlen($mapping);
|
$len = strlen($mapping);
|
||||||
++$i;
|
++$i;
|
||||||
|
$allowOverwrite = false;
|
||||||
|
|
||||||
// {foo: bar, bar:foo, ...}
|
// {foo: bar, bar:foo, ...}
|
||||||
while ($i < $len) {
|
while ($i < $len) {
|
||||||
@ -502,6 +503,10 @@ class Inline
|
|||||||
@trigger_error(sprintf('Using a colon after an unquoted mapping key that is not followed by an indication character (i.e. " ", ",", "[", "]", "{", "}") is deprecated since version 3.2 and will throw a ParseException in 4.0 on line %d.', self::$parsedLineNumber + 1), E_USER_DEPRECATED);
|
@trigger_error(sprintf('Using a colon after an unquoted mapping key that is not followed by an indication character (i.e. " ", ",", "[", "]", "{", "}") is deprecated since version 3.2 and will throw a ParseException in 4.0 on line %d.', self::$parsedLineNumber + 1), E_USER_DEPRECATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ('<<' === $key) {
|
||||||
|
$allowOverwrite = true;
|
||||||
|
}
|
||||||
|
|
||||||
while ($i < $len) {
|
while ($i < $len) {
|
||||||
if (':' === $mapping[$i] || ' ' === $mapping[$i]) {
|
if (':' === $mapping[$i] || ' ' === $mapping[$i]) {
|
||||||
++$i;
|
++$i;
|
||||||
@ -510,7 +515,6 @@ class Inline
|
|||||||
}
|
}
|
||||||
|
|
||||||
$tag = self::parseTag($mapping, $i, $flags);
|
$tag = self::parseTag($mapping, $i, $flags);
|
||||||
$duplicate = false;
|
|
||||||
switch ($mapping[$i]) {
|
switch ($mapping[$i]) {
|
||||||
case '[':
|
case '[':
|
||||||
// nested sequence
|
// nested sequence
|
||||||
@ -518,9 +522,19 @@ class Inline
|
|||||||
// Spec: Keys MUST be unique; first one wins.
|
// Spec: Keys MUST be unique; first one wins.
|
||||||
// Parser cannot abort this mapping earlier, since lines
|
// Parser cannot abort this mapping earlier, since lines
|
||||||
// are processed sequentially.
|
// are processed sequentially.
|
||||||
if (isset($output[$key])) {
|
// But overwriting is allowed when a merge node is used in current block.
|
||||||
|
if ('<<' === $key) {
|
||||||
|
foreach ($value as $parsedValue) {
|
||||||
|
$output += $parsedValue;
|
||||||
|
}
|
||||||
|
} elseif ($allowOverwrite || !isset($output[$key])) {
|
||||||
|
if (null !== $tag) {
|
||||||
|
$output[$key] = new TaggedValue($tag, $value);
|
||||||
|
} else {
|
||||||
|
$output[$key] = $value;
|
||||||
|
}
|
||||||
|
} elseif (isset($output[$key])) {
|
||||||
@trigger_error(sprintf('Duplicate key "%s" detected whilst parsing YAML. Silent handling of duplicate mapping keys in YAML is deprecated since version 3.2 and will throw \Symfony\Component\Yaml\Exception\ParseException in 4.0 on line %d.', $key, self::$parsedLineNumber + 1), E_USER_DEPRECATED);
|
@trigger_error(sprintf('Duplicate key "%s" detected whilst parsing YAML. Silent handling of duplicate mapping keys in YAML is deprecated since version 3.2 and will throw \Symfony\Component\Yaml\Exception\ParseException in 4.0 on line %d.', $key, self::$parsedLineNumber + 1), E_USER_DEPRECATED);
|
||||||
$duplicate = true;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '{':
|
case '{':
|
||||||
@ -529,9 +543,17 @@ class Inline
|
|||||||
// Spec: Keys MUST be unique; first one wins.
|
// Spec: Keys MUST be unique; first one wins.
|
||||||
// Parser cannot abort this mapping earlier, since lines
|
// Parser cannot abort this mapping earlier, since lines
|
||||||
// are processed sequentially.
|
// are processed sequentially.
|
||||||
if (isset($output[$key])) {
|
// But overwriting is allowed when a merge node is used in current block.
|
||||||
|
if ('<<' === $key) {
|
||||||
|
$output += $value;
|
||||||
|
} elseif ($allowOverwrite || !isset($output[$key])) {
|
||||||
|
if (null !== $tag) {
|
||||||
|
$output[$key] = new TaggedValue($tag, $value);
|
||||||
|
} else {
|
||||||
|
$output[$key] = $value;
|
||||||
|
}
|
||||||
|
} elseif (isset($output[$key])) {
|
||||||
@trigger_error(sprintf('Duplicate key "%s" detected whilst parsing YAML. Silent handling of duplicate mapping keys in YAML is deprecated since version 3.2 and will throw \Symfony\Component\Yaml\Exception\ParseException in 4.0 on line %d.', $key, self::$parsedLineNumber + 1), E_USER_DEPRECATED);
|
@trigger_error(sprintf('Duplicate key "%s" detected whilst parsing YAML. Silent handling of duplicate mapping keys in YAML is deprecated since version 3.2 and will throw \Symfony\Component\Yaml\Exception\ParseException in 4.0 on line %d.', $key, self::$parsedLineNumber + 1), E_USER_DEPRECATED);
|
||||||
$duplicate = true;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -539,20 +561,20 @@ class Inline
|
|||||||
// Spec: Keys MUST be unique; first one wins.
|
// Spec: Keys MUST be unique; first one wins.
|
||||||
// Parser cannot abort this mapping earlier, since lines
|
// Parser cannot abort this mapping earlier, since lines
|
||||||
// are processed sequentially.
|
// are processed sequentially.
|
||||||
if (isset($output[$key])) {
|
// But overwriting is allowed when a merge node is used in current block.
|
||||||
|
if ('<<' === $key) {
|
||||||
|
$output += $value;
|
||||||
|
} elseif ($allowOverwrite || !isset($output[$key])) {
|
||||||
|
if (null !== $tag) {
|
||||||
|
$output[$key] = new TaggedValue($tag, $value);
|
||||||
|
} else {
|
||||||
|
$output[$key] = $value;
|
||||||
|
}
|
||||||
|
} elseif (isset($output[$key])) {
|
||||||
@trigger_error(sprintf('Duplicate key "%s" detected whilst parsing YAML. Silent handling of duplicate mapping keys in YAML is deprecated since version 3.2 and will throw \Symfony\Component\Yaml\Exception\ParseException in 4.0 on line %d.', $key, self::$parsedLineNumber + 1), E_USER_DEPRECATED);
|
@trigger_error(sprintf('Duplicate key "%s" detected whilst parsing YAML. Silent handling of duplicate mapping keys in YAML is deprecated since version 3.2 and will throw \Symfony\Component\Yaml\Exception\ParseException in 4.0 on line %d.', $key, self::$parsedLineNumber + 1), E_USER_DEPRECATED);
|
||||||
$duplicate = true;
|
|
||||||
}
|
}
|
||||||
--$i;
|
--$i;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$duplicate) {
|
|
||||||
if (null !== $tag) {
|
|
||||||
$output[$key] = new TaggedValue($tag, $value);
|
|
||||||
} else {
|
|
||||||
$output[$key] = $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
++$i;
|
++$i;
|
||||||
|
|
||||||
continue 2;
|
continue 2;
|
||||||
|
@ -21,6 +21,7 @@ yaml: |
|
|||||||
c:
|
c:
|
||||||
foo: bar
|
foo: bar
|
||||||
bar: foo
|
bar: foo
|
||||||
|
bar_inline: {a: before, d: other, <<: *foo, b: new, x: Oren, c: { foo: bar, bar: foo}}
|
||||||
foo2: &foo2
|
foo2: &foo2
|
||||||
a: Ballmer
|
a: Ballmer
|
||||||
ding: &dong [ fi, fei, fo, fam]
|
ding: &dong [ fi, fei, fo, fam]
|
||||||
@ -42,14 +43,19 @@ yaml: |
|
|||||||
p: 12345
|
p: 12345
|
||||||
z:
|
z:
|
||||||
<<: *nestedref
|
<<: *nestedref
|
||||||
|
head_inline: &head_inline { <<: [ *foo , *dong , *foo2 ] }
|
||||||
|
recursive_inline: { <<: *head_inline, c: { <<: *foo2 } }
|
||||||
php: |
|
php: |
|
||||||
array(
|
array(
|
||||||
'foo' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull'),
|
'foo' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull'),
|
||||||
'bar' => array('a' => 'before', 'd' => 'other', 'e' => null, 'b' => 'new', 'c' => array('foo' => 'bar', 'bar' => 'foo'), 'x' => 'Oren'),
|
'bar' => array('a' => 'before', 'd' => 'other', 'e' => null, 'b' => 'new', 'c' => array('foo' => 'bar', 'bar' => 'foo'), 'x' => 'Oren'),
|
||||||
|
'bar_inline' => array('a' => 'before', 'd' => 'other', 'b' => 'new', 'c' => array('foo' => 'bar', 'bar' => 'foo'), 'e' => 'notnull', 'x' => 'Oren'),
|
||||||
'foo2' => array('a' => 'Ballmer'),
|
'foo2' => array('a' => 'Ballmer'),
|
||||||
'ding' => array('fi', 'fei', 'fo', 'fam'),
|
'ding' => array('fi', 'fei', 'fo', 'fam'),
|
||||||
'check' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam', 'isit' => 'tested'),
|
'check' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam', 'isit' => 'tested'),
|
||||||
'head' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam'),
|
'head' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam'),
|
||||||
'taz' => array('a' => 'Steve', 'w' => array('p' => 1234)),
|
'taz' => array('a' => 'Steve', 'w' => array('p' => 1234)),
|
||||||
'nested' => array('a' => 'Steve', 'w' => array('p' => 12345), 'd' => 'Doug', 'z' => array('p' => 12345))
|
'nested' => array('a' => 'Steve', 'w' => array('p' => 12345), 'd' => 'Doug', 'z' => array('p' => 12345)),
|
||||||
|
'head_inline' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam'),
|
||||||
|
'recursive_inline' => array('a' => 'Steve', 'b' => 'Clark', 'c' => array('a' => 'Ballmer'), 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam'),
|
||||||
)
|
)
|
||||||
|
@ -1969,6 +1969,18 @@ YAML;
|
|||||||
|
|
||||||
$this->assertEquals($expected, $this->parser->parse($yaml, Yaml::PARSE_OBJECT_FOR_MAP));
|
$this->assertEquals($expected, $this->parser->parse($yaml, Yaml::PARSE_OBJECT_FOR_MAP));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Symfony\Component\Yaml\Exception\ParseException
|
||||||
|
* @expectedExceptionMessage Reference "foo" does not exist
|
||||||
|
*/
|
||||||
|
public function testEvalRefException()
|
||||||
|
{
|
||||||
|
$yaml = <<<EOE
|
||||||
|
foo: { &foo { a: Steve, <<: *foo} }
|
||||||
|
EOE;
|
||||||
|
$this->parser->parse($yaml);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class B
|
class B
|
||||||
|
Reference in New Issue
Block a user