+++ /dev/null
-<?php
-
-namespace Drupal\DrupalExtension\Listener;
-
-use Behat\Behat\EventDispatcher\Event\ExampleTested;
-use Behat\Behat\EventDispatcher\Event\ScenarioLikeTested;
-use Behat\Behat\EventDispatcher\Event\ScenarioTested;
-
-use Drupal\DrupalDriverManager;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Drupal driver listener.
- *
- * Determines which Drupal driver to use for a given scenario or outline.
- */
-class DriverListener implements EventSubscriberInterface {
-
- /**
- * Drupal driver manager.
- *
- * @var \Drupal\DrupalDriverManager
- */
- private $drupal;
-
- /**
- * Test parameters.
- *
- * @var array
- */
- private $parameters;
-
- public function __construct(DrupalDriverManager $drupal, array $parameters) {
- $this->drupal = $drupal;
- $this->parameters = $parameters;
- }
-
- /**
- * {@inheritDoc}
- */
- public static function getSubscribedEvents() {
- return array(
- ScenarioTested::BEFORE => array('prepareDefaultDrupalDriver', 11),
- ExampleTested::BEFORE => array('prepareDefaultDrupalDriver', 11),
- );
- }
-
- /**
- * Configures default Drupal driver to use before each scenario or outline.
- *
- * `@api` tagged scenarios will get the `api_driver` as the default driver.
- *
- * Other scenarios get the `default_driver` as the default driver.
- *
- * @param ScenarioEvent|OutlineEvent $event
- */
- public function prepareDefaultDrupalDriver($event) {
- $feature = $event->getFeature();
- $scenario = $event instanceof ScenarioLikeTested ? $event->getScenario() : $event->getOutline();
-
- // Get the default driver.
- $driver = $this->parameters['default_driver'];
-
- foreach (array_merge($feature->getTags(), $scenario->getTags()) as $tag) {
- if (!empty($this->parameters[$tag . '_driver'])) {
- $driver = $this->parameters[$tag . '_driver'];
- }
- }
-
- // Set the default driver.
- $this->drupal->setDefaultDriverName($driver);
-
- // Set the environment.
- $environment = $event->getEnvironment();
- $this->drupal->setEnvironment($environment);
- }
-
-}