bug #36230 [VarDumper] Fix CliDumper coloration on light arrays (l-vo)
This PR was merged into the 3.4 branch.
Discussion
----------
[VarDumper] Fix CliDumper coloration on light arrays
| Q | A
| ------------- | ---
| Branch? | 3.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
When `AbstractDumper::DUMP_LIGHT_ARRAY` is used with the `CliDumper`, the first line (opening bracket) is not colored. When an empty array is dumped (with or without `AbstractDumper::DUMP_LIGHT_ARRAY`) the array is not colored too. This PR aims to fix that.
Commits
-------
7af3469771
[VarDumper] Fix CliDumper coloration
This commit is contained in:
commit
907ffa0701
@ -268,7 +268,8 @@ class CliDumper extends AbstractDumper
|
|||||||
} elseif (Cursor::HASH_RESOURCE === $type) {
|
} elseif (Cursor::HASH_RESOURCE === $type) {
|
||||||
$prefix = $this->style('note', $class.' resource').($hasChild ? ' {' : ' ');
|
$prefix = $this->style('note', $class.' resource').($hasChild ? ' {' : ' ');
|
||||||
} else {
|
} else {
|
||||||
$prefix = $class && !(self::DUMP_LIGHT_ARRAY & $this->flags) ? $this->style('note', 'array:'.$class).' [' : '[';
|
$unstyledPrefix = $class && !(self::DUMP_LIGHT_ARRAY & $this->flags) ? 'array:'.$class : '';
|
||||||
|
$prefix = $this->style('note', $unstyledPrefix).($unstyledPrefix ? ' [' : '[');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($cursor->softRefCount || 0 < $cursor->softRefHandle) {
|
if ($cursor->softRefCount || 0 < $cursor->softRefHandle) {
|
||||||
|
@ -13,6 +13,7 @@ namespace Symfony\Component\VarDumper\Tests\Dumper;
|
|||||||
|
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use Symfony\Component\VarDumper\Cloner\VarCloner;
|
use Symfony\Component\VarDumper\Cloner\VarCloner;
|
||||||
|
use Symfony\Component\VarDumper\Dumper\AbstractDumper;
|
||||||
use Symfony\Component\VarDumper\Dumper\CliDumper;
|
use Symfony\Component\VarDumper\Dumper\CliDumper;
|
||||||
use Symfony\Component\VarDumper\Test\VarDumperTestTrait;
|
use Symfony\Component\VarDumper\Test\VarDumperTestTrait;
|
||||||
use Twig\Environment;
|
use Twig\Environment;
|
||||||
@ -572,6 +573,57 @@ EOTXT
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function provideDumpArrayWithColor()
|
||||||
|
{
|
||||||
|
yield [
|
||||||
|
['foo' => 'bar'],
|
||||||
|
0,
|
||||||
|
<<<EOTXT
|
||||||
|
\e[0;38;5;208m\e[38;5;38marray:1\e[0;38;5;208m [\e[m
|
||||||
|
\e[0;38;5;208m"\e[38;5;113mfoo\e[0;38;5;208m" => "\e[1;38;5;113mbar\e[0;38;5;208m"\e[m
|
||||||
|
\e[0;38;5;208m]\e[m
|
||||||
|
|
||||||
|
EOTXT
|
||||||
|
];
|
||||||
|
|
||||||
|
yield [[], AbstractDumper::DUMP_LIGHT_ARRAY, "\e[0;38;5;208m\e[38;5;38m\e[0;38;5;208m[]\e[m\n"];
|
||||||
|
|
||||||
|
yield [
|
||||||
|
['foo' => 'bar'],
|
||||||
|
AbstractDumper::DUMP_LIGHT_ARRAY,
|
||||||
|
<<<EOTXT
|
||||||
|
\e[0;38;5;208m\e[38;5;38m\e[0;38;5;208m[\e[m
|
||||||
|
\e[0;38;5;208m"\e[38;5;113mfoo\e[0;38;5;208m" => "\e[1;38;5;113mbar\e[0;38;5;208m"\e[m
|
||||||
|
\e[0;38;5;208m]\e[m
|
||||||
|
|
||||||
|
EOTXT
|
||||||
|
];
|
||||||
|
|
||||||
|
yield [[], 0, "\e[0;38;5;208m\e[38;5;38m\e[0;38;5;208m[]\e[m\n"];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider provideDumpArrayWithColor
|
||||||
|
*/
|
||||||
|
public function testDumpArrayWithColor($value, $flags, $expectedOut)
|
||||||
|
{
|
||||||
|
if ('\\' === \DIRECTORY_SEPARATOR) {
|
||||||
|
$this->markTestSkipped('Windows console does not support coloration');
|
||||||
|
}
|
||||||
|
|
||||||
|
$out = '';
|
||||||
|
$dumper = new CliDumper(function ($line, $depth) use (&$out) {
|
||||||
|
if ($depth >= 0) {
|
||||||
|
$out .= str_repeat(' ', $depth).$line."\n";
|
||||||
|
}
|
||||||
|
}, null, $flags);
|
||||||
|
$dumper->setColors(true);
|
||||||
|
$cloner = new VarCloner();
|
||||||
|
$dumper->dump($cloner->cloneVar($value));
|
||||||
|
|
||||||
|
$this->assertSame($expectedOut, $out);
|
||||||
|
}
|
||||||
|
|
||||||
private function getSpecialVars()
|
private function getSpecialVars()
|
||||||
{
|
{
|
||||||
foreach (array_keys($GLOBALS) as $var) {
|
foreach (array_keys($GLOBALS) as $var) {
|
||||||
|
Reference in New Issue
Block a user