You are here

public function KernelTestBaseTest::run in SimpleTest 8.3

Run all tests in this class.

Regardless of whether $methods are passed or not, only method names starting with "test" are executed.

Parameters

$methods: (optional) A list of method names in the test case class to run; e.g., array('testFoo', 'testBar'). By default, all methods of the class are taken into account, but it can be useful to only run a few selected test methods during debugging.

Overrides TestBase::run

File

src/Tests/KernelTestBaseTest.php, line 339

Class

KernelTestBaseTest
Tests KernelTestBase functionality.

Namespace

Drupal\simpletest\Tests

Code

public function run(array $methods = []) {
  parent::run($methods);

  // Check that all tables of the test instance have been deleted. At this
  // point the original database connection is restored so we need to prefix
  // the tables.
  $connection = Database::getConnection();
  if ($connection
    ->databaseType() != 'sqlite') {
    $tables = $connection
      ->schema()
      ->findTables($this->databasePrefix . '%');
    $this
      ->assertTrue(empty($tables), 'All test tables have been removed.');
  }
  else {

    // We don't have the test instance connection anymore so we have to
    // re-attach its database and then use the same query as
    // \Drupal\Core\Database\Driver\sqlite\Schema::findTables().
    // @see \Drupal\Core\Database\Driver\sqlite\Connection::__construct()
    $info = Database::getConnectionInfo();
    $connection
      ->query('ATTACH DATABASE :database AS :prefix', [
      ':database' => $info['default']['database'] . '-' . $this->databasePrefix,
      ':prefix' => $this->databasePrefix,
    ]);
    $result = $connection
      ->query("SELECT name FROM " . $this->databasePrefix . ".sqlite_master WHERE type = :type AND name LIKE :table_name AND name NOT LIKE :pattern", [
      ':type' => 'table',
      ':table_name' => '%',
      ':pattern' => 'sqlite_%',
    ])
      ->fetchAllKeyed(0, 0);
    $this
      ->assertTrue(empty($result), 'All test tables have been removed.');
  }
}