Merge branch '2.7' into 2.8
* 2.7: [Console] Fix transient HHVM test [OptionsResolver] Fix catched exception along the dependency tree mistakenly detects cyclic dependencies fixed tests Fixing test locations [VarDumper] Fix dump comparison on large arrays [expression-language] Code Cleanup for GetAttrNode
This commit is contained in:
commit
2377994b66
@ -14,9 +14,20 @@ namespace Symfony\Component\Console\Tests\Helper;
|
|||||||
use Symfony\Component\Console\Helper\ProgressBar;
|
use Symfony\Component\Console\Helper\ProgressBar;
|
||||||
use Symfony\Component\Console\Helper\Helper;
|
use Symfony\Component\Console\Helper\Helper;
|
||||||
use Symfony\Component\Console\Output\StreamOutput;
|
use Symfony\Component\Console\Output\StreamOutput;
|
||||||
|
use Symfony\Component\Console\Tests;
|
||||||
|
|
||||||
class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected function setUp()
|
||||||
|
{
|
||||||
|
Tests\with_clock_mock(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function tearDown()
|
||||||
|
{
|
||||||
|
Tests\with_clock_mock(false);
|
||||||
|
}
|
||||||
|
|
||||||
public function testMultipleStart()
|
public function testMultipleStart()
|
||||||
{
|
{
|
||||||
$bar = new ProgressBar($output = $this->getOutputStream());
|
$bar = new ProgressBar($output = $this->getOutputStream());
|
||||||
|
@ -78,7 +78,7 @@ class GetAttrNode extends Node
|
|||||||
throw new \RuntimeException('Unable to get a property on a non-object.');
|
throw new \RuntimeException('Unable to get a property on a non-object.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return call_user_func_array(array($obj, $this->nodes['attribute']->evaluate($functions, $values)), $this->nodes['arguments']->evaluate($functions, $values));
|
return call_user_func_array(array($obj, $this->nodes['attribute']->attributes['value']), $this->nodes['arguments']->evaluate($functions, $values));
|
||||||
|
|
||||||
case self::ARRAY_CALL:
|
case self::ARRAY_CALL:
|
||||||
$array = $this->nodes['node']->evaluate($functions, $values);
|
$array = $this->nodes['node']->evaluate($functions, $values);
|
||||||
|
@ -854,8 +854,13 @@ class OptionsResolver implements Options, OptionsResolverInterface
|
|||||||
// dependency
|
// dependency
|
||||||
// BEGIN
|
// BEGIN
|
||||||
$this->calling[$option] = true;
|
$this->calling[$option] = true;
|
||||||
foreach ($this->lazy[$option] as $closure) {
|
try {
|
||||||
$value = $closure($this, $value);
|
foreach ($this->lazy[$option] as $closure) {
|
||||||
|
$value = $closure($this, $value);
|
||||||
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
unset($this->calling[$option]);
|
||||||
|
throw $e;
|
||||||
}
|
}
|
||||||
unset($this->calling[$option]);
|
unset($this->calling[$option]);
|
||||||
// END
|
// END
|
||||||
@ -953,7 +958,12 @@ class OptionsResolver implements Options, OptionsResolverInterface
|
|||||||
// dependency
|
// dependency
|
||||||
// BEGIN
|
// BEGIN
|
||||||
$this->calling[$option] = true;
|
$this->calling[$option] = true;
|
||||||
$value = $normalizer($this, $value);
|
try {
|
||||||
|
$value = $normalizer($this, $value);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
unset($this->calling[$option]);
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
unset($this->calling[$option]);
|
unset($this->calling[$option]);
|
||||||
// END
|
// END
|
||||||
}
|
}
|
||||||
|
@ -1103,6 +1103,56 @@ class OptionsResolver2Dot6Test extends \PHPUnit_Framework_TestCase
|
|||||||
$this->resolver->resolve();
|
$this->resolver->resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testCatchedExceptionFromNormalizerDoesNotCrashOptionResolver()
|
||||||
|
{
|
||||||
|
$throw = true;
|
||||||
|
|
||||||
|
$this->resolver->setDefaults(array('catcher' => null, 'thrower' => null));
|
||||||
|
|
||||||
|
$this->resolver->setNormalizer('catcher', function (Options $options) {
|
||||||
|
try {
|
||||||
|
return $options['thrower'];
|
||||||
|
} catch(\Exception $e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->resolver->setNormalizer('thrower', function (Options $options) use (&$throw) {
|
||||||
|
if ($throw) {
|
||||||
|
$throw = false;
|
||||||
|
throw new \UnexpectedValueException('throwing');
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->resolver->resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCatchedExceptionFromLazyDoesNotCrashOptionResolver()
|
||||||
|
{
|
||||||
|
$throw = true;
|
||||||
|
|
||||||
|
$this->resolver->setDefault('catcher', function (Options $options) {
|
||||||
|
try {
|
||||||
|
return $options['thrower'];
|
||||||
|
} catch(\Exception $e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->resolver->setDefault('thrower', function (Options $options) use (&$throw) {
|
||||||
|
if ($throw) {
|
||||||
|
$throw = false;
|
||||||
|
throw new \UnexpectedValueException('throwing');
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->resolver->resolve();
|
||||||
|
}
|
||||||
|
|
||||||
public function testInvokeEachNormalizerOnlyOnce()
|
public function testInvokeEachNormalizerOnlyOnce()
|
||||||
{
|
{
|
||||||
$calls = 0;
|
$calls = 0;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Symfony\Component\Security\Tests\Core\Authentication\Voter;
|
namespace Symfony\Component\Security\Core\Tests\Authorization\Voter;
|
||||||
|
|
||||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||||
use Symfony\Component\Security\Core\Authorization\Voter\AbstractVoter;
|
use Symfony\Component\Security\Core\Authorization\Voter\AbstractVoter;
|
||||||
@ -78,7 +78,7 @@ class VoterFixture extends AbstractVoter
|
|||||||
protected function getSupportedClasses()
|
protected function getSupportedClasses()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
'Symfony\Component\Security\Tests\Core\Authentication\Voter\ObjectFixture',
|
'Symfony\Component\Security\Core\Tests\Authorization\Voter\ObjectFixture',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -9,7 +9,7 @@
|
|||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Symfony\Component\Security\Tests\Core;
|
namespace Symfony\Component\Security\Core\Tests;
|
||||||
|
|
||||||
use Symfony\Component\Security\Core\SecurityContextInterface;
|
use Symfony\Component\Security\Core\SecurityContextInterface;
|
||||||
use Symfony\Component\Security\Core\Security;
|
use Symfony\Component\Security\Core\Security;
|
@ -33,6 +33,7 @@ trait VarDumperTestTrait
|
|||||||
{
|
{
|
||||||
$h = fopen('php://memory', 'r+b');
|
$h = fopen('php://memory', 'r+b');
|
||||||
$cloner = new VarCloner();
|
$cloner = new VarCloner();
|
||||||
|
$cloner->setMaxItems(-1);
|
||||||
$dumper = new CliDumper($h);
|
$dumper = new CliDumper($h);
|
||||||
$dumper->setColors(false);
|
$dumper->setColors(false);
|
||||||
$dumper->dump($cloner->cloneVar($data)->withRefHandles(false));
|
$dumper->dump($cloner->cloneVar($data)->withRefHandles(false));
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Symfony package.
|
||||||
|
*
|
||||||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Symfony\Component\VarDumper\Tests\Test;
|
||||||
|
|
||||||
|
use Symfony\Component\VarDumper\Test\VarDumperTestCase;
|
||||||
|
use Symfony\Component\VarDumper\Test\VarDumperTestTrait;
|
||||||
|
|
||||||
|
class VarDumperTestTraitTest extends VarDumperTestCase
|
||||||
|
{
|
||||||
|
use VarDumperTestTrait;
|
||||||
|
|
||||||
|
public function testItComparesLargeData()
|
||||||
|
{
|
||||||
|
$howMany = 700;
|
||||||
|
$data = array_fill_keys(range(0, $howMany), array('a', 'b', 'c', 'd'));
|
||||||
|
|
||||||
|
$expected = sprintf("array:%d [\n", $howMany + 1);
|
||||||
|
for ($i = 0; $i <= $howMany; ++$i) {
|
||||||
|
$expected .= <<<EODUMP
|
||||||
|
$i => array:4 [
|
||||||
|
0 => "a"
|
||||||
|
1 => "b"
|
||||||
|
2 => "c"
|
||||||
|
3 => "d"
|
||||||
|
]\n
|
||||||
|
EODUMP;
|
||||||
|
}
|
||||||
|
$expected .= "]\n";
|
||||||
|
|
||||||
|
$this->assertDumpEquals($expected, $data);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Symfony package.
|
||||||
|
*
|
||||||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Skipping trait tests for PHP < 5.4
|
||||||
|
if (version_compare(PHP_VERSION, '5.4.0-dev', '>=')) {
|
||||||
|
require 'VarDumpTestTraitRequire54.php';
|
||||||
|
}
|
||||||
|
|
Reference in New Issue
Block a user