protected function get_behat_features_for_theme($theme) {
        global $CFG;

        // Get list of features defined by theme.
        $themefeatures = $this->get_tests_for_theme($theme, 'features');
        $themeblacklistfeatures = $this->get_blacklisted_tests_for_theme($theme, 'features');
        $themeblacklisttags = $this->get_blacklisted_tests_for_theme($theme, 'tags');

        // Mobile app tests are not theme-specific, so run only for the default theme (and if
        // configured).
        if ((empty($CFG->behat_ionic_dirroot) && empty($CFG->behat_ionic_wwwroot)) ||
                $theme !== $this->get_default_theme()) {
            $themeblacklisttags[] = '@app';
        }

        // Clean feature key and path.
        $features = array();
        $blacklistfeatures = array();

        foreach ($themefeatures as $themefeature) {
            list($featurekey, $featurepath) = $this->get_clean_feature_key_and_path($themefeature);
            $features[$featurekey] = $featurepath;
        }

        foreach ($themeblacklistfeatures as $themeblacklistfeature) {
            list($blacklistfeaturekey, $blacklistfeaturepath) = $this->get_clean_feature_key_and_path($themeblacklistfeature);
            $blacklistfeatures[$blacklistfeaturekey] = $blacklistfeaturepath;
        }

        // If blacklist tags then add those features to list.
        if (!empty($themeblacklisttags)) {
            // Remove @ if given, so we are sure we have only tag names.
            $themeblacklisttags = array_map(function($v) {
                return ltrim($v, '@');
            }, $themeblacklisttags);

            $themeblacklisttags = '@' . implode(',@', $themeblacklisttags);
            $blacklistedfeatureswithtag = $this->filtered_features_with_tags($this->get_components_features(),
                $themeblacklisttags);

            // Add features with blacklisted tags.
            if (!empty($blacklistedfeatureswithtag)) {
                foreach ($blacklistedfeatureswithtag as $themeblacklistfeature) {
                    list($key, $path) = $this->get_clean_feature_key_and_path($themeblacklistfeature);
                    $blacklistfeatures[$key] = $path;
                }
            }
        }

        ksort($features);

        $retval = array(
            'blacklistfeatures' => $blacklistfeatures,
            'features' => $features
        );

        return $retval;
    }
protected function get_behat_features_for_theme($theme) {
        global $CFG;

        // Get list of features defined by theme.
        $themefeatures = $this->get_tests_for_theme($theme, 'features');
        $themeblacklistfeatures = $this->get_blacklisted_tests_for_theme($theme, 'features');
        $themeblacklisttags = $this->get_blacklisted_tests_for_theme($theme, 'tags');

        // Mobile app tests are not theme-specific, so run only for the default theme (and if
        // configured).
        if ((empty($CFG->behat_ionic_dirroot) && empty($CFG->behat_ionic_wwwroot)) ||
                $theme !== $this->get_default_theme()) {
            $themeblacklisttags[] = '@app';
        }

        // Clean feature key and path.
        $features = array();
        $blacklistfeatures = array();

        foreach ($themefeatures as $themefeature) {
            list($featurekey, $featurepath) = $this->get_clean_feature_key_and_path($themefeature);
            $features[$featurekey] = $featurepath;
        }

        foreach ($themeblacklistfeatures as $themeblacklistfeature) {
            list($blacklistfeaturekey, $blacklistfeaturepath) = $this->get_clean_feature_key_and_path($themeblacklistfeature);
            $blacklistfeatures[$blacklistfeaturekey] = $blacklistfeaturepath;
        }

        // If blacklist tags then add those features to list.
        if (!empty($themeblacklisttags)) {
            // Remove @ if given, so we are sure we have only tag names.
            $themeblacklisttags = array_map(function($v) {
                return ltrim($v, '@');
            }, $themeblacklisttags);

            $themeblacklisttags = '@' . implode(',@', $themeblacklisttags);
            $blacklistedfeatureswithtag = $this->filtered_features_with_tags($this->get_components_features(),
                $themeblacklisttags);

            // Add features with blacklisted tags.
            if (!empty($blacklistedfeatureswithtag)) {
                foreach ($blacklistedfeatureswithtag as $themeblacklistfeature) {
                    list($key, $path) = $this->get_clean_feature_key_and_path($themeblacklistfeature);
                    $blacklistfeatures[$key] = $path;
                }
            }
        }

        ksort($features);

        $retval = array(
            'blacklistfeatures' => $blacklistfeatures,
            'features' => $features
        );

        return $retval;
    }
protected function get_behat_features_for_theme ( $ theme ) { global $ CFG ; // Get list of features defined by theme. $ themefeatures = $ this -> get_tests_for_theme ( $ theme , 'features' ) ; $ themeblacklistfeatures = $ this -> get_blacklisted_tests_for_theme ( $ theme , 'features' ) ; $ themeblacklisttags = $ this -> get_blacklisted_tests_for_theme ( $ theme , 'tags' ) ; // Mobile app tests are not theme-specific, so run only for the default theme (and if // configured). if ( ( empty ( $ CFG -> behat_ionic_dirroot ) && empty ( $ CFG -> behat_ionic_wwwroot ) ) || $ theme !== $ this -> get_default_theme ( ) ) { $ themeblacklisttags [ ] = '@app' ; } // Clean feature key and path. $ features = array ( ) ; $ blacklistfeatures = array ( ) ; foreach ( $ themefeatures as $ themefeature ) { list ( $ featurekey , $ featurepath ) = $ this -> get_clean_feature_key_and_path ( $ themefeature ) ; $ features [ $ featurekey ] = $ featurepath ; } foreach ( $ themeblacklistfeatures as $ themeblacklistfeature ) { list ( $ blacklistfeaturekey , $ blacklistfeaturepath ) = $ this -> get_clean_feature_key_and_path ( $ themeblacklistfeature ) ; $ blacklistfeatures [ $ blacklistfeaturekey ] = $ blacklistfeaturepath ; } // If blacklist tags then add those features to list. if ( ! empty ( $ themeblacklisttags ) ) { // Remove @ if given, so we are sure we have only tag names. $ themeblacklisttags = array_map ( function ( $ v ) { return ltrim ( $ v , '@' ) ; } , $ themeblacklisttags ) ; $ themeblacklisttags = '@' . implode ( ',@' , $ themeblacklisttags ) ; $ blacklistedfeatureswithtag = $ this -> filtered_features_with_tags ( $ this -> get_components_features ( ) , $ themeblacklisttags ) ; // Add features with blacklisted tags. if ( ! empty ( $ blacklistedfeatureswithtag ) ) { foreach ( $ blacklistedfeatureswithtag as $ themeblacklistfeature ) { list ( $ key , $ path ) = $ this -> get_clean_feature_key_and_path ( $ themeblacklistfeature ) ; $ blacklistfeatures [ $ key ] = $ path ; } } } ksort ( $ features ) ; $ retval = array ( 'blacklistfeatures' => $ blacklistfeatures , 'features' => $ features ) ; return $ retval ; }
Return list of blacklisted behat features for theme and features defined by theme only.

@param string $theme theme name.
@return array ($blacklistfeatures, $blacklisttags, $features)
Return list of blacklisted behat features for theme and features defined by theme only .