mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 04:22:07 +02:00
MDL-55924 behat: Add core features to specified theme's
This commit is contained in:
parent
95e1d5e50f
commit
e1ad3a959d
@ -47,13 +47,15 @@ list($options, $unrecognized) = cli_get_params(
|
||||
'help' => false,
|
||||
'fromrun' => 1,
|
||||
'torun' => 0,
|
||||
'run-with-theme' => false,
|
||||
'optimize-runs' => '',
|
||||
'add-core-features-to-theme' => false,
|
||||
),
|
||||
array(
|
||||
'j' => 'parallel',
|
||||
'm' => 'maxruns',
|
||||
'h' => 'help',
|
||||
'o' => 'optimize-runs',
|
||||
'a' => 'add-core-features-to-theme',
|
||||
)
|
||||
);
|
||||
|
||||
@ -69,8 +71,9 @@ Options:
|
||||
-m, --maxruns Max parallel processes to be executed at one time.
|
||||
--fromrun Execute run starting from (Used for parallel runs on different vms)
|
||||
--torun Execute run till (Used for parallel runs on different vms)
|
||||
--optimize-runs Split features with specified tags in all parallel runs.
|
||||
--run-with-theme Run all core features with specified theme.
|
||||
|
||||
-o, --optimize-runs Split features with specified tags in all parallel runs.
|
||||
-a, --add-core-features-to-theme Add all core features to specified theme's
|
||||
|
||||
-h, --help Print out this help
|
||||
|
||||
@ -99,7 +102,7 @@ if ($options['parallel'] && $options['parallel'] > 1) {
|
||||
}
|
||||
} else {
|
||||
// Only sanitize options for single run.
|
||||
$cmdoptionsforsinglerun = array('run-with-theme');
|
||||
$cmdoptionsforsinglerun = array('add-core-features-to-theme');
|
||||
|
||||
foreach ($cmdoptionsforsinglerun as $option) {
|
||||
if (!empty($options[$option])) {
|
||||
|
@ -56,13 +56,15 @@ list($options, $unrecognized) = cli_get_params(
|
||||
'updatesteps' => false,
|
||||
'fromrun' => 1,
|
||||
'torun' => 0,
|
||||
'run-with-theme' => false,
|
||||
'optimize-runs' => '',
|
||||
'add-core-features-to-theme' => false,
|
||||
),
|
||||
array(
|
||||
'h' => 'help',
|
||||
'j' => 'parallel',
|
||||
'm' => 'maxruns',
|
||||
'o' => 'optimize-runs',
|
||||
'a' => 'add-core-features-to-theme',
|
||||
)
|
||||
);
|
||||
|
||||
@ -81,10 +83,10 @@ Options:
|
||||
--diag Get behat test environment status code
|
||||
--updatesteps Update feature step file.
|
||||
|
||||
-j, --parallel Number of parallel behat run operation
|
||||
-m, --maxruns Max parallel processes to be executed at one time.
|
||||
--optimize-runs Split features with specified tags in all parallel runs.
|
||||
--run-with-theme Run all core features with specified theme.
|
||||
-j, --parallel Number of parallel behat run operation
|
||||
-m, --maxruns Max parallel processes to be executed at one time.
|
||||
-o, --optimize-runs Split features with specified tags in all parallel runs.
|
||||
-a, --add-core-features-to-theme Add all core features to specified theme's
|
||||
|
||||
-h, --help Print out this help
|
||||
|
||||
@ -180,14 +182,14 @@ if ($options['diag'] || $options['enable'] || $options['disable']) {
|
||||
} else if ($options['updatesteps']) {
|
||||
// Rewrite config file to ensure we have all the features covered.
|
||||
if (empty($options['parallel'])) {
|
||||
behat_config_manager::update_config_file('', true, '', $options['run-with-theme'], false, false);
|
||||
behat_config_manager::update_config_file('', true, '', $options['add-core-features-to-theme'], false, false);
|
||||
} else {
|
||||
// Update config file, ensuring we have up-to-date behat.yml.
|
||||
for ($i = $options['fromrun']; $i <= $options['torun']; $i++) {
|
||||
$CFG->behatrunprocess = $i;
|
||||
|
||||
// Update config file for each run.
|
||||
behat_config_manager::update_config_file('', true, $options['optimize-runs'], $options['run-with-theme'],
|
||||
behat_config_manager::update_config_file('', true, $options['optimize-runs'], $options['add-core-features-to-theme'],
|
||||
$options['parallel'], $i);
|
||||
}
|
||||
unset($CFG->behatrunprocess);
|
||||
|
@ -47,11 +47,13 @@ list($options, $unrecognized) = cli_get_params(
|
||||
'diag' => false,
|
||||
'tags' => '',
|
||||
'updatesteps' => false,
|
||||
'run-with-theme' => false,
|
||||
'optimize-runs' => '',
|
||||
'add-core-features-to-theme' => false,
|
||||
),
|
||||
array(
|
||||
'h' => 'help',
|
||||
'o' => 'optimize-runs',
|
||||
'a' => 'add-core-features-to-theme',
|
||||
)
|
||||
);
|
||||
|
||||
@ -73,8 +75,9 @@ Options:
|
||||
--disable Disables test environment
|
||||
--diag Get behat test environment status code
|
||||
--updatesteps Update feature step file.
|
||||
--optimize-runs Split features with specified tags in all parallel runs.
|
||||
--run-with-theme Run all core features with specified theme.
|
||||
|
||||
-o, --optimize-runs Split features with specified tags in all parallel runs.
|
||||
-a, --add-core-features-to-theme Add all core features to specified theme's
|
||||
|
||||
-h, --help Print out this help
|
||||
|
||||
@ -180,7 +183,7 @@ if ($options['install']) {
|
||||
}
|
||||
|
||||
// Enable test mode.
|
||||
behat_util::start_test_mode($options['run-with-theme'], $options['optimize-runs'], $parallel, $run);
|
||||
behat_util::start_test_mode($options['add-core-features-to-theme'], $options['optimize-runs'], $parallel, $run);
|
||||
|
||||
// This is only displayed once for parallel install.
|
||||
if (empty($run)) {
|
||||
|
@ -597,5 +597,77 @@ class tool_behat_manager_util_testcase extends advanced_testcase {
|
||||
// There are 6 step definitions.
|
||||
$this->assertCount(6, $config['default']['extensions']['Moodle\BehatExtension']['steps_definitions']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Behat config for blacklisted tags.
|
||||
*/
|
||||
public function test_core_features_to_include_in_specified_theme() {
|
||||
|
||||
$mockbuilder = $this->getMockBuilder('behat_config_util');
|
||||
$mockbuilder->setMethods(array('get_theme_test_directory', 'get_list_of_themes'));
|
||||
|
||||
$behatconfigutil = $mockbuilder->getMock();
|
||||
|
||||
$behatconfigutil = $this->get_behat_config_util($behatconfigutil);
|
||||
|
||||
// Check features when, no theme is specified.
|
||||
$behatconfigutil->set_theme_suite_to_include_core_features('');
|
||||
$config = $behatconfigutil->get_config_file_contents($this->corefatures, $this->corecontexts);
|
||||
$suites = $config['default']['suites'];
|
||||
foreach ($this->featurepaths as $themename => $paths) {
|
||||
$this->assertCount(count($paths), $suites[$themename]['paths']);
|
||||
|
||||
foreach ($paths as $key => $feature) {
|
||||
$this->assertContains($feature, $suites[$themename]['paths'][$key]);
|
||||
}
|
||||
}
|
||||
|
||||
// Check features when all themes are specified.
|
||||
$featurepaths = $this->featurepaths;
|
||||
$featurepaths['withfeatures'] = array_merge ($featurepaths['default'], $featurepaths['withfeatures']);
|
||||
$featurepaths['nofeatures'] = array_merge ($featurepaths['default'], $featurepaths['nofeatures']);
|
||||
|
||||
$behatconfigutil->set_theme_suite_to_include_core_features('ALL');
|
||||
$config = $behatconfigutil->get_config_file_contents($this->corefatures, $this->corecontexts);
|
||||
$suites = $config['default']['suites'];
|
||||
foreach ($featurepaths as $themename => $paths) {
|
||||
$this->assertCount(count($paths), $suites[$themename]['paths']);
|
||||
|
||||
foreach ($paths as $key => $feature) {
|
||||
$this->assertContains($feature, $suites[$themename]['paths'][$key]);
|
||||
}
|
||||
}
|
||||
|
||||
// Check features when all themes are specified.
|
||||
$featurepaths = $this->featurepaths;
|
||||
$featurepaths['withfeatures'] = array_merge ($featurepaths['default'], $featurepaths['withfeatures']);
|
||||
$featurepaths['nofeatures'] = array_merge ($featurepaths['default'], $featurepaths['nofeatures']);
|
||||
|
||||
$behatconfigutil->set_theme_suite_to_include_core_features('withfeatures, nofeatures');
|
||||
$config = $behatconfigutil->get_config_file_contents($this->corefatures, $this->corecontexts);
|
||||
$suites = $config['default']['suites'];
|
||||
foreach ($featurepaths as $themename => $paths) {
|
||||
$this->assertCount(count($paths), $suites[$themename]['paths']);
|
||||
|
||||
foreach ($paths as $key => $feature) {
|
||||
$this->assertContains($feature, $suites[$themename]['paths'][$key]);
|
||||
}
|
||||
}
|
||||
|
||||
// Check features when specified themes are passed..
|
||||
$featurepaths = $this->featurepaths;
|
||||
$featurepaths['nofeatures'] = array_merge ($featurepaths['default'], $featurepaths['nofeatures']);
|
||||
|
||||
$behatconfigutil->set_theme_suite_to_include_core_features('nofeatures');
|
||||
$config = $behatconfigutil->get_config_file_contents($this->corefatures, $this->corecontexts);
|
||||
$suites = $config['default']['suites'];
|
||||
foreach ($featurepaths as $themename => $paths) {
|
||||
$this->assertCount(count($paths), $suites[$themename]['paths']);
|
||||
|
||||
foreach ($paths as $key => $feature) {
|
||||
$this->assertContains($feature, $suites[$themename]['paths'][$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
@ -71,9 +71,9 @@ class behat_config_util {
|
||||
private $componentswithtests;
|
||||
|
||||
/**
|
||||
* @var bool keep track of theme to return suite with all core features included or not.
|
||||
* @var array|string keep track of theme to return suite with all core features included or not.
|
||||
*/
|
||||
private $themesuitewithallfeatures = false;
|
||||
private $themesuitewithallfeatures = array();
|
||||
|
||||
/**
|
||||
* @var string filter features which have tags.
|
||||
@ -90,14 +90,27 @@ class behat_config_util {
|
||||
*/
|
||||
private $currentrun = 0;
|
||||
|
||||
/**
|
||||
* @var string used to specify if behat should be initialised with all themes.
|
||||
*/
|
||||
const ALL_THEMES_TO_RUN = 'ALL';
|
||||
|
||||
/**
|
||||
* Set value for theme suite to include all core features. This should be used if your want all core features to be
|
||||
* run with theme.
|
||||
*
|
||||
* @param bool $val
|
||||
* @param bool $themetoset
|
||||
*/
|
||||
public function set_theme_suite_to_include_core_features($val) {
|
||||
$this->themesuitewithallfeatures = $val;
|
||||
public function set_theme_suite_to_include_core_features($themetoset) {
|
||||
// If no value passed to --run-with-theme or ALL is passed, then set core features for all themes.
|
||||
if (!empty($themetoset)) {
|
||||
if (is_number($themetoset) || is_bool($themetoset) || (self::ALL_THEMES_TO_RUN === strtoupper($themetoset))) {
|
||||
$this->themesuitewithallfeatures = self::ALL_THEMES_TO_RUN;
|
||||
} else {
|
||||
$this->themesuitewithallfeatures = explode(',', $themetoset);
|
||||
$this->themesuitewithallfeatures = array_map('trim', $this->themesuitewithallfeatures);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1027,7 +1040,8 @@ class behat_config_util {
|
||||
foreach ($themes as $theme) {
|
||||
// Get list of features which will be included in theme.
|
||||
// If theme suite with all features is set, then we want all core features to be part of theme suite.
|
||||
if ($this->themesuitewithallfeatures) {
|
||||
if ((is_string($this->themesuitewithallfeatures) && ($this->themesuitewithallfeatures === self::ALL_THEMES_TO_RUN)) ||
|
||||
in_array($theme, $this->themesuitewithallfeatures)) {
|
||||
// If there is no theme specific feature. Then it's just core features.
|
||||
if (empty($themefeatures[$theme]['features'])) {
|
||||
$themesuitefeatures = $features;
|
||||
|
@ -215,7 +215,7 @@ class behat_util extends testing_util {
|
||||
*
|
||||
* Stores a file in dataroot/behat to allow Moodle to switch
|
||||
* to the test environment when using cli-server.
|
||||
* @param bool $themesuitewithallfeatures if only theme specific features need to be included in the suite.
|
||||
* @param bool $themesuitewithallfeatures List themes to include core features.
|
||||
* @param string $tags comma separated tag, which will be given preference while distributing features in parallel run.
|
||||
* @param int $parallelruns number of parallel runs.
|
||||
* @param int $run current run.
|
||||
|
Loading…
x
Reference in New Issue
Block a user