Issue #3132426 by alexpott, dww, GuyPaddock, catch, VladimirAus: Notice: Undefined index: title in Drupal\update\ProjectSecurityRequirement
parent
79f9e9dc97
commit
d7758d6565
|
@ -82,8 +82,14 @@ interface UpdateManagerInterface {
|
||||||
/**
|
/**
|
||||||
* Processes a step in batch for fetching available update data.
|
* Processes a step in batch for fetching available update data.
|
||||||
*
|
*
|
||||||
|
* Before calling this method, call
|
||||||
|
* UpdateManagerInterface::refreshUpdateData() to clear existing update data
|
||||||
|
* and initiate re-fetching.
|
||||||
|
*
|
||||||
* @param array $context
|
* @param array $context
|
||||||
* Reference to an array used for Batch API storage.
|
* Reference to an array used for Batch API storage.
|
||||||
|
*
|
||||||
|
* @see \Drupal\update\UpdateManagerInterface::refreshUpdateData()
|
||||||
*/
|
*/
|
||||||
public function fetchDataBatch(&$context);
|
public function fetchDataBatch(&$context);
|
||||||
|
|
||||||
|
|
|
@ -127,6 +127,11 @@ class UpdateProcessor implements UpdateProcessorInterface {
|
||||||
*/
|
*/
|
||||||
public function fetchData() {
|
public function fetchData() {
|
||||||
$end = time() + $this->updateSettings->get('fetch.timeout');
|
$end = time() + $this->updateSettings->get('fetch.timeout');
|
||||||
|
if ($this->fetchQueue->numberOfItems()) {
|
||||||
|
// Delete any stored project data as that needs refreshing when
|
||||||
|
// update_calculate_project_data() is called.
|
||||||
|
$this->tempStore->delete('update_project_data');
|
||||||
|
}
|
||||||
while (time() < $end && ($item = $this->fetchQueue->claimItem())) {
|
while (time() < $end && ($item = $this->fetchQueue->claimItem())) {
|
||||||
$this->processFetchTask($item->data);
|
$this->processFetchTask($item->data);
|
||||||
$this->fetchQueue->deleteItem($item);
|
$this->fetchQueue->deleteItem($item);
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
</project>
|
|
@ -862,6 +862,43 @@ class UpdateCoreTest extends UpdateTestBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks that Drupal recovers after problems connecting to update server.
|
||||||
|
*/
|
||||||
|
public function testBrokenThenFixedUpdates() {
|
||||||
|
$this->drupalLogin($this->drupalCreateUser([
|
||||||
|
'administer site configuration',
|
||||||
|
'access administration pages',
|
||||||
|
]));
|
||||||
|
$this->setSystemInfo('8.0.0');
|
||||||
|
// Instead of using refreshUpdateStatus(), set these manually.
|
||||||
|
$this->config('update.settings')
|
||||||
|
->set('fetch.url', Url::fromRoute('update_test.update_test')->setAbsolute()->toString())
|
||||||
|
->save();
|
||||||
|
// Use update XML that has no information to simulate a broken response from
|
||||||
|
// the update server.
|
||||||
|
$this->config('update_test.settings')
|
||||||
|
->set('xml_map', ['drupal' => 'broken'])
|
||||||
|
->save();
|
||||||
|
|
||||||
|
// This will retrieve broken updates.
|
||||||
|
$this->cronRun();
|
||||||
|
$this->drupalGet('admin/reports/status');
|
||||||
|
$this->assertSession()->statusCodeEquals(200);
|
||||||
|
$this->assertSession()->pageTextContains('There was a problem checking available updates for Drupal.');
|
||||||
|
$this->config('update_test.settings')
|
||||||
|
->set('xml_map', ['drupal' => 'sec.0.2'])
|
||||||
|
->save();
|
||||||
|
// Simulate the update_available_releases state expiring before cron is run
|
||||||
|
// and the state is used by \Drupal\update\UpdateManager::getProjects().
|
||||||
|
\Drupal::keyValueExpirable('update_available_releases')->deleteAll();
|
||||||
|
// This cron run should retrieve fixed updates.
|
||||||
|
$this->cronRun();
|
||||||
|
$this->drupalGet('admin/structure');
|
||||||
|
$this->assertSession()->statusCodeEquals(200);
|
||||||
|
$this->assertSession()->pageTextContains('There is a security update available for your version of Drupal.');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests messages when a project release is marked unsupported.
|
* Tests messages when a project release is marked unsupported.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue