Verified Commit 38c2ac79 authored by Lee Rowlands's avatar Lee Rowlands
Browse files

Issue #2939904 by alexpott, Mile23: Fix system_get_info() for non-installed modules

parent 19cb1ea2
Loading
Loading
Loading
Loading
+5 −0
Changes for core/modules/system/system.module: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -963,8 +963,13 @@ function system_get_info($type, $name = NULL) {
    /** @var \Drupal\Core\Extension\ModuleExtensionList $module_list */
    $module_list = \Drupal::service('extension.list.module');
    if (isset($name)) {
      try {
        return $module_list->getExtensionInfo($name);
      }
      catch (\InvalidArgumentException $e) {
        return [];
      }
    }
    else {
      return $module_list->getAllInstalledInfo();
    }
+44 −0
Changes for core/modules/system/tests/src/Kernel/System/SystemGetInfoTest.php: 44 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Drupal\Tests\system\Kernel\System;

use Drupal\KernelTests\KernelTestBase;

/**
 * Tests system_get_info().
 *
 * @group system
 */
class SystemGetInfoTest extends KernelTestBase {

  public static $modules = ['system'];

  /**
   * Tests system_get_info().
   */
  public function testSystemGetInfo() {
    $system_module_info = system_get_info('module', 'system');
    $this->assertSame('System', $system_module_info['name']);
    $this->assertSame(['system' => $system_module_info], system_get_info('module'));

    // The User module is not installed so system_get_info() should return
    // an empty array.
    $this->assertSame([], system_get_info('module', 'user'));

    // Install the User module and check system_get_info() returns the correct
    // information.
    $this->container->get('module_installer')->install(['user']);
    $user_module_info = system_get_info('module', 'user');
    $this->assertSame('User', $user_module_info['name']);
    $this->assertSame(['system' => $system_module_info, 'user' => $user_module_info], system_get_info('module'));

    // Test theme info. There are no themes installed yet.
    $this->assertSame([], system_get_info('theme', 'stable'));
    $this->assertSame([], system_get_info('theme'));
    $this->container->get('theme_installer')->install(['stable']);
    $stable_theme_info = system_get_info('theme', 'stable');
    $this->assertSame('Stable', $stable_theme_info['name']);
    $this->assertSame(['stable' => $stable_theme_info], system_get_info('theme'));
  }

}