14
14
use PHPUnit \Framework \TestCase ;
15
15
use Symfony \Component \VarDumper \Cloner \VarCloner ;
16
16
use Symfony \Component \VarDumper \Dumper \CliDumper ;
17
- use Symfony \Component \VarDumper \Dumper \ContextProvider \ContextProviderInterface ;
17
+ use Symfony \Component \VarDumper \Dumper \ContextProvider \SourceContextProvider ;
18
18
use Symfony \Component \VarDumper \Dumper \ContextualizedDumper ;
19
19
20
20
/**
@@ -24,89 +24,43 @@ class ContextualizedDumperTest extends TestCase
24
24
{
25
25
public function testContextualizedCliDumper (): void
26
26
{
27
- require __DIR__ .'/../Fixtures/dumb-var.php ' ;
28
27
$ wrappedDumper = new CliDumper ('php://output ' );
29
- $ wrappedDumper ->setColors (false );
28
+ $ wrappedDumper ->setColors (true );
30
29
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 ()]);
42
33
$ cloner = new VarCloner ();
43
- $ cloner ->addCasters ([
44
- ':stream ' => function ($ res , $ a ) {
45
- unset($ a ['uri ' ], $ a ['wrapper_data ' ]);
46
-
47
- return $ a ;
48
- },
49
- ]);
50
34
$ data = $ cloner ->cloneVar ($ var );
51
35
52
36
ob_start ();
53
37
$ dumper ->dump ($ data );
54
38
$ out = ob_get_clean ();
55
39
$ out = preg_replace ('/[ \t]+$/m ' , '' , $ out );
56
- $ intMax = PHP_INT_MAX ;
57
- $ res = (int ) $ var ['res ' ];
58
40
59
41
$ this ->assertStringMatchesFormat (
60
42
<<<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
+ }
109
49
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
110
64
EOTXT
111
65
,
112
66
$ out
0 commit comments