protected function KernelTestBase::tearDown in Drupal 9
Same name and namespace in other branches
- 8 core/tests/Drupal/KernelTests/KernelTestBase.php \Drupal\KernelTests\KernelTestBase::tearDown()
- 10 core/tests/Drupal/KernelTests/KernelTestBase.php \Drupal\KernelTests\KernelTestBase::tearDown()
4 calls to KernelTestBase::tearDown()
- GenericCacheBackendUnitTestBase::tearDown in core/tests/ Drupal/ KernelTests/ Core/ Cache/ GenericCacheBackendUnitTestBase.php 
- KernelTestBaseTest::tearDown in core/tests/ Drupal/ KernelTests/ KernelTestBaseTest.php 
- MigrateTestBase::tearDown in core/modules/ migrate/ tests/ src/ Kernel/ MigrateTestBase.php 
- RouteProviderTest::tearDown in core/tests/ Drupal/ KernelTests/ Core/ Routing/ RouteProviderTest.php 
4 methods override KernelTestBase::tearDown()
- GenericCacheBackendUnitTestBase::tearDown in core/tests/ Drupal/ KernelTests/ Core/ Cache/ GenericCacheBackendUnitTestBase.php 
- KernelTestBaseTest::tearDown in core/tests/ Drupal/ KernelTests/ KernelTestBaseTest.php 
- MigrateTestBase::tearDown in core/modules/ migrate/ tests/ src/ Kernel/ MigrateTestBase.php 
- RouteProviderTest::tearDown in core/tests/ Drupal/ KernelTests/ Core/ Routing/ RouteProviderTest.php 
File
- core/tests/ Drupal/ KernelTests/ KernelTestBase.php, line 639 
Class
- KernelTestBase
- Base class for functional integration tests.
Namespace
Drupal\KernelTestsCode
protected function tearDown() {
  // 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;
  // Free up memory: Custom test class properties.
  // Note: Private properties cannot be cleaned up.
  $rc = new \ReflectionClass(__CLASS__);
  $blacklist = [];
  foreach ($rc
    ->getProperties() as $property) {
    $blacklist[$property->name] = $property
      ->getDeclaringClass()->name;
  }
  $rc = new \ReflectionClass($this);
  foreach ($rc
    ->getProperties(\ReflectionProperty::IS_PUBLIC | \ReflectionProperty::IS_PROTECTED) as $property) {
    if (!$property
      ->isStatic() && !isset($blacklist[$property->name])) {
      $this->{$property->name} = 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();
}