Skip to content

Commit ee16e8e

Browse files
authored
Merge pull request thephpleague#107 from matchory/radiergummi/feature-support-lazy-root-creation
Added support for lazy root creation
2 parents 977d25b + 5216437 commit ee16e8e

3 files changed

Lines changed: 19 additions & 0 deletions

File tree

src/Adapter/Builder/LocalAdapterDefinitionBuilder.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ protected function configureOptions(OptionsResolver $resolver)
6161
$permsResolver->setAllowedTypes('private', 'scalar');
6262
});
6363
});
64+
65+
$resolver->setDefault('lazy_root_creation', false);
66+
$resolver->setAllowedTypes('lazy_root_creation', 'scalar');
6467
}
6568

6669
protected function configureDefinition(Definition $definition, array $options)
@@ -84,5 +87,7 @@ protected function configureDefinition(Definition $definition, array $options)
8487
);
8588
$definition->setArgument(2, $options['lock']);
8689
$definition->setArgument(3, $options['skip_links'] ? LocalFilesystemAdapter::SKIP_LINKS : LocalFilesystemAdapter::DISALLOW_LINKS);
90+
$definition->setArgument(4, null);
91+
$definition->setArgument(5, $options['lazy_root_creation']);
8792
}
8893
}

tests/Adapter/Builder/LocalAdapterDefinitionBuilderTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,16 @@ public function provideValidOptions()
5656
],
5757
]];
5858

59+
yield 'lazy_root_creation_enabled' => [[
60+
'directory' => __DIR__,
61+
'lazy_root_creation' => true,
62+
]];
63+
64+
yield 'lazy_root_creation_disabled' => [[
65+
'directory' => __DIR__,
66+
'lazy_root_creation' => false,
67+
]];
68+
5969
yield 'full' => [[
6070
'directory' => __DIR__,
6171
'lock' => 0,
@@ -70,6 +80,7 @@ public function provideValidOptions()
7080
'private' => 0755,
7181
],
7282
],
83+
'lazy_root_creation' => true,
7384
]];
7485
}
7586

@@ -99,12 +110,14 @@ public function testOptionsBehavior()
99110
'lock' => LOCK_EX,
100111
'skip_links' => true,
101112
'permissions' => $permissions,
113+
'lazy_root_creation' => true,
102114
]);
103115

104116
$this->assertSame(LocalFilesystemAdapter::class, $definition->getClass());
105117
$this->assertSame(__DIR__, $definition->getArgument(0));
106118
$this->assertSame($permissions, $definition->getArgument(1)->getArgument(0));
107119
$this->assertSame(LOCK_EX, $definition->getArgument(2));
108120
$this->assertSame(LocalFilesystemAdapter::SKIP_LINKS, $definition->getArgument(3));
121+
$this->assertSame(true, $definition->getArgument(5));
109122
}
110123
}

tests/Adapter/options.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ fs_local:
3838
directory: '%kernel.project_dir%/storage'
3939
lock: 0
4040
skip_links: false
41+
lazy_root_creation: false
4142
permissions:
4243
file:
4344
public: '0744'

0 commit comments

Comments
 (0)