@@ -296,6 +296,69 @@ public function provideInvalidAssetConfigurationTests()
296
296
yield [$ createPackageConfig ($ config ), 'You cannot use both "version" and "json_manifest_path" at the same time under "assets" packages. ' ];
297
297
}
298
298
299
+ /**
300
+ * @dataProvider provideValidLockConfigurationTests
301
+ */
302
+ public function testValidLockConfiguration ($ lockConfig , $ processedConfig )
303
+ {
304
+ $ processor = new Processor ();
305
+ $ configuration = new Configuration (true );
306
+ $ config = $ processor ->processConfiguration ($ configuration , [
307
+ [
308
+ 'lock ' => $ lockConfig ,
309
+ ],
310
+ ]);
311
+
312
+ $ this ->assertArrayHasKey ('lock ' , $ config );
313
+
314
+ $ this ->assertEquals ($ processedConfig , $ config ['lock ' ]);
315
+ }
316
+
317
+ public function provideValidLockConfigurationTests ()
318
+ {
319
+ yield [null , ['enabled ' => true , 'resources ' => ['default ' => [class_exists (SemaphoreStore::class) && SemaphoreStore::isSupported () ? 'semaphore ' : 'flock ' ]]]];
320
+
321
+ yield ['flock ' , ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ]]]];
322
+ yield [['flock ' , 'semaphore ' ], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' , 'semaphore ' ]]]];
323
+ yield [['foo ' => 'flock ' , 'bar ' => 'semaphore ' ], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
324
+ yield [['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => 'semaphore ' ], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => ['semaphore ' ]]]];
325
+ yield [['default ' => 'flock ' ], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ]]]];
326
+
327
+ yield [['enabled ' => false , 'flock ' ], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ]]]];
328
+ yield [['enabled ' => false , ['flock ' , 'semaphore ' ]], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' , 'semaphore ' ]]]];
329
+ yield [['enabled ' => false , 'foo ' => 'flock ' , 'bar ' => 'semaphore ' ], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
330
+ yield [['enabled ' => false , 'foo ' => ['flock ' , 'semaphore ' ]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ]]]];
331
+ yield [['enabled ' => false , 'default ' => 'flock ' ], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ]]]];
332
+
333
+ yield [['resources ' => 'flock ' ], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ]]]];
334
+ yield [['resources ' => ['flock ' , 'semaphore ' ]], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' , 'semaphore ' ]]]];
335
+ yield [['resources ' => ['foo ' => 'flock ' , 'bar ' => 'semaphore ' ]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
336
+ yield [['resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => 'semaphore ' ]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => ['semaphore ' ]]]];
337
+ yield [['resources ' => ['default ' => 'flock ' ]], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ]]]];
338
+
339
+ yield [['enabled ' => false , 'resources ' => 'flock ' ], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ]]]];
340
+ yield [['enabled ' => false , 'resources ' => ['flock ' , 'semaphore ' ]], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' , 'semaphore ' ]]]];
341
+ yield [['enabled ' => false , 'resources ' => ['foo ' => 'flock ' , 'bar ' => 'semaphore ' ]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
342
+ yield [['enabled ' => false , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => 'semaphore ' ]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => ['semaphore ' ]]]];
343
+ yield [['enabled ' => false , 'resources ' => ['default ' => 'flock ' ]], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ]]]];
344
+
345
+ // xml
346
+
347
+ yield [['resource ' => ['flock ' ]], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ]]]];
348
+ yield [['resource ' => ['flock ' , ['name ' => 'foo ' , 'value ' => 'semaphore ' ]]], ['enabled ' => true , 'resources ' => ['default ' => ['flock ' ], 'foo ' => ['semaphore ' ]]]];
349
+ yield [['resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ]]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' ]]]];
350
+ yield [['resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'foo ' , 'value ' => 'semaphore ' ]]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ]]]];
351
+ yield [['resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'bar ' , 'value ' => 'semaphore ' ]]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
352
+ yield [['resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'foo ' , 'value ' => 'semaphore ' ], ['name ' => 'bar ' , 'value ' => 'semaphore ' ]]], ['enabled ' => true , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => ['semaphore ' ]]]];
353
+
354
+ yield [['enabled ' => false , 'resource ' => ['flock ' ]], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ]]]];
355
+ yield [['enabled ' => false , 'resource ' => ['flock ' , ['name ' => 'foo ' , 'value ' => 'semaphore ' ]]], ['enabled ' => false , 'resources ' => ['default ' => ['flock ' ], 'foo ' => ['semaphore ' ]]]];
356
+ yield [['enabled ' => false , 'resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ]]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' ]]]];
357
+ yield [['enabled ' => false , 'resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'foo ' , 'value ' => 'semaphore ' ]]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ]]]];
358
+ yield [['enabled ' => false , 'resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'bar ' , 'value ' => 'semaphore ' ]]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' ], 'bar ' => ['semaphore ' ]]]];
359
+ yield [['enabled ' => false , 'resource ' => [['name ' => 'foo ' , 'value ' => 'flock ' ], ['name ' => 'foo ' , 'value ' => 'semaphore ' ], ['name ' => 'bar ' , 'value ' => 'semaphore ' ]]], ['enabled ' => false , 'resources ' => ['foo ' => ['flock ' , 'semaphore ' ], 'bar ' => ['semaphore ' ]]]];
360
+ }
361
+
299
362
protected static function getBundleDefaultConfig ()
300
363
{
301
364
return [
0 commit comments