Commit 38c2ac79 authored by larowlan's avatar larowlan

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

parent 19cb1ea2
......@@ -963,7 +963,12 @@ function system_get_info($type, $name = NULL) {
/** @var \Drupal\Core\Extension\ModuleExtensionList $module_list */
$module_list = \Drupal::service('extension.list.module');
if (isset($name)) {
return $module_list->getExtensionInfo($name);
try {
return $module_list->getExtensionInfo($name);
}
catch (\InvalidArgumentException $e) {
return [];
}
}
else {
return $module_list->getAllInstalledInfo();
......
<?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'));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment