class BootstrapGetFilenameTestCase

Test drupal_get_filename()'s availability.

Hierarchy

Expanded class hierarchy of BootstrapGetFilenameTestCase

File

modules/simpletest/tests/bootstrap.test, line 419

View source
class BootstrapGetFilenameTestCase extends DrupalUnitTestCase {
    public static function getInfo() {
        return array(
            'name' => 'Get filename test (without the system table)',
            'description' => 'Test that drupal_get_filename() works correctly when the database is not available.',
            'group' => 'Bootstrap',
        );
    }
    
    /**
     * The last file-related error message triggered by the filename test.
     *
     * Used by BootstrapGetFilenameTestCase::testDrupalGetFilename().
     */
    protected $getFilenameTestTriggeredError;
    
    /**
     * Test that drupal_get_filename() works correctly when the file is not found in the database.
     */
    function testDrupalGetFilename() {
        // Reset the static cache so we can test the "db is not active" code of
        // drupal_get_filename().
        drupal_static_reset('drupal_get_filename');
        // Retrieving the location of a module.
        $this->assertIdentical(drupal_get_filename('module', 'php'), 'modules/php/php.module', t('Retrieve module location.'));
        // Retrieving the location of a theme.
        $this->assertIdentical(drupal_get_filename('theme', 'stark'), 'themes/stark/stark.info', t('Retrieve theme location.'));
        // Retrieving the location of a theme engine.
        $this->assertIdentical(drupal_get_filename('theme_engine', 'phptemplate'), 'themes/engines/phptemplate/phptemplate.engine', t('Retrieve theme engine location.'));
        // Retrieving the location of a profile. Profiles are a special case with
        // a fixed location and naming.
        $this->assertIdentical(drupal_get_filename('profile', 'standard'), 'profiles/standard/standard.profile', t('Retrieve install profile location.'));
        // When a file is not found in the database cache, drupal_get_filename()
        // searches several locations on the filesystem, including the DRUPAL_ROOT
        // directory. We use the '.script' extension below because this is a
        // non-existent filetype that will definitely not exist in the database.
        // Since there is already a scripts directory, drupal_get_filename() will
        // automatically check there for 'script' files, just as it does for (e.g.)
        // 'module' files in modules.
        $this->assertIdentical(drupal_get_filename('script', 'test'), 'scripts/test.script', t('Retrieve test script location.'));
        // When searching for a module that does not exist, drupal_get_filename()
        // should return NULL and trigger an appropriate error message.
        $this->getFilenameTestTriggeredError = NULL;
        set_error_handler(array(
            $this,
            'fileNotFoundErrorHandler',
        ));
        $non_existing_module = $this->randomName();
        $this->assertNull(drupal_get_filename('module', $non_existing_module), 'Searching for a module that does not exist returns NULL.');
        $this->assertTrue(strpos($this->getFilenameTestTriggeredError, format_string('The following module is missing from the file system: %name', array(
            '%name' => $non_existing_module,
        ))) === 0, 'Searching for an item that does not exist triggers the correct error.');
        restore_error_handler();
        // Check that the result is stored in the file system scan cache.
        $file_scans = _drupal_file_scan_cache();
        $this->assertIdentical($file_scans['module'][$non_existing_module], FALSE, 'Searching for a module that does not exist creates a record in the missing and moved files static variable.');
        // Performing the search again in the same request still should not find
        // the file, but the error message should not be repeated (therefore we do
        // not override the error handler here).
        $this->assertNull(drupal_get_filename('module', $non_existing_module), 'Searching for a module that does not exist returns NULL during the second search.');
    }
    
