1 file.test FileTestCase::createFile($filepath = NULL, $contents = NULL, $scheme = NULL)

Create a file and save it to the files table and assert that it occurs correctly.


$filepath: Optional string specifying the file path. If none is provided then a randomly named file will be created in the site's files directory.

$contents: Optional contents to save into the file. If a NULL value is provided an arbitrary string will be used.

$scheme: Optional string indicating the stream scheme to use. Backdrop core includes public, private, and temporary. The public wrapper is the default.

Return value

File: File object.


core/modules/simpletest/tests/file.test, line 201
This provides SimpleTests for the core file handling functionality. These include FileValidateTest and FileSaveTest.


Base class for file tests that adds some additional file specific assertions and helper functions.


function createFile($filepath = NULL, $contents = NULL, $scheme = NULL) {
  if (!isset($filepath)) {
    // Prefix with non-latin characters to ensure that all file-related
    // tests work with international filenames.
    // cspell:disable-next-line.
    $filepath = 'Файл для тестирования ' . $this->randomName();
  if (!isset($scheme)) {
    $scheme = file_default_scheme();
  $filepath = $scheme . '://' . $filepath;

  if (!isset($contents)) {
    $contents = "file_put_contents() doesn't seem to appreciate empty strings so let's put in some data.";

  file_put_contents($filepath, $contents);
  $this->assertTrue(is_file($filepath), 'The test file exists on the disk.', 'Create test file');

  $file = new stdClass();
  $file->uri = $filepath;
  $file->filename = backdrop_basename($file->uri);
  $file->filemime = 'text/plain';
  $file->uid = 1;
  $file->timestamp = REQUEST_TIME;
  $file->filesize = filesize($file->uri);
  $file->status = 0;
  // Write the record directly rather than using the API so we don't invoke
  // the hooks.
  $this->assertNotIdentical(backdrop_write_record('file_managed', $file), FALSE, 'The file was added to the database.', 'Create test file');

  return entity_create('file', (array) $file);