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

Parameters

$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. Drupal core includes public, private, and temporary. The public wrapper is the default.

Return value

File object.

30 calls to FileTestCase::createFile()
FileCopyTest::testExistingError in modules/simpletest/tests/file.test
Test that copying over an existing file fails when FILE_EXISTS_ERROR is specified.
FileCopyTest::testExistingRename in modules/simpletest/tests/file.test
Test renaming when copying over a file that already exists.
FileCopyTest::testExistingReplace in modules/simpletest/tests/file.test
Test replacement when copying over a file that already exists.
FileCopyTest::testNormal in modules/simpletest/tests/file.test
Test file copying in the normal, base case.
FileDeleteTest::testInUse in modules/simpletest/tests/file.test
Tries deleting a file that is in use.

... See full list

File

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

Class

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

Code

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.
    $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 = drupal_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 calling file_save() so we don't
  // invoke the hooks.
  $this
    ->assertNotIdentical(drupal_write_record('file_managed', $file), FALSE, 'The file was added to the database.', 'Create test file');
  return $file;
}