function FilesTestTrait::retrieveFiles
Retrieves files in a project directory.
Parameters
string $directory: The directory where files are located. It must be an absolute path like the one returned by \Drupal\Tests\UnitTestCase\FilesTestTrait::realPath().
string $extension: The file extension.
callable $callable: The callable to accept files. It gets the following arguments.
- $current: the current item's value
- $key: the current item's key
- $iterator: the iterator being filtered
It must return TRUE when the file is accepted, FALSE otherwise.
Return value
array An array
See also
\RecursiveCallbackFilterIterator
4 calls to FilesTestTrait::retrieveFiles()
- ConfigFilesValidationTest::providerConfigFiles in tests/
src/ Unit/ ConfigFilesValidationTest.php - Provides test data for testNoUuidInConfig().
- RoutePathTest::providerRoutingFiles in tests/
src/ Unit/ RoutePathTest.php - Provides test data for testPathStartsWithSlash().
- TraitsTest::providerConfigFiles in tests/
src/ Unit/ TraitsTest.php - Provides test data for testNoUuidInConfig().
- TraitsTest::providerRoutingFiles in tests/
src/ Unit/ TraitsTest.php - Provides test data for testRoutingFilesCallback().
File
-
tests/
src/ Unit/ FilesTestTrait.php, line 47
Class
- FilesTestTrait
- Trait for tests that retrieve files in project directories.
Namespace
Drupal\Tests\examples\UnitCode
protected static function retrieveFiles(string $directory, string $extension, callable $callable) : array {
$directory_iterator = new \RecursiveDirectoryIterator($directory, \FilesystemIterator::SKIP_DOTS);
$files = [];
$filter_callback = function (mixed $current, string $key, mixed $iterator) use ($extension, $callable) {
/** @var \SplFileInfo $current */
/** @var \RecursiveDirectoryIterator $iterator */
if ($current->isFile() && $current->getExtension() === $extension) {
return call_user_func($callable, $current, $key, $iterator);
}
elseif ($current->isDir()) {
// Always accept a directory.
return TRUE;
}
else {
return FALSE;
}
};
$filter = new \RecursiveCallbackFilterIterator($directory_iterator, $filter_callback);
$iterator = new \RecursiveIteratorIterator($filter);
foreach ($iterator as $info) {
/** @var \SplFileInfo $info */
$files[] = [
$info->getFilename(),
$info->getPath(),
$info->getPathname(),
];
}
return $files;
}