Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/Test/TestRunnerKernel.php \Drupal\Core\Test\TestRunnerKernel
  2. 9 core/lib/Drupal/Core/Test/TestRunnerKernel.php \Drupal\Core\Test\TestRunnerKernel

Defines a kernel used for running Functional tests and run-tests.sh.

@internal

Hierarchy

Expanded class hierarchy of TestRunnerKernel

File

core/lib/Drupal/Core/Test/TestRunnerKernel.php, line 15

Namespace

Drupal\Core\Test
View source
class TestRunnerKernel extends DrupalKernel {

  /**
   * {@inheritdoc}
   */
  public static function createFromRequest(Request $request, $class_loader, $environment = 'test_runner', $allow_dumping = TRUE, $app_root = NULL) {
    return parent::createFromRequest($request, $class_loader, $environment, $allow_dumping, $app_root);
  }

  /**
   * {@inheritdoc}
   */
  public function __construct($environment, $class_loader, $allow_dumping = FALSE, $app_root = NULL) {

    // Force $allow_dumping to FALSE, because the test runner kernel should
    // always have to rebuild its container, and potentially avoid isolation
    // issues against the tests.
    parent::__construct($environment, $class_loader, FALSE, $app_root);

    // Prime the module list and corresponding Extension objects.
    // @todo Remove System module. Needed because
    //   \Drupal\Core\Datetime\DateFormatter has a (needless) dependency on the
    //   'date_format' entity, so calls to DateFormatter::format() and
    //   DateFormatter::formatInterval() cause a plugin not found exception.
    $this->moduleList = [
      'system' => 0,
    ];
    $this->moduleData = [
      'system' => new Extension($this->root, 'module', 'core/modules/system/system.info.yml', 'system.module'),
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function boot() {

    // Ensure that required Settings exist.
    if (!Settings::getAll()) {
      new Settings([
        'hash_salt' => 'run-tests',
        'container_yamls' => [],
        // If there is no settings.php, then there is no parent site. In turn,
        // there is no public files directory; use a custom public files path.
        'file_public_path' => 'sites/default/files',
      ]);
    }

    // Remove Drupal's error/exception handlers; they are designed for HTML
    // and there is no storage nor a (watchdog) logger here.
    restore_error_handler();
    restore_exception_handler();

    // In addition, ensure that PHP errors are not hidden away in logs.
    ini_set('display_errors', TRUE);
    parent::boot();
    $this
      ->getContainer()
      ->get('module_handler')
      ->loadAll();
    $test_discovery = new TestDiscovery($this
      ->getContainer()
      ->getParameter('app.root'), $this
      ->getContainer()
      ->get('class_loader'));
    $test_discovery
      ->registerTestNamespaces();

    // Register stream wrappers.
    $this
      ->getContainer()
      ->get('stream_wrapper_manager')
      ->register();

    // Create the build/artifacts directory if necessary.
    if (!is_dir('public://simpletest') && !@mkdir('public://simpletest', 0777, TRUE) && !is_dir('public://simpletest')) {
      throw new \RuntimeException('Unable to create directory: public://simpletest');
    }
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function discoverServiceProviders() {
    parent::discoverServiceProviders();

    // The test runner does not require an installed Drupal site to exist.
    // Therefore, its environment is identical to that of the early installer.
    $this->serviceProviderClasses['app']['Test'] = 'Drupal\\Core\\Installer\\InstallerServiceProvider';
    return $this->serviceProviderClasses;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DrupalKernel::$allowDumping protected property Whether the container can be dumped.
DrupalKernel::$booted protected property Whether the kernel has been booted.
DrupalKernel::$bootstrapContainer protected property Holds the bootstrap container.
DrupalKernel::$bootstrapContainerClass protected property Holds the class used for instantiating the bootstrap container.
DrupalKernel::$classLoader protected property The class loader object.
DrupalKernel::$configStorage protected property Config storage object used for reading enabled modules configuration.
DrupalKernel::$container protected property Holds the container instance.
DrupalKernel::$containerNeedsDumping protected property Whether the container needs to be dumped once booting is complete.
DrupalKernel::$containerNeedsRebuild protected property Whether the container needs to be rebuilt the next time it is initialized.
DrupalKernel::$defaultBootstrapContainerDefinition protected property Holds the default bootstrap container definition.
DrupalKernel::$environment protected property The environment, e.g. 'testing', 'install'.
DrupalKernel::$isEnvironmentInitialized protected static property Whether the PHP environment has been initialized.
DrupalKernel::$moduleData protected property List of available modules and installation profiles.
DrupalKernel::$moduleList protected property Holds the list of enabled modules.
DrupalKernel::$phpArrayDumperClass protected property Holds the class used for dumping the container to a PHP array.
DrupalKernel::$prepared protected property Whether essential services have been set up properly by preHandle().
DrupalKernel::$root protected property The app root.
DrupalKernel::$serviceIdMapping Deprecated protected property A mapping from service classes to service IDs.
DrupalKernel::$serviceProviderClasses protected property List of discovered service provider class names or objects.
DrupalKernel::$serviceProviders protected property List of instantiated service provider classes.
DrupalKernel::$serviceYamls protected property List of discovered services.yml path names.
DrupalKernel::$sitePath protected property The site path directory.
DrupalKernel::addServiceFiles protected function Add service files.
DrupalKernel::attachSynthetic protected function Attach synthetic values on to kernel.
DrupalKernel::bootEnvironment public static function Setup a consistent PHP environment.
DrupalKernel::cacheDrupalContainer protected function Stores the container definition in a cache. 1
DrupalKernel::classLoaderAddMultiplePsr4 protected function Registers a list of namespaces with PSR-4 directories for class loading.
DrupalKernel::collectServiceIdMapping Deprecated protected function Collect a mapping between service to ids.
DrupalKernel::compileContainer protected function Compiles a new service container.
DrupalKernel::findSitePath public static function Returns the appropriate site directory for a request.
DrupalKernel::generateServiceIdHash Deprecated public static function Generate a unique hash for a service object.
DrupalKernel::getAppRoot public function Gets the app root. Overrides DrupalKernelInterface::getAppRoot
DrupalKernel::getCachedContainerDefinition public function Returns the cached container definition - if any. Overrides DrupalKernelInterface::getCachedContainerDefinition
DrupalKernel::getConfigStorage protected function Returns the active configuration storage to use during building the container. 1
DrupalKernel::getContainer public function Gets the current container. Overrides DrupalKernelInterface::getContainer
DrupalKernel::getContainerBuilder protected function Gets a new ContainerBuilder instance used to build the service container.
DrupalKernel::getContainerCacheKey protected function Returns the container cache key based on the environment.
DrupalKernel::getHttpKernel protected function Gets a http kernel from the container.
DrupalKernel::getInstallProfile protected function Gets the active install profile. 1
DrupalKernel::getKernelParameters protected function Returns the kernel parameters.
DrupalKernel::getModuleFileNames protected function Gets the file name for each enabled module.
DrupalKernel::getModuleNamespacesPsr4 protected function Gets the PSR-4 base directories for module namespaces.
DrupalKernel::getModulesParameter protected function Returns an array of Extension class parameters for all enabled modules.
DrupalKernel::getServiceIdMapping public function Get a mapping from service hashes to service IDs. Overrides DrupalKernelInterface::getServiceIdMapping
DrupalKernel::getServiceProviders public function Returns all registered service providers. Overrides DrupalKernelInterface::getServiceProviders
DrupalKernel::getServicesToPersist protected function Returns service instances to persist from an old container to a new one.
DrupalKernel::getSitePath public function Gets the site path directory. Overrides DrupalKernelInterface::getSitePath
DrupalKernel::guessApplicationRoot protected static function Determine the application root directory based on this file's location.
DrupalKernel::handle public function 1
DrupalKernel::handleException protected function Converts an exception into a response.
DrupalKernel::initializeContainer protected function Initializes the service container. 2
DrupalKernel::initializeEphemeralSession protected function Initializes a session backed by in-memory store and puts it on the request.
DrupalKernel::initializeRequestGlobals protected function Bootstraps the legacy global request variables.
DrupalKernel::initializeServiceProviders protected function Registers all service providers to the kernel.
DrupalKernel::initializeSettings protected function Locate site path and initialize settings singleton.
DrupalKernel::invalidateContainer public function Invalidate the service container for the next request. Overrides DrupalKernelInterface::invalidateContainer
DrupalKernel::loadLegacyIncludes public function Helper method that loads legacy Drupal include files. Overrides DrupalKernelInterface::loadLegacyIncludes
DrupalKernel::moduleData protected function Returns module data on the filesystem.
DrupalKernel::persistServices protected function Moves persistent service instances into a new container.
DrupalKernel::preHandle public function Helper method that does request related initialization. Overrides DrupalKernelInterface::preHandle
DrupalKernel::rebuildContainer public function Force a container rebuild. Overrides DrupalKernelInterface::rebuildContainer
DrupalKernel::resetContainer public function Force a container reset. Overrides DrupalKernelInterface::resetContainer
DrupalKernel::setContainer public function phpcs:ignore Drupal.Commenting.FunctionComment.VoidReturn
DrupalKernel::setSitePath public function Set the current site path directory. Overrides DrupalKernelInterface::setSitePath
DrupalKernel::setupTrustedHosts protected static function Sets up the lists of trusted HTTP Host headers.
DrupalKernel::shutdown public function Shuts down the kernel. Overrides DrupalKernelInterface::shutdown
DrupalKernel::terminate public function phpcs:ignore Drupal.Commenting.FunctionComment.VoidReturn
DrupalKernel::updateModules public function Implements Drupal\Core\DrupalKernelInterface::updateModules(). Overrides DrupalKernelInterface::updateModules
DrupalKernel::validateHostname public static function Validates the hostname supplied from the HTTP request.
DrupalKernel::validateHostnameLength protected static function Validates a hostname length.
DrupalKernelInterface::CONTAINER_INITIALIZE_SUBREQUEST_FINISHED constant Event fired when the service container finished initializing in subrequest.
InstallerRedirectTrait::isCli protected function Returns whether the current PHP process runs on CLI.
InstallerRedirectTrait::shouldRedirectToInstaller protected function Determines if an exception handler should redirect to the installer.
TestRunnerKernel::boot public function Boots the current kernel. Overrides DrupalKernel::boot
TestRunnerKernel::createFromRequest public static function Create a DrupalKernel object from a request. Overrides DrupalKernel::createFromRequest
TestRunnerKernel::discoverServiceProviders public function Discovers available serviceProviders. Overrides DrupalKernel::discoverServiceProviders
TestRunnerKernel::__construct public function Constructs a DrupalKernel object. Overrides DrupalKernel::__construct