class TestRunnerKernel

Same name in other branches
  1. 9 core/lib/Drupal/Core/Test/TestRunnerKernel.php \Drupal\Core\Test\TestRunnerKernel
  2. 8.9.x core/lib/Drupal/Core/Test/TestRunnerKernel.php \Drupal\Core\Test\TestRunnerKernel
  3. 11.x 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

Title Sort descending Deprecated Modifiers Object type Summary Overriden Title 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 Overrides DrupalKernelInterface::getAppRoot
DrupalKernel::getCachedContainerDefinition public function Overrides DrupalKernelInterface::getCachedContainerDefinition
DrupalKernel::getConfigStorage protected function Returns the active configuration storage to use during building the container. 1
DrupalKernel::getContainer public function 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 Overrides DrupalKernelInterface::getServiceIdMapping
DrupalKernel::getServiceProviders public function Overrides DrupalKernelInterface::getServiceProviders
DrupalKernel::getServicesToPersist protected function Returns service instances to persist from an old container to a new one.
DrupalKernel::getSitePath public function 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 Overrides DrupalKernelInterface::invalidateContainer
DrupalKernel::loadLegacyIncludes public function 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 Overrides DrupalKernelInterface::preHandle
DrupalKernel::rebuildContainer public function Overrides DrupalKernelInterface::rebuildContainer
DrupalKernel::resetContainer public function Overrides DrupalKernelInterface::resetContainer
DrupalKernel::setContainer public function phpcs:ignore Drupal.Commenting.FunctionComment.VoidReturn
phpcs:ignore Drupal.Commenting.FunctionComment.InvalidReturnVoid
DrupalKernel::setSitePath public function Overrides DrupalKernelInterface::setSitePath
DrupalKernel::setupTrustedHosts protected static function Sets up the lists of trusted HTTP Host headers.
DrupalKernel::shutdown public function 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 Overrides DrupalKernel::boot
TestRunnerKernel::createFromRequest public static function Overrides DrupalKernel::createFromRequest
TestRunnerKernel::discoverServiceProviders public function Overrides DrupalKernel::discoverServiceProviders
TestRunnerKernel::__construct public function Overrides DrupalKernel::__construct

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