1.20.x system.test InfoFileCoreTest::testProjectInfoFileContents()

Tests that the .info files of all core projects specify a project type.

File

modules/system/tests/system.test, line 1996
Tests for system.module.

Class

InfoFileCoreTest
Ensures that all info files have expected contents.

Code

function testProjectInfoFileContents() {
  $projects = backdrop_system_listing('/^' . BACKDROP_PHP_FUNCTION_PATTERN . '\.info$/', 'core');
  $allowed_project_types = array('module', 'theme', 'layout', 'profile', 'driver');
  $type_fails = array();
  $version_fails = array();
  foreach ($projects as $key => $project) {
    $info = backdrop_parse_info_file(dirname($project->uri) . '/' . $project->name . '.info');
    if (!isset($info['type'])) {
      $type_fails[] = $key;
      $this->fail(format_string('%key does not specify a project type in the .info file.', array('%key' => $key)));
    }
    elseif (!in_array($info['type'], $allowed_project_types)) {
      $type_fails[] = $key;
      $this->fail(format_string('Invalid project type specified for %key in the .info file.', array('%key' => $key)));
    }
    if (!isset($info['version'])) {
      $version_fails[] = $key;
      $this->fail(format_string('%key does not have a version string in the .info file.', array('%key' => $key)));
    }
  }
  $this->assertFalse($type_fails, 'Proper project type set for all core projects.');
  $this->assertFalse($version_fails, 'Version set for all core projects.');
}