From 63c3ce45b4fb1874f3628f796da990cf5d4f71ad Mon Sep 17 00:00:00 2001
From: Dave Long <dave@longwaveconsulting.com>
Date: Mon, 5 Feb 2024 13:09:00 +0000
Subject: [PATCH] Issue #3419230 by alexpott: Drush error on site-install

---
 core/lib/Drupal/Core/DrupalKernel.php                |  2 +-
 .../Tests/Core/DrupalKernel/DrupalKernelTest.php     | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index c0bdc552582e..6c1a8e1bbaa4 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -695,7 +695,7 @@ public function getServiceProviders($origin) {
    * @return void
    */
   public function terminate(Request $request, Response $response) {
-    if ($this->getHttpKernel() instanceof TerminableInterface) {
+    if ($this->booted && $this->getHttpKernel() instanceof TerminableInterface) {
       // Only run terminate() when essential services have been set up properly
       // by preHandle() before.
       if ($this->prepared === TRUE) {
diff --git a/core/tests/Drupal/Tests/Core/DrupalKernel/DrupalKernelTest.php b/core/tests/Drupal/Tests/Core/DrupalKernel/DrupalKernelTest.php
index 95630123c348..8c86bd922e1b 100644
--- a/core/tests/Drupal/Tests/Core/DrupalKernel/DrupalKernelTest.php
+++ b/core/tests/Drupal/Tests/Core/DrupalKernel/DrupalKernelTest.php
@@ -4,12 +4,14 @@
 
 namespace Drupal\Tests\Core\DrupalKernel;
 
+use Composer\Autoload\ClassLoader;
 use Drupal\Core\DrupalKernel;
 use Drupal\Core\Test\TestKernel;
 use Drupal\Tests\Core\DependencyInjection\Fixture\BarClass;
 use Drupal\Tests\UnitTestCase;
 use org\bovigo\vfs\vfsStream;
 use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
 
 /**
  * @coversDefaultClass \Drupal\Core\DrupalKernel
@@ -152,6 +154,16 @@ public function testGetServiceIdMapping() {
     $this->assertEquals($container->get('kernel')->getServiceIdMapping()[$container->generateServiceIdHash($service)], 'bar');
   }
 
+  /**
+   * @covers ::terminate
+   * @runInSeparateProcess
+   */
+  public function testUnBootedTerminate() {
+    $kernel = new DrupalKernel('test', new ClassLoader());
+    $kernel->terminate(new Request(), new Response());
+    $this->assertTrue(TRUE, "\Drupal\Core\DrupalKernel::terminate() called without error on kernel which has not booted");
+  }
+
 }
 
 /**
-- 
GitLab