Example #1
0
 public function __construct($settings = [])
 {
     $this->settings = Configuration::mergeConfigs(self::$defaultSettings, $settings);
     if (!class_exists('Behat\\Gherkin\\Keywords\\ArrayKeywords')) {
         throw new TestParseException('Feature file can only be parsed with Behat\\Gherkin library. Please install `behat/gherkin` with Composer');
     }
     $keywords = new GherkinKeywords(['en' => static::$defaultKeywords]);
     $lexer = new GherkinLexer($keywords);
     $this->parser = new GherkinParser($lexer);
     $this->fetchGherkinSteps();
 }
Example #2
0
 public function __construct($settings = [])
 {
     $this->settings = Configuration::mergeConfigs(self::$defaultSettings, $settings);
     if (!class_exists('Behat\\Gherkin\\Keywords\\ArrayKeywords')) {
         throw new TestParseException('Feature file can only be parsed with Behat\\Gherkin library. Please install `behat/gherkin` with Composer');
     }
     $gherkin = new \ReflectionClass('Behat\\Gherkin\\Gherkin');
     $gherkinClassPath = dirname($gherkin->getFileName());
     $i18n = (require $gherkinClassPath . '/../../../i18n.php');
     $keywords = new GherkinKeywords($i18n);
     $lexer = new GherkinLexer($keywords);
     $this->parser = new GherkinParser($lexer);
     $this->fetchGherkinSteps();
 }
Example #3
0
 public function run($suite, $test = null)
 {
     ini_set('memory_limit', isset($this->config['settings']['memory_limit']) ? $this->config['settings']['memory_limit'] : '1024M');
     $settings = Configuration::suiteSettings($suite, Configuration::config());
     $selectedEnvironments = $this->options['env'];
     $environments = Configuration::suiteEnvironments($suite);
     if (!$selectedEnvironments or empty($environments)) {
         $this->runSuite($settings, $suite, $test);
         return;
     }
     foreach (array_unique($selectedEnvironments) as $envList) {
         $envArray = explode(',', $envList);
         $config = [];
         foreach ($envArray as $env) {
             if (isset($environments[$env])) {
                 $currentEnvironment = isset($config['current_environment']) ? [$config['current_environment']] : [];
                 $config = Configuration::mergeConfigs($config, $environments[$env]);
                 $currentEnvironment[] = $config['current_environment'];
                 $config['current_environment'] = implode(',', $currentEnvironment);
             }
         }
         if (empty($config)) {
             continue;
         }
         $suiteToRun = $suite;
         if (!empty($envList)) {
             $suiteToRun .= ' (' . implode(', ', $envArray) . ')';
         }
         $this->runSuite($config, $suiteToRun, $test);
     }
 }
 /**
  * Merges configuration file given in environmental variable
  *
  * @param array|null $config configuration
  *
  * @return void
  */
 protected function mergeEnvConfig(&$config)
 {
     if (!is_array($config)) {
         $config = array();
     }
     $envConfig = getenv(self::ENV_CONFIG);
     if ($envConfig !== false && $envConfig !== null) {
         $parser = new Parser();
         $localConfig = $parser->parse(file_get_contents($envConfig));
         $config = Configuration::mergeConfigs($config, $localConfig);
     }
 }
Example #5
0
 protected function getModuleConfig($module)
 {
     // get config for all modules
     $config = isset($this->config['modules']['config'][$module]) ? $this->config['modules']['config'][$module] : [];
     if (!isset($this->config['modules']['enabled'])) {
         return $config;
     }
     if (!is_array($this->config['modules']['enabled'])) {
         return $config;
     }
     // get config for enabled modules
     foreach ($this->config['modules']['enabled'] as $enabledModuleConfig) {
         if (!is_array($enabledModuleConfig)) {
             continue;
         }
         $enabledModuleName = key($enabledModuleConfig);
         if ($enabledModuleName !== $module) {
             continue;
         }
         $config = Configuration::mergeConfigs(reset($enabledModuleConfig), $config);
     }
     return $config;
 }
 /**
  * Get the configuration for a module.
  *
  * A module with name $moduleName can be configured at two paths in a configuration file:
  * - modules.config.$moduleName
  * - modules.enabled.$moduleName
  *
  * This method checks both locations for configuration. If there is configuration at both locations
  * this method merges them, where the configuration at modules.enabled.$moduleName takes precedence
  * over modules.config.$moduleName if the same parameters are configured at both locations.
  *
  * @param string $moduleName
  * @return array
  */
 private function getModuleConfig($moduleName)
 {
     $config = isset($this->config['modules']['config'][$moduleName]) ? $this->config['modules']['config'][$moduleName] : [];
     if (!isset($this->config['modules']['enabled'])) {
         return $config;
     }
     if (!is_array($this->config['modules']['enabled'])) {
         return $config;
     }
     foreach ($this->config['modules']['enabled'] as $enabledModuleConfig) {
         if (!is_array($enabledModuleConfig)) {
             continue;
         }
         $enabledModuleName = key($enabledModuleConfig);
         if ($enabledModuleName === $moduleName) {
             return Configuration::mergeConfigs(reset($enabledModuleConfig), $config);
         }
     }
     return $config;
 }