public function BootstrapGetFilenameWebTestCase::testRecursiveRebuilds

Test that drupal_get_filename() does not break recursive rebuilds.

File

drupal/modules/simpletest/tests/bootstrap.test, line 610

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);
}