.../src/MySQL/Connection.php | 5 ++++- .../Core/Cache/EndOfTransactionQueriesTestTest.php | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/core/modules/system/tests/modules/database_statement_monitoring_test/src/MySQL/Connection.php b/core/modules/system/tests/modules/database_statement_monitoring_test/src/MySQL/Connection.php index 3e5fe6e..bb91e8c 100644 --- a/core/modules/system/tests/modules/database_statement_monitoring_test/src/MySQL/Connection.php +++ b/core/modules/system/tests/modules/database_statement_monitoring_test/src/MySQL/Connection.php @@ -18,7 +18,10 @@ public function getDriverClass($class) { // The actual monitoring! public function query($query, array $args = [], $options = []) { - $this->loggedStatements[] = str_replace(array_keys($args), array_values($args), $query); + $stringified_args = array_map(function ($v) { + return is_array($v) ? implode(',', $v) : $v; + }, $args); + $this->loggedStatements[] = str_replace(array_keys($stringified_args), array_values($stringified_args), $query); return parent::query($query, $args, $options); } diff --git a/core/tests/Drupal/KernelTests/Core/Cache/EndOfTransactionQueriesTestTest.php b/core/tests/Drupal/KernelTests/Core/Cache/EndOfTransactionQueriesTestTest.php index 8a05b46..bc14df5 100644 --- a/core/tests/Drupal/KernelTests/Core/Cache/EndOfTransactionQueriesTestTest.php +++ b/core/tests/Drupal/KernelTests/Core/Cache/EndOfTransactionQueriesTestTest.php @@ -3,9 +3,12 @@ namespace Drupal\KernelTests\Core\Cache; use Drupal\Core\Cache\Cache; +use Drupal\Core\Cache\DatabaseBackendFactory; +use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\entity_test\Entity\EntityTest; use Drupal\KernelTests\KernelTestBase; use Drupal\user\Entity\User; +use Symfony\Component\DependencyInjection\Reference; /** * Tests that cache tag invalidation queries are delayed to the end of transactions. @@ -40,6 +43,19 @@ protected function setUp() { /** * {@inheritdoc} + * + * Register a database cache backend rather than memory-based. + */ + public function register(ContainerBuilder$container) { + parent::register($container); + $container->register('cache_factory', DatabaseBackendFactory::class) + ->addArgument(new Reference('database')) + ->addArgument(new Reference('cache_tags.invalidator.checksum')) + ->addArgument(new Reference('settings')); + } + + /** + * {@inheritdoc} */ public function testEntitySave() { \Drupal::database()->resetLoggedStatements();