Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5e8f3f0

Browse files
committed
Adding test for ContextualizedDumper in a Console command
1 parent dace4a0 commit 5e8f3f0

File tree

4 files changed

+58
-71
lines changed

4 files changed

+58
-71
lines changed

src/Symfony/Component/VarDumper/Dumper/ContextualizedDumper.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public function dump(Data $data)
3838
$context[\get_class($contextProvider)] = $contextProvider->getContext();
3939
}
4040

41+
// var_dump($data->withContext($context), $context);
42+
// exit;
4143
$this->wrappedDumper->dump($data->withContext($context));
4244
}
4345
}

src/Symfony/Component/VarDumper/Tests/Dumper/ContextualizedDumperTest.php

Lines changed: 25 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\VarDumper\Cloner\VarCloner;
1616
use Symfony\Component\VarDumper\Dumper\CliDumper;
17-
use Symfony\Component\VarDumper\Dumper\ContextProvider\ContextProviderInterface;
17+
use Symfony\Component\VarDumper\Dumper\ContextProvider\SourceContextProvider;
1818
use Symfony\Component\VarDumper\Dumper\ContextualizedDumper;
1919

2020
/**
@@ -24,89 +24,43 @@ class ContextualizedDumperTest extends TestCase
2424
{
2525
public function testContextualizedCliDumper(): void
2626
{
27-
require __DIR__.'/../Fixtures/dumb-var.php';
2827
$wrappedDumper = new CliDumper('php://output');
29-
$wrappedDumper->setColors(false);
28+
$wrappedDumper->setColors(true);
3029

31-
$dumper = new ContextualizedDumper($wrappedDumper, [
32-
'source_context' => new class() implements ContextProviderInterface {
33-
public function getContext(): ?array
34-
{
35-
return [
36-
'file' => '/home/example.php',
37-
'line' => 42,
38-
];
39-
}
40-
},
41-
]);
30+
$var = 'example';
31+
$href = sprintf('file://%s#L%s', __FILE__, 37);
32+
$dumper = new ContextualizedDumper($wrappedDumper, [new SourceContextProvider()]);
4233
$cloner = new VarCloner();
43-
$cloner->addCasters([
44-
':stream' => function ($res, $a) {
45-
unset($a['uri'], $a['wrapper_data']);
46-
47-
return $a;
48-
},
49-
]);
5034
$data = $cloner->cloneVar($var);
5135

5236
ob_start();
5337
$dumper->dump($data);
5438
$out = ob_get_clean();
5539
$out = preg_replace('/[ \t]+$/m', '', $out);
56-
$intMax = PHP_INT_MAX;
57-
$res = (int) $var['res'];
5840

5941
$this->assertStringMatchesFormat(
6042
<<<EOTXT
61-
array:24 [ ]8;;file:///home/example.php\[^]]8;;\
62-
"number" => 1
63-
0 => &1 null
64-
"const" => 1.1
65-
1 => true
66-
2 => false
67-
3 => NAN
68-
4 => INF
69-
5 => -INF
70-
6 => {$intMax}
71-
"str" => "déjà\\n"
72-
7 => b"""
73-
é\\x00test\\t\\n
74-
ing
75-
"""
76-
"[]" => []
77-
"res" => stream resource {@{$res}
78-
%A wrapper_type: "plainfile"
79-
stream_type: "STDIO"
80-
mode: "r"
81-
unread_bytes: 0
82-
seekable: true
83-
%A options: []
84-
}
85-
"obj" => Symfony\Component\VarDumper\Tests\Fixture\DumbFoo {#%d
86-
+foo: "foo"
87-
+"bar": "bar"
88-
}
89-
"closure" => Closure(\$a, PDO &\$b = null) {#%d
90-
class: "Symfony\Component\VarDumper\Tests\Dumper\ContextualizedDumperTest"
91-
this: Symfony\Component\VarDumper\Tests\Dumper\ContextualizedDumperTest {#%d …}
92-
file: "%s%eTests%eFixtures%edumb-var.php"
93-
line: "{$var['line']} to {$var['line']}"
94-
}
95-
"line" => {$var['line']}
96-
"nobj" => array:1 [
97-
0 => &3 {#%d}
98-
]
99-
"recurs" => &4 array:1 [
100-
0 => &4 array:1 [&4]
101-
]
102-
8 => &1 null
103-
"sobj" => Symfony\Component\VarDumper\Tests\Fixture\DumbFoo {#%d}
104-
"snobj" => &3 {#%d}
105-
"snobj2" => {#%d}
106-
"file" => "{$var['file']}"
107-
b"bin-key-é" => ""
108-
]
43+
\e[38;5;208m\e]8;;{$href}\e\\\e[38;5;208m^\e[38;5;208m\e]8;;\e\\\e[38;5;208m \e[38;5;208m"\e[1;38;5;113m{$var}\e[38;5;208m"\e[m
44+
EOTXT
45+
,
46+
$out
47+
);
48+
}
10949

50+
public function testContextualizedCliDumperInCommand(): void
51+
{
52+
$var = 'example';
53+
$href = 'file://%s/Tests/Fixtures/dumb-console.php#L26';
54+
55+
$dumbConsole = __DIR__.'/../Fixtures/dumb-console.php';
56+
$sh = [];
57+
exec("php {$dumbConsole}", $sh);
58+
$out = implode(PHP_EOL, $sh);
59+
$out = preg_replace('/[ \t]+$/m', '', $out);
60+
61+
$this->assertStringMatchesFormat(
62+
<<<EOTXT
63+
\e[38;5;208m\e]8;;{$href}\e\\\e[38;5;208m^\e[38;5;208m\e]8;;\e\\\e[38;5;208m \e[38;5;208m"\e[1;38;5;113m{$var}\e[38;5;208m"\e[m
11064
EOTXT
11165
,
11266
$out
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
]8;;file:///home/ktherage/Documents/symfony/src/Symfony/Component/VarDumper/Tests/Dumper/ContextualizedDumperTest.php#L37\^]8;;\ "example"
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace Symfony\Component\VarDumper\Tests\Fixture;
4+
5+
use Symfony\Component\Console\Application;
6+
use Symfony\Component\Console\Input\InputInterface;
7+
use Symfony\Component\Console\Output\OutputInterface;
8+
use Symfony\Component\VarDumper\Cloner\VarCloner;
9+
use Symfony\Component\VarDumper\Dumper\CliDumper;
10+
use Symfony\Component\VarDumper\Dumper\ContextProvider\SourceContextProvider;
11+
use Symfony\Component\VarDumper\Dumper\ContextualizedDumper;
12+
13+
require_once __DIR__.'/../../../../../../vendor/autoload.php';
14+
15+
(new Application('app:dumb-command', '1.0.0'))
16+
->register('app:dumb-command')
17+
->setCode(function (InputInterface $input, OutputInterface $output) {
18+
$var = 'example';
19+
$wrappedDumper = new CliDumper('php://output');
20+
$wrappedDumper->setColors(true);
21+
22+
$dumper = new ContextualizedDumper($wrappedDumper, [new SourceContextProvider()]);
23+
$cloner = new VarCloner();
24+
$data = $cloner->cloneVar($var);
25+
26+
$dumper->dump($data);
27+
})
28+
->getApplication()
29+
->setDefaultCommand('app:dumb-command', true)
30+
->run();

0 commit comments

Comments
 (0)