@@ -296,6 +296,69 @@ public function provideInvalidAssetConfigurationTests()
296296 yield [$ createPackageConfig ($ config ), 'You cannot use both "version" and "json_manifest_path" at the same time under "assets" packages. ' ];
297297 }
298298
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+
299362 protected static function getBundleDefaultConfig ()
300363 {
301364 return [
0 commit comments