Skip to content
Snippets Groups Projects
Verified Commit fc983edf authored by Lee Rowlands's avatar Lee Rowlands
Browse files

Issue #3319839 by alexpott: Exceptions in post updates are very broken since #3295625

(cherry picked from commit 07f87cae)
parent da28509e
No related branches found
No related tags found
17 merge requests!8506Draft: Issue #3456536 by ibrahim tameme,!5646Issue #3350972 by nod_: [random test failure]...,!5600Issue #3350972 by nod_: [random test failure]...,!5343Issue #3305066 by quietone, Rename RedirectLeadingSlashesSubscriber,!3603#ISSUE 3346218 Add a different message on edit comment,!3555Issue #2473873: Views entity operations lack cacheability support, resulting in incorrect dropbuttons,!3494Issue #3327018 by Spokje, longwave, xjm, mondrake: Update PHPStan to 1.9.3 and...,!3410Issue #3340128: UserLoginForm::submitForm has some dead code,!3389Issue #3325184 by Spokje, andypost, xjm, smustgrave: $this->configFactory is...,!3381Issue #3332363: Refactor Claro's menus-and-lists stylesheet,!3307Issue #3326193: CKEditor 5 can grow past the viewport when there is a lot of content,!3236Issue #3332419: Refactor Claro's messages stylesheet,!3231Draft: Issue #3049525 by longwave, fougere, larowlan, kim.pepper, AaronBauman, Wim...,!3212Issue #3294003: Refactor Claro's entity-meta stylesheet,!3194Issue #3330981: Fix PHPStan L1 error "Relying on entity queries to check access by default is deprecated...",!3143Issue #3313342: [PHP 8.1] Deprecated function: strpos(): Passing null to parameter #1 LayoutBuilderUiCacheContext.php on line 28,!2972Issue #1845004: Replace custom password hashing library with PHP 5.5 password_hash()
...@@ -247,7 +247,7 @@ function update_invoke_post_update($function, &$context) { ...@@ -247,7 +247,7 @@ function update_invoke_post_update($function, &$context) {
watchdog_exception('update', $e); watchdog_exception('update', $e);
$variables = Error::decodeException($e); $variables = Error::decodeException($e);
unset($variables['backtrace'], $variables['exception']); unset($variables['backtrace'], $variables['exception'], $variables['severity_level']);
$ret['#abort'] = [ $ret['#abort'] = [
'success' => FALSE, 'success' => FALSE,
'query' => t(Error::DEFAULT_ERROR_MESSAGE, $variables), 'query' => t(Error::DEFAULT_ERROR_MESSAGE, $variables),
......
name: 'Post Update test failing'
type: module
description: 'Support module for update testing when a post update is failing.'
package: Testing
version: VERSION
<?php
/**
* @file
* Post update functions for test module.
*/
/**
* Post update that throws an exception.
*/
function post_update_test_failing_post_update_exception() {
throw new \RuntimeException('This post update fails');
}
<?php
namespace Drupal\Tests\system\Functional\UpdateSystem;
use Drupal\Core\Database\Database;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\UpdatePathTestTrait;
/**
* Tests hook_post_update() when there is an exception in a post update.
*
* @group Update
*/
class UpdatePostUpdateExceptionTest extends BrowserTestBase {
use UpdatePathTestTrait;
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$connection = Database::getConnection();
// Set the schema version.
\Drupal::service('update.update_hook_registry')->setInstalledVersion('post_update_test_failing', 8000);
// Update core.extension.
$extensions = $connection->select('config')
->fields('config', ['data'])
->condition('collection', '')
->condition('name', 'core.extension')
->execute()
->fetchField();
$extensions = unserialize($extensions);
$extensions['module']['post_update_test_failing'] = 8000;
$connection->update('config')
->fields([
'data' => serialize($extensions),
])
->condition('collection', '')
->condition('name', 'core.extension')
->execute();
}
/**
* Tests hook_post_update_NAME().
*/
public function testPostUpdate() {
// There are expected to be failed updates.
$this->checkFailedUpdates = FALSE;
$this->runUpdates();
$this->assertSession()->pageTextContains('Failed: RuntimeException: This post update fails in post_update_test_failing_post_update_exception()');
}
/**
* {@inheritdoc}
*/
protected function doSelectionTest() {
$this->assertSession()->assertEscaped("Post update that throws an exception.");
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment