@@ -121,7 +121,7 @@ public function testLoadAnonymousServices()
121121 $ loader = new XmlFileLoader ($ container , new FileLocator (self ::$ fixturesPath .'/xml ' ));
122122 $ loader ->load ('services5.xml ' );
123123 $ services = $ container ->getDefinitions ();
124- $ this ->assertCount (4 , $ services , '->load() attributes unique ids to anonymous services ' );
124+ $ this ->assertCount (6 , $ services , '->load() attributes unique ids to anonymous services ' );
125125
126126 // anonymous service as an argument
127127 $ args = $ services ['foo ' ]->getArguments ();
@@ -130,6 +130,7 @@ public function testLoadAnonymousServices()
130130 $ this ->assertTrue (isset ($ services [(string ) $ args [0 ]]), '->load() makes a reference to the created ones ' );
131131 $ inner = $ services [(string ) $ args [0 ]];
132132 $ this ->assertEquals ('BarClass ' , $ inner ->getClass (), '->load() uses the same configuration as for the anonymous ones ' );
133+ $ this ->assertFalse ($ inner ->isPublic ());
133134
134135 // inner anonymous services
135136 $ args = $ inner ->getArguments ();
@@ -138,14 +139,33 @@ public function testLoadAnonymousServices()
138139 $ this ->assertTrue (isset ($ services [(string ) $ args [0 ]]), '->load() makes a reference to the created ones ' );
139140 $ inner = $ services [(string ) $ args [0 ]];
140141 $ this ->assertEquals ('BazClass ' , $ inner ->getClass (), '->load() uses the same configuration as for the anonymous ones ' );
142+ $ this ->assertFalse ($ inner ->isPublic ());
141143
142144 // anonymous service as a property
143145 $ properties = $ services ['foo ' ]->getProperties ();
144146 $ property = $ properties ['p ' ];
145147 $ this ->assertInstanceOf ('Symfony \\Component \\DependencyInjection \\Reference ' , $ property , '->load() converts anonymous services to references to "normal" services ' );
146148 $ this ->assertTrue (isset ($ services [(string ) $ property ]), '->load() makes a reference to the created ones ' );
147149 $ inner = $ services [(string ) $ property ];
148- $ this ->assertEquals ('BazClass ' , $ inner ->getClass (), '->load() uses the same configuration as for the anonymous ones ' );
150+ $ this ->assertEquals ('BuzClass ' , $ inner ->getClass (), '->load() uses the same configuration as for the anonymous ones ' );
151+ $ this ->assertFalse ($ inner ->isPublic ());
152+
153+ // "wild" service
154+ $ service = $ container ->findTaggedServiceIds ('biz_tag ' );
155+ $ this ->assertCount (1 , $ service );
156+
157+ foreach ($ service as $ id => $ tag ) {
158+ $ service = $ container ->getDefinition ($ id );
159+ }
160+ $ this ->assertEquals ('BizClass ' , $ service ->getClass (), '->load() uses the same configuration as for the anonymous ones ' );
161+ $ this ->assertFalse ($ service ->isPublic ());
162+
163+ // anonymous services are shared when using decoration definitions
164+ $ container ->compile ();
165+ $ services = $ container ->getDefinitions ();
166+ $ fooArgs = $ services ['foo ' ]->getArguments ();
167+ $ barArgs = $ services ['bar ' ]->getArguments ();
168+ $ this ->assertSame ($ fooArgs [0 ], $ barArgs [0 ]);
149169 }
150170
151171 public function testLoadServices ()
0 commit comments