function KernelTestBase::tearDown

Same name in other branches
  1. 9 core/tests/Drupal/KernelTests/KernelTestBase.php \Drupal\KernelTests\KernelTestBase::tearDown()
  2. 8.9.x core/modules/simpletest/src/KernelTestBase.php \Drupal\simpletest\KernelTestBase::tearDown()
  3. 8.9.x core/tests/Drupal/KernelTests/KernelTestBase.php \Drupal\KernelTests\KernelTestBase::tearDown()
  4. 11.x core/tests/Drupal/KernelTests/KernelTestBase.php \Drupal\KernelTests\KernelTestBase::tearDown()
6 methods override KernelTestBase::tearDown()
GenericCacheBackendUnitTestBase::tearDown in core/tests/Drupal/KernelTests/Core/Cache/GenericCacheBackendUnitTestBase.php
JsonApiDocumentTopLevelNormalizerTest::tearDown in core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php
KernelTestBaseTest::tearDown in core/tests/Drupal/KernelTests/KernelTestBaseTest.php
MigrateTestBase::tearDown in core/modules/migrate/tests/src/Kernel/MigrateTestBase.php
NonPublicSchemaTest::tearDown in core/modules/pgsql/tests/src/Kernel/pgsql/NonPublicSchemaTest.php

... See full list

File

core/tests/Drupal/KernelTests/KernelTestBase.php, line 687

Class

KernelTestBase
Base class for functional integration tests.

Namespace

Drupal\KernelTests

Code

protected function tearDown() : void {
    if ($this->container) {
        // Clean up mock session started in DrupalKernel::preHandle().
        try {
            
            /** @var \Symfony\Component\HttpFoundation\Session\Session $session */
            $session = $this->container
                ->get('request_stack')
                ->getSession();
            $session->clear();
            $session->save();
        } catch (SessionNotFoundException) {
            @trigger_error('Pushing requests without a session onto the request_stack is deprecated in drupal:10.3.0 and an error will be thrown from drupal:11.0.0. See https://www.drupal.org/node/3337193', E_USER_DEPRECATED);
        }
    }
    // Destroy the testing kernel.
    if (isset($this->kernel)) {
        $this->kernel
            ->shutdown();
    }
    // Remove all prefixed tables.
    $original_connection_info = Database::getConnectionInfo('simpletest_original_default');
    $original_prefix = $original_connection_info['default']['prefix'] ?? NULL;
    $test_connection_info = Database::getConnectionInfo('default');
    $test_prefix = $test_connection_info['default']['prefix'] ?? NULL;
    if ($original_prefix != $test_prefix) {
        $tables = Database::getConnection()->schema()
            ->findTables('%');
        foreach ($tables as $table) {
            if (Database::getConnection()->schema()
                ->dropTable($table)) {
                unset($tables[$table]);
            }
        }
    }
    // Free up memory: Own properties.
    $this->classLoader = NULL;
    $this->vfsRoot = NULL;
    $this->configImporter = NULL;
    // Clean FileCache cache.
    FileCache::reset();
    // Clean up statics, container, and settings.
    if (function_exists('drupal_static_reset')) {
        drupal_static_reset();
    }
    \Drupal::unsetContainer();
    $this->container = NULL;
    new Settings([]);
    parent::tearDown();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.