function TestFileCreationTrait::getTestFiles
Same name in other branches
- 8.9.x core/tests/Drupal/Tests/TestFileCreationTrait.php \Drupal\Tests\TestFileCreationTrait::getTestFiles()
- 10 core/tests/Drupal/Tests/TestFileCreationTrait.php \Drupal\Tests\TestFileCreationTrait::getTestFiles()
- 11.x core/tests/Drupal/Tests/TestFileCreationTrait.php \Drupal\Tests\TestFileCreationTrait::getTestFiles()
Gets a list of files that can be used in tests.
The first time this method is called, it will call $this->generateFile() to generate binary and ASCII text files in the public:// directory. It will also copy all files in core/tests/fixtures/files to public://. These contain image, SQL, PHP, JavaScript, and HTML files.
All filenames are prefixed with their type and have appropriate extensions:
- text-*.txt
- binary-*.txt
- html-*.html and html-*.txt
- image-*.png, image-*.jpg, and image-*.gif
- javascript-*.txt and javascript-*.script
- php-*.txt and php-*.php
- sql-*.txt and sql-*.sql
Any subsequent calls will not generate any new files, or copy the files over again. However, if a test class adds a new file to public:// that is prefixed with one of the above types, it will get returned as well, even on subsequent calls.
Parameters
$type: File type, possible values: 'binary', 'html', 'image', 'javascript', 'php', 'sql', 'text'.
$size: (optional) File size in bytes to match. Defaults to NULL, which will not filter the returned list by size.
Return value
object[] List of files in public:// that match the filter(s). Each file is an object with 'uri', 'filename', and 'name' properties.
69 calls to TestFileCreationTrait::getTestFiles()
- AjaxFileManagedMultipleTest::testMultipleFilesUpload in core/
modules/ file/ tests/ src/ FunctionalJavascript/ AjaxFileManagedMultipleTest.php - Tests if managed file form element works well with multiple files upload.
- CommentPreviewTest::testCommentPreview in core/
modules/ comment/ tests/ src/ Functional/ CommentPreviewTest.php - Tests comment preview.
- ContentEntityFormFieldValidationFilteringTest::testFieldWidgetsWithLimitedValidationErrors in core/
tests/ Drupal/ FunctionalTests/ Entity/ ContentEntityFormFieldValidationFilteringTest.php - Tests field widgets with #limit_validation_errors.
- ContentTranslationFieldSyncRevisionTest::setUp in core/
modules/ content_translation/ tests/ src/ Kernel/ ContentTranslationFieldSyncRevisionTest.php - ContentTranslationSyncImageTest::setUp in core/
modules/ content_translation/ tests/ src/ Functional/ ContentTranslationSyncImageTest.php
File
-
core/
tests/ Drupal/ Tests/ TestFileCreationTrait.php, line 55
Class
- TestFileCreationTrait
- Provides methods to create test files from given values.
Namespace
Drupal\TestsCode
protected function getTestFiles($type, $size = NULL) {
/** @var \Drupal\Core\File\FileSystemInterface $file_system */
$file_system = \Drupal::service('file_system');
if (empty($this->generatedTestFiles)) {
// Generate binary test files.
$lines = [
64,
1024,
];
$count = 0;
foreach ($lines as $line) {
$this->generateFile('binary-' . $count++, 64, $line, 'binary');
}
// Generate ASCII text test files.
$lines = [
16,
256,
1024,
2048,
20480,
];
$count = 0;
foreach ($lines as $line) {
$this->generateFile('text-' . $count++, 64, $line, 'text');
}
// Copy other test files from fixtures.
$original = \Drupal::root() . '/core/tests/fixtures/files';
$files = $file_system->scanDirectory($original, '/(html|image|javascript|php|sql)-.*/');
foreach ($files as $file) {
$file_system->copy($file->uri, PublicStream::basePath());
}
$this->generatedTestFiles = TRUE;
}
$files = [];
// Make sure type is valid.
if (in_array($type, [
'binary',
'html',
'image',
'javascript',
'php',
'sql',
'text',
])) {
$files = $file_system->scanDirectory('public://', '/' . $type . '\\-.*/');
// If size is set then remove any files that are not of that size.
if ($size !== NULL) {
foreach ($files as $file) {
$stats = stat($file->uri);
if ($stats['size'] != $size) {
unset($files[$file->uri]);
}
}
}
}
usort($files, [
$this,
'compareFiles',
]);
return $files;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.