    /**
     * Skips handling of "file not found" errors.
     */
    public function fileNotFoundErrorHandler($error_level, $message, $filename, $line) {
        // Skip error handling if this is a "file not found" error.
        if (strpos($message, 'is missing from the file system:') !== FALSE || strpos($message, 'has moved within the file system:') !== FALSE) {
            $this->getFilenameTestTriggeredError = $message;
            return;
        }
        _drupal_error_handler($error_level, $message, $filename, $line);
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
BootstrapGetFilenameTestCase::$getFilenameTestTriggeredError protected property The last file-related error message triggered by the filename test.
BootstrapGetFilenameTestCase::fileNotFoundErrorHandler public function Skips handling of "file not found" errors.
BootstrapGetFilenameTestCase::getInfo public static function
BootstrapGetFilenameTestCase::testDrupalGetFilename function Test that drupal_get_filename() works correctly when the file is not found in the database.
DrupalTestCase::$assertions protected property Assertions thrown in that test case.
DrupalTestCase::$databasePrefix protected property The database prefix of this test run.
DrupalTestCase::$originalFileDirectory protected property The original file directory, before it was changed for testing purposes.
DrupalTestCase::$originalLanguage protected property The original language.
DrupalTestCase::$originalLanguageDefault protected property The original default language.
DrupalTestCase::$originalTheme protected property The original theme.
DrupalTestCase::$originalThemeKey protected property The original theme key.
DrupalTestCase::$originalThemePath protected property The original theme path.
DrupalTestCase::$results public property Current results of this test case.
DrupalTestCase::$setup protected property Flag to indicate whether the test has been set up.
DrupalTestCase::$setupDatabasePrefix protected property
DrupalTestCase::$setupEnvironment protected property
DrupalTestCase::$skipClasses protected property This class is skipped when looking for the source of an assertion.
DrupalTestCase::$testId protected property The test run ID.
DrupalTestCase::$timeLimit protected property Time limit for the test.
DrupalTestCase::$useSetupInstallationCache public property Whether to cache the installation part of the setUp() method.
DrupalTestCase::$useSetupModulesCache public property Whether to cache the modules installation part of the setUp() method.
DrupalTestCase::$verboseDirectoryUrl protected property URL to the verbose output file directory.
DrupalTestCase::assert protected function Internal helper: stores the assert.
DrupalTestCase::assertEqual protected function Check to see if two values are equal.
DrupalTestCase::assertFalse protected function Check to see if a value is false (an empty string, 0, NULL, or FALSE).
DrupalTestCase::assertIdentical protected function Check to see if two values are identical.
DrupalTestCase::assertNotEqual protected function Check to see if two values are not equal.
DrupalTestCase::assertNotIdentical protected function Check to see if two values are not identical.
DrupalTestCase::assertNotNull protected function Check to see if a value is not NULL.
DrupalTestCase::assertNull protected function Check to see if a value is NULL.
DrupalTestCase::assertTrue protected function Check to see if a value is not false (not an empty string, 0, NULL, or FALSE).
DrupalTestCase::deleteAssert public static function Delete an assertion record by message ID.
DrupalTestCase::error protected function Fire an error assertion. 1
DrupalTestCase::errorHandler public function Handle errors during test runs. 1
DrupalTestCase::exceptionHandler protected function Handle exceptions.
DrupalTestCase::fail protected function Fire an assertion that is always negative.
DrupalTestCase::generatePermutations public static function Converts a list of possible parameters into a stack of permutations.
DrupalTestCase::getAssertionCall protected function Cycles through backtrace until the first non-assertion method is found.
DrupalTestCase::getDatabaseConnection public static function Returns the database connection to the site running Simpletest.
DrupalTestCase::insertAssert public static function Store an assertion from outside the testing context.
DrupalTestCase::pass protected function Fire an assertion that is always positive.
DrupalTestCase::randomName public static function Generates a random string containing letters and numbers.
DrupalTestCase::randomString public static function Generates a random string of ASCII characters of codes 32 to 126.
DrupalTestCase::run public function Run all tests in this class.
DrupalTestCase::verbose protected function Logs a verbose message in a text file.
DrupalUnitTestCase::setUp protected function Sets up unit test environment. 12
DrupalUnitTestCase::tearDown protected function 1
DrupalUnitTestCase::__construct function Constructor for DrupalUnitTestCase. Overrides DrupalTestCase::__construct

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.