2424use  Symfony \Component \DependencyInjection \Definition ;
2525use  Symfony \Component \DependencyInjection \Loader \PhpFileLoader ;
2626use  Symfony \Component \DependencyInjection \Reference ;
27+ use  Symfony \Component \DependencyInjection \TypedReference ;
2728
2829class  AddProcessorsPassTest extends  TestCase
2930{
@@ -34,12 +35,40 @@ public function testHandlerProcessors()
3435        $ service$ containergetDefinition ('monolog.handler.test ' );
3536        $ calls$ servicegetMethodCalls ();
3637        $ this assertCount (1 , $ calls
37-         $ this assertEquals (['pushProcessor ' , [new  Reference ('test ' )]], $ calls0 ]);
38+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('test '  ,  ' TestClass '$ calls0 ]);
3839
3940        $ service$ containergetDefinition ('handler_test ' );
4041        $ calls$ servicegetMethodCalls ();
4142        $ this assertCount (1 , $ calls
42-         $ this assertEquals (['pushProcessor ' , [new  Reference ('test2 ' )]], $ calls0 ]);
43+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('test2 ' , 'TestClass ' )]], $ calls0 ]);
44+ 
45+         $ service$ containergetDefinition ('monolog.handler.priority_test ' );
46+         $ calls$ servicegetMethodCalls ();
47+         $ this assertCount (5 , $ calls
48+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('processor-10 ' , 'TestClass ' )]], $ calls0 ]);
49+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('processor+10 ' , 'TestClass ' )]], $ calls1 ]);
50+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('processor+20 ' , 'TestClass ' )]], $ calls2 ]);
51+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('processor+20 ' , 'TestClass ' )]], $ calls2 ]);
52+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('processor+25+35 ' , 'TestClass ' )]], $ calls3 ]);
53+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('processor+35+25 ' , 'TestClass ' )]], $ calls4 ]);
54+ 
55+         $ service$ containergetDefinition ('monolog.handler.priority_test_2 ' );
56+         $ calls$ servicegetMethodCalls ();
57+         $ this assertCount (2 , $ calls
58+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('processor+35+25 ' , 'TestClass ' )]], $ calls0 ]);
59+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('processor+25+35 ' , 'TestClass ' )]], $ calls1 ]);
60+ 
61+         $ service$ containergetDefinition ('monolog.logger ' );
62+         $ calls$ servicegetMethodCalls ();
63+         $ this assertCount (2 , $ calls
64+         $ this assertEquals (['useMicrosecondTimestamps ' , ['%monolog.use_microseconds% ' ]], $ calls0 ]);
65+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('processor_all_channels+0 ' , 'TestClass ' )]], $ calls1 ]);
66+ 
67+         $ service$ containergetDefinition ('monolog.logger.test ' );
68+         $ calls$ servicegetMethodCalls ();
69+         $ this assertCount (2 , $ calls
70+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('processor_test_channel-25 ' , 'TestClass ' )]], $ calls0 ]);
71+         $ this assertEquals (['pushProcessor ' , [new  TypedReference ('processor_all_channels+0 ' , 'TestClass ' )]], $ calls1 ]);
4372    }
4473
4574    public  function  testFailureOnHandlerWithoutPushProcessor ()
@@ -126,25 +155,63 @@ protected function getContainer()
126155        $ loadernew  PhpFileLoader ($ containernew  FileLocator (__DIR__ .'/../../../config ' ));
127156        $ loaderload ('monolog.php ' );
128157
158+         $ containersetParameter ('monolog.additional_channels ' , ['test ' ]);
159+         $ containersetParameter ('monolog.handlers_to_channels ' , []);
160+ 
129161        $ definition$ containergetDefinition ('monolog.logger_prototype ' );
130162        $ containersetParameter ('monolog.handler.console.class ' , ConsoleHandler::class);
131163        $ containersetDefinition ('monolog.handler.test ' , new  Definition ('%monolog.handler.console.class% ' , [100 , false ]));
132164        $ containersetDefinition ('handler_test ' , new  Definition ('%monolog.handler.console.class% ' , [100 , false ]));
165+         $ containersetDefinition ('monolog.handler.priority_test ' , new  Definition ('%monolog.handler.console.class% ' , [100 , false ]));
166+         $ containersetDefinition ('monolog.handler.priority_test_2 ' , new  Definition ('%monolog.handler.console.class% ' , [100 , false ]));
133167        $ containersetAlias ('monolog.handler.test2 ' , 'handler_test ' );
134168        $ definitionaddMethodCall ('pushHandler ' , [new  Reference ('monolog.handler.test ' )]);
135169        $ definitionaddMethodCall ('pushHandler ' , [new  Reference ('monolog.handler.test2 ' )]);
170+         $ definitionaddMethodCall ('pushHandler ' , [new  Reference ('monolog.handler.priority_test ' )]);
171+         $ definitionaddMethodCall ('pushHandler ' , [new  Reference ('monolog.handler.priority_test_2 ' )]);
136172
137-         $ servicenew  Definition ('TestClass ' , [ ' false ' ,  new   Reference ( ' logger ' )] );
173+         $ servicenew  Definition ('TestClass ' );
138174        $ serviceaddTag ('monolog.processor ' , ['handler '  => 'test ' ]);
139175        $ containersetDefinition ('test ' , $ service
140176
141-         $ servicenew  Definition ('TestClass ' , [ ' false ' ,  new   Reference ( ' logger ' )] );
177+         $ servicenew  Definition ('TestClass ' );
142178        $ serviceaddTag ('monolog.processor ' , ['handler '  => 'test2 ' ]);
143179        $ containersetDefinition ('test2 ' , $ service
144180
181+         $ servicenew  Definition ('TestClass ' );
182+         $ serviceaddTag ('monolog.processor ' , ['handler '  => 'priority_test ' , 'priority '  => 10 ]);
183+         $ containersetDefinition ('processor+10 ' , $ service
184+ 
185+         $ servicenew  Definition ('TestClass ' );
186+         $ serviceaddTag ('monolog.processor ' , ['handler '  => 'priority_test ' , 'priority '  => -10 ]);
187+         $ containersetDefinition ('processor-10 ' , $ service
188+ 
189+         $ servicenew  Definition ('TestClass ' );
190+         $ serviceaddTag ('monolog.processor ' , ['handler '  => 'priority_test ' , 'priority '  => 20 ]);
191+         $ containersetDefinition ('processor+20 ' , $ service
192+ 
193+         $ servicenew  Definition ('TestClass ' );
194+         $ serviceaddTag ('monolog.processor ' , ['handler '  => 'priority_test ' , 'priority '  => 35 ]);
195+         $ serviceaddTag ('monolog.processor ' , ['handler '  => 'priority_test_2 ' , 'priority '  => 25 ]);
196+         $ containersetDefinition ('processor+35+25 ' , $ service
197+ 
198+         $ servicenew  Definition ('TestClass ' );
199+         $ serviceaddTag ('monolog.processor ' , ['handler '  => 'priority_test ' , 'priority '  => 25 ]);
200+         $ serviceaddTag ('monolog.processor ' , ['handler '  => 'priority_test_2 ' , 'priority '  => 35 ]);
201+         $ containersetDefinition ('processor+25+35 ' , $ service
202+ 
203+         $ servicenew  Definition ('TestClass ' );
204+         $ serviceaddTag ('monolog.processor ' , ['priority '  => 0 ]);
205+         $ containersetDefinition ('processor_all_channels+0 ' , $ service
206+ 
207+         $ servicenew  Definition ('TestClass ' );
208+         $ serviceaddTag ('monolog.processor ' , ['channel '  => 'test ' , 'priority '  => -25 ]);
209+         $ containersetDefinition ('processor_test_channel-25 ' , $ service
210+ 
145211        $ containergetCompilerPassConfig ()->setOptimizationPasses ([]);
146212        $ containergetCompilerPassConfig ()->setRemovingPasses ([]);
147-         $ containeraddCompilerPass (new  AddProcessorsPass ());
213+         $ containeraddCompilerPass ($ channelPassnew  LoggerChannelPass ());
214+         $ containeraddCompilerPass (new  AddProcessorsPass ($ channelPass
148215        $ containercompile ();
149216
150217        return  $ container
0 commit comments