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