class DriverModuleMissingDependenciesTest

Same name and namespace in other branches
  1. 11.x core/tests/Drupal/Tests/Core/Database/DriverModuleMissingDependenciesTest.php \Drupal\Tests\Core\Database\DriverModuleMissingDependenciesTest
  2. 10 core/tests/Drupal/Tests/Core/Database/DriverModuleMissingDependenciesTest.php \Drupal\Tests\Core\Database\DriverModuleMissingDependenciesTest

Tests for database driver module with missing dependency.

These tests run in isolation since we don't want the database static to affect other tests. We also use a fake root directory to avoid the failing module to get into normal extensions discovery.

Attributes

#[CoversClass(DatabaseDriverList::class)] #[Group('Database')] #[PreserveGlobalState(FALSE)] #[RunTestsInSeparateProcesses]

Hierarchy

Expanded class hierarchy of DriverModuleMissingDependenciesTest

File

core/tests/Drupal/Tests/Core/Database/DriverModuleMissingDependenciesTest.php, line 24

Namespace

Drupal\Tests\Core\Database
View source
class DriverModuleMissingDependenciesTest extends UnitTestCase {
  
  /**
   * Tests determine drivers autoloading failing on missing dependency.
   *
   * @legacy-covers ::get
   */
  public function testDetermineDriversAutoloadingFailingOnMissingDependency() : void {
    $root = realpath(dirname(__FILE__) . '/fixtures');
    // Mock the container so we don't need to mock drupal_valid_test_ua().
    // @see \Drupal\Core\Extension\ExtensionDiscovery::scan()
    $container = $this->createMock(ContainerInterface::class);
    $container->expects($this->any())
      ->method('has')
      ->with('kernel')
      ->willReturn(TRUE);
    $container->expects($this->any())
      ->method('getParameter')
      ->with()
      ->willReturnMap([
      [
        'install_profile',
        '',
      ],
      [
        'site.path',
        '',
      ],
    ]);
    $container->expects($this->any())
      ->method('get')
      ->with('extension.list.database_driver')
      ->willReturn(new DatabaseDriverList($root, 'database_driver', new NullBackend('database_driver')));
    \Drupal::setContainer($container);
    $this->expectException(UnknownExtensionException::class);
    $this->expectExceptionMessage("The database_driver a_really_missing_module\\dependent_driver does not exist.");
    $container->get('extension.list.database_driver')
      ->includeTestDrivers(TRUE)
      ->get('a_really_missing_module\\dependent_driver')
      ->getAutoloadInfo();
  }

}

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