@@ -187,6 +187,69 @@ public function provideInvalidAssetConfigurationTests()
187
187
yield [$ createPackageConfig ($ config ), 'You cannot use both "version" and "json_manifest_path" at the same time under "assets" packages. ' ];
188
188
}
189
189
190
+ /**
191
+ * @dataProvider provideValidLockConfigurationTests
192
+ */
193
+ public function testValidLockConfiguration ($ lockConfig , $ processedConfig )
194
+ {
195
+ $ processor = new Processor ();
196
+ $ configuration = new Configuration (true );
197
+ $ config = $ processor ->processConfiguration ($ configuration , [
198
+ [
199
+ 'lock ' => $ lockConfig ,
200
+ ],
201
+ ]);
202
+
203
+ $ this ->assertArrayHasKey ('lock ' , $ config );
204
+
205
+ $ this ->assertEquals ($ processedConfig , $ config ['lock ' ]);
206
+ }
207
+
208
+ public function provideValidLockConfigurationTests ()
209
+ {
210
+ yield [null , ['enabled ' => true , 'resources ' => ['default ' => [class_exists (SemaphoreStore::class) && SemaphoreStore::isSupported () ? 'semaphore ' : 'flock ' ]]]];
211
+
212
+ yield ['flock ' , ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ]]]];
213
+ yield [['flock ' , 'semaphore ' ], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' , 'semaphore ' ]]]];
214
+ yield [['foo ' => 'flock ' , 'bar ' => 'semaphore ' ], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
215
+ yield [['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => 'semaphore ' ], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => ['semaphore ' ]]]];
216
+ yield [['default ' => 'flock ' ], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ]]]];
217
+
218
+ yield [['enabled ' => false , 'flock ' ], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ]]]];
219
+ yield [['enabled ' => false , ['flock ' , 'semaphore ' ]], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' , 'semaphore ' ]]]];
220
+ yield [['enabled ' => false , 'foo ' => 'flock ' , 'bar ' => 'semaphore ' ], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
221
+ yield [['enabled ' => false , 'foo ' => ['flock ' , 'semaphore ' ]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ]]]];
222
+ yield [['enabled ' => false , 'default ' => 'flock ' ], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ]]]];
223
+
224
+ yield [['resources ' => 'flock ' ], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ]]]];
225
+ yield [['resources ' => ['flock ' , 'semaphore ' ]], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' , 'semaphore ' ]]]];
226
+ yield [['resources ' => ['foo ' => 'flock ' , 'bar ' => 'semaphore ' ]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
227
+ yield [['resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => 'semaphore ' ]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => ['semaphore ' ]]]];
228
+ yield [['resources ' => ['default ' => 'flock ' ]], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ]]]];
229
+
230
+ yield [['enabled ' => false , 'resources ' => 'flock ' ], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ]]]];
231
+ yield [['enabled ' => false , 'resources ' => ['flock ' , 'semaphore ' ]], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' , 'semaphore ' ]]]];
232
+ yield [['enabled ' => false , 'resources ' => ['foo ' => 'flock ' , 'bar ' => 'semaphore ' ]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
233
+ yield [['enabled ' => false , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => 'semaphore ' ]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => ['semaphore ' ]]]];
234
+ yield [['enabled ' => false , 'resources ' => ['default ' => 'flock ' ]], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ]]]];
235
+
236
+ // xml
237
+
238
+ yield [['resource ' => ['flock ' ]], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ]]]];
239
+ yield [['resource ' => ['flock ' , ['name ' => 'foo ' , 'value ' => 'semaphore ' ]]], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ], 'foo ' => ['semaphore ' ]]]];
240
+ yield [['resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ]]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' ]]]];
241
+ yield [['resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'foo ' , 'value ' => 'semaphore ' ]]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ]]]];
242
+ yield [['resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'bar ' , 'value ' => 'semaphore ' ]]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
243
+ yield [['resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'foo ' , 'value ' => 'semaphore ' ], ['name ' => 'bar ' , 'value ' => 'semaphore ' ]]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => ['semaphore ' ]]]];
244
+
245
+ yield [['enabled ' => false , 'resource ' => ['flock ' ]], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ]]]];
246
+ yield [['enabled ' => false , 'resource ' => ['flock ' , ['name ' => 'foo ' , 'value ' => 'semaphore ' ]]], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ], 'foo ' => ['semaphore ' ]]]];
247
+ yield [['enabled ' => false , 'resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ]]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' ]]]];
248
+ yield [['enabled ' => false , 'resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'foo ' , 'value ' => 'semaphore ' ]]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ]]]];
249
+ yield [['enabled ' => false , 'resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'bar ' , 'value ' => 'semaphore ' ]]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
250
+ yield [['enabled ' => false , 'resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'foo ' , 'value ' => 'semaphore ' ], ['name ' => 'bar ' , 'value ' => 'semaphore ' ]]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => ['semaphore ' ]]]];
251
+ }
252
+
190
253
public function testItShowANiceMessageIfTwoMessengerBusesAreConfiguredButNoDefaultBus ()
191
254
{
192
255
$ expectedMessage = 'You must specify the "default_bus" if you define more than one bus. ' ;
0 commit comments