function BootstrapGetFilenameWebTestCase::testRecursiveRebuilds

Test that drupal_get_filename() does not break recursive rebuilds.

File

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

Class

BootstrapGetFilenameWebTestCase
Test drupal_get_filename() in the context of a full Drupal installation.

Code

public function testRecursiveRebuilds() {
    // Ensure that the drupal_get_filename() call due to a missing module does
    // not break the data returned by an attempted recursive rebuild. The code
    // path which is tested is as follows:
    // - Call drupal_get_schema().
    // - Within a hook_schema() implementation, trigger a drupal_get_filename()
    //   search for a nonexistent module.
    // - In the watchdog() call that results from that, trigger
    //   drupal_get_schema() again.
    // Without some kind of recursion protection, this could cause the second
    // drupal_get_schema() call to return incomplete results. This test ensures
    // that does not happen.
    $non_existing_module = $this->randomName();
    variable_set('system_test_drupal_get_filename_test_module_name', $non_existing_module);
    $this->drupalGet('system-test/drupal-get-filename-with-schema-rebuild');
    $original_drupal_get_schema_tables = variable_get('system_test_drupal_get_filename_with_schema_rebuild_original_tables');
    $final_drupal_get_schema_tables = variable_get('system_test_drupal_get_filename_with_schema_rebuild_final_tables');
    $this->assertTrue(!empty($original_drupal_get_schema_tables));
    $this->assertTrue(!empty($final_drupal_get_schema_tables));
    $this->assertEqual($original_drupal_get_schema_tables, $final_drupal_get_schema_tables);
}

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