24
24
use Symfony \Component \DependencyInjection \Definition ;
25
25
use Symfony \Component \DependencyInjection \Loader \PhpFileLoader ;
26
26
use Symfony \Component \DependencyInjection \Reference ;
27
+ use Symfony \Component \DependencyInjection \TypedReference ;
27
28
28
29
class AddProcessorsPassTest extends TestCase
29
30
{
@@ -34,12 +35,40 @@ public function testHandlerProcessors()
34
35
$ service = $ container ->getDefinition ('monolog.handler.test ' );
35
36
$ calls = $ service ->getMethodCalls ();
36
37
$ this ->assertCount (1 , $ calls );
37
- $ this ->assertEquals (['pushProcessor ' , [new Reference ('test ' )]], $ calls [0 ]);
38
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('test ' , ' TestClass ' )]], $ calls [0 ]);
38
39
39
40
$ service = $ container ->getDefinition ('handler_test ' );
40
41
$ calls = $ service ->getMethodCalls ();
41
42
$ this ->assertCount (1 , $ calls );
42
- $ this ->assertEquals (['pushProcessor ' , [new Reference ('test2 ' )]], $ calls [0 ]);
43
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('test2 ' , 'TestClass ' )]], $ calls [0 ]);
44
+
45
+ $ service = $ container ->getDefinition ('monolog.handler.priority_test ' );
46
+ $ calls = $ service ->getMethodCalls ();
47
+ $ this ->assertCount (5 , $ calls );
48
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor-10 ' , 'TestClass ' )]], $ calls [0 ]);
49
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor+10 ' , 'TestClass ' )]], $ calls [1 ]);
50
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor+20 ' , 'TestClass ' )]], $ calls [2 ]);
51
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor+20 ' , 'TestClass ' )]], $ calls [2 ]);
52
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor+25+35 ' , 'TestClass ' )]], $ calls [3 ]);
53
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor+35+25 ' , 'TestClass ' )]], $ calls [4 ]);
54
+
55
+ $ service = $ container ->getDefinition ('monolog.handler.priority_test_2 ' );
56
+ $ calls = $ service ->getMethodCalls ();
57
+ $ this ->assertCount (2 , $ calls );
58
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor+35+25 ' , 'TestClass ' )]], $ calls [0 ]);
59
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor+25+35 ' , 'TestClass ' )]], $ calls [1 ]);
60
+
61
+ $ service = $ container ->getDefinition ('monolog.logger ' );
62
+ $ calls = $ service ->getMethodCalls ();
63
+ $ this ->assertCount (2 , $ calls );
64
+ $ this ->assertEquals (['useMicrosecondTimestamps ' , ['%monolog.use_microseconds% ' ]], $ calls [0 ]);
65
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor_all_channels+0 ' , 'TestClass ' )]], $ calls [1 ]);
66
+
67
+ $ service = $ container ->getDefinition ('monolog.logger.test ' );
68
+ $ calls = $ service ->getMethodCalls ();
69
+ $ this ->assertCount (2 , $ calls );
70
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor_test_channel-25 ' , 'TestClass ' )]], $ calls [0 ]);
71
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor_all_channels+0 ' , 'TestClass ' )]], $ calls [1 ]);
43
72
}
44
73
45
74
public function testFailureOnHandlerWithoutPushProcessor ()
@@ -126,25 +155,63 @@ protected function getContainer()
126
155
$ loader = new PhpFileLoader ($ container , new FileLocator (__DIR__ .'/../../../config ' ));
127
156
$ loader ->load ('monolog.php ' );
128
157
158
+ $ container ->setParameter ('monolog.additional_channels ' , ['test ' ]);
159
+ $ container ->setParameter ('monolog.handlers_to_channels ' , []);
160
+
129
161
$ definition = $ container ->getDefinition ('monolog.logger_prototype ' );
130
162
$ container ->setParameter ('monolog.handler.console.class ' , ConsoleHandler::class);
131
163
$ container ->setDefinition ('monolog.handler.test ' , new Definition ('%monolog.handler.console.class% ' , [100 , false ]));
132
164
$ container ->setDefinition ('handler_test ' , new Definition ('%monolog.handler.console.class% ' , [100 , false ]));
165
+ $ container ->setDefinition ('monolog.handler.priority_test ' , new Definition ('%monolog.handler.console.class% ' , [100 , false ]));
166
+ $ container ->setDefinition ('monolog.handler.priority_test_2 ' , new Definition ('%monolog.handler.console.class% ' , [100 , false ]));
133
167
$ container ->setAlias ('monolog.handler.test2 ' , 'handler_test ' );
134
168
$ definition ->addMethodCall ('pushHandler ' , [new Reference ('monolog.handler.test ' )]);
135
169
$ definition ->addMethodCall ('pushHandler ' , [new Reference ('monolog.handler.test2 ' )]);
170
+ $ definition ->addMethodCall ('pushHandler ' , [new Reference ('monolog.handler.priority_test ' )]);
171
+ $ definition ->addMethodCall ('pushHandler ' , [new Reference ('monolog.handler.priority_test_2 ' )]);
136
172
137
- $ service = new Definition ('TestClass ' , [ ' false ' , new Reference ( ' logger ' )] );
173
+ $ service = new Definition ('TestClass ' );
138
174
$ service ->addTag ('monolog.processor ' , ['handler ' => 'test ' ]);
139
175
$ container ->setDefinition ('test ' , $ service );
140
176
141
- $ service = new Definition ('TestClass ' , [ ' false ' , new Reference ( ' logger ' )] );
177
+ $ service = new Definition ('TestClass ' );
142
178
$ service ->addTag ('monolog.processor ' , ['handler ' => 'test2 ' ]);
143
179
$ container ->setDefinition ('test2 ' , $ service );
144
180
181
+ $ service = new Definition ('TestClass ' );
182
+ $ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test ' , 'priority ' => 10 ]);
183
+ $ container ->setDefinition ('processor+10 ' , $ service );
184
+
185
+ $ service = new Definition ('TestClass ' );
186
+ $ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test ' , 'priority ' => -10 ]);
187
+ $ container ->setDefinition ('processor-10 ' , $ service );
188
+
189
+ $ service = new Definition ('TestClass ' );
190
+ $ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test ' , 'priority ' => 20 ]);
191
+ $ container ->setDefinition ('processor+20 ' , $ service );
192
+
193
+ $ service = new Definition ('TestClass ' );
194
+ $ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test ' , 'priority ' => 35 ]);
195
+ $ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test_2 ' , 'priority ' => 25 ]);
196
+ $ container ->setDefinition ('processor+35+25 ' , $ service );
197
+
198
+ $ service = new Definition ('TestClass ' );
199
+ $ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test ' , 'priority ' => 25 ]);
200
+ $ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test_2 ' , 'priority ' => 35 ]);
201
+ $ container ->setDefinition ('processor+25+35 ' , $ service );
202
+
203
+ $ service = new Definition ('TestClass ' );
204
+ $ service ->addTag ('monolog.processor ' , ['priority ' => 0 ]);
205
+ $ container ->setDefinition ('processor_all_channels+0 ' , $ service );
206
+
207
+ $ service = new Definition ('TestClass ' );
208
+ $ service ->addTag ('monolog.processor ' , ['channel ' => 'test ' , 'priority ' => -25 ]);
209
+ $ container ->setDefinition ('processor_test_channel-25 ' , $ service );
210
+
145
211
$ container ->getCompilerPassConfig ()->setOptimizationPasses ([]);
146
212
$ container ->getCompilerPassConfig ()->setRemovingPasses ([]);
147
- $ container ->addCompilerPass (new AddProcessorsPass ());
213
+ $ container ->addCompilerPass ($ channelPass = new LoggerChannelPass ());
214
+ $ container ->addCompilerPass (new AddProcessorsPass ($ channelPass ));
148
215
$ container ->compile ();
149
216
150
217
return $ container ;
0 commit comments