5 * Contains \Drupal\DrupalDriverManager.
10 use Behat\Testwork\Environment\Environment;
11 use Drupal\Driver\DriverInterface;
14 * Drupal driver manager.
16 class DrupalDriverManager {
19 * The name of the default driver.
23 private $defaultDriverName;
26 * All registered drivers.
28 * @var \Drupal\Driver\DriverInterface[]
30 private $drivers = array();
35 * @var \Behat\Testwork\Environment\Environment
40 * Initialize the driver manager.
42 * @param \Drupal\Driver\DriverInterface[] $drivers
43 * An array of drivers to register.
45 public function __construct(array $drivers = array()) {
46 foreach ($drivers as $name => $driver) {
47 $this->registerDriver($name, $driver);
52 * Register a new driver.
56 * @param \Drupal\Driver\DriverInterface $driver
57 * An instance of a DriverInterface.
59 public function registerDriver($name, DriverInterface $driver) {
60 $name = strtolower($name);
61 $this->drivers[$name] = $driver;
65 * Return a registered driver by name, or the default driver.
68 * The name of the driver to return. If omitted the default driver is
71 * @return \Drupal\Driver\DriverInterface
72 * The requested driver.
74 * @throws \InvalidArgumentException
75 * Thrown when the requested driver is not registered.
77 public function getDriver($name = NULL) {
78 $name = strtolower($name) ?: $this->defaultDriverName;
81 throw new \InvalidArgumentException('Specify a Drupal driver to get.');
84 if (!isset($this->drivers[$name])) {
85 throw new \InvalidArgumentException(sprintf('Driver "%s" is not registered', $name));
88 $driver = $this->drivers[$name];
90 // Bootstrap driver if needed.
91 if (!$driver->isBootstrapped()) {
99 * Set the default driver name.
101 * @param string $name
102 * Default driver name to set.
104 * @throws \InvalidArgumentException
105 * Thrown when the driver is not registered.
107 public function setDefaultDriverName($name) {
108 $name = strtolower($name);
110 if (!isset($this->drivers[$name])) {
111 throw new \InvalidArgumentException(sprintf('Driver "%s" is not registered.', $name));
114 $this->defaultDriverName = $name;
118 * Returns all registered drivers.
120 * @return \Drupal\Driver\DriverInterface[]
121 * An array of drivers.
123 public function getDrivers() {
124 return $this->drivers;
128 * Sets the Behat Environment.
130 * @param \Behat\Testwork\Environment\Environment $environment
131 * The Behat Environment to set.
133 public function setEnvironment(Environment $environment) {
134 $this->environment = $environment;
138 * Returns the Behat Environment.
140 * @return \Behat\Testwork\Environment\Environment
141 * The Behat Environment.
143 public function getEnvironment() {
144 return $this->environment;