Issue #3002820 by daffie, pavnish, dww, sokru, mmjvb: PHP Warning in template_preprocess_update_report(): Invalid argument supplied for foreach()

merge-requests/2419/head
xjm 2020-05-28 03:52:41 -05:00
parent eba9a1805f
commit 2f51f441c9
2 changed files with 58 additions and 1 deletions

View File

@ -0,0 +1,57 @@
<?php
namespace Drupal\Tests\update\Kernel;
use Drupal\KernelTests\KernelTestBase;
/**
* Tests update report functionality.
*
* @covers template_preprocess_update_report()
* @group update
*/
class UpdateReportTest extends KernelTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'system',
'update',
];
/**
* @dataProvider providerTemplatePreprocessUpdateReport
*/
public function testTemplatePreprocessUpdateReport($variables) {
\Drupal::moduleHandler()->loadInclude('update', 'inc', 'update.report');
// The function should run without an exception being thrown when the value
// of $variables['data'] is not set or is not an array.
template_preprocess_update_report($variables);
// Test that the key "no_updates_message" has been set.
$this->assertArrayHasKey('no_updates_message', $variables);
}
/**
* Provides data for testTemplatePreprocessUpdateReport().
*
* @return array
* Array of $variables for template_preprocess_update_report().
*/
public function providerTemplatePreprocessUpdateReport() {
return [
'$variables with data not set' => [
[],
],
'$variables with data as an interger' => [
['data' => 4],
],
'$variables with data as a string' => [
['data' => 'I am a string'],
],
];
}
}

View File

@ -20,7 +20,7 @@ use Drupal\update\UpdateManagerInterface;
* - data: An array of data about each project's status.
*/
function template_preprocess_update_report(&$variables) {
$data = $variables['data'];
$data = isset($variables['data']) && is_array($variables['data']) ? $variables['data'] : [];
$last = \Drupal::state()->get('update.last_check', 0);