def _create_test_plan_from_registry(groups):
    discover_import_tests(get_basepath(), tests_directory)
    define_custom_groups()
    for one in groups:
        register_system_test_cases(one)
    return TestPlan.create_from_registry(DEFAULT_REGISTRY)
示例#2
0
from gates_tests.helpers.utils import \
    map_test_review_in_openstack_puppet_projects

from system_test import register_system_test_cases
from system_test import get_groups
from system_test import define_custom_groups
from system_test import discover_import_tests
from system_test import tests_directory
from system_test import collect_yamls
from system_test import get_path_to_config
from system_test import get_list_confignames
from system_test import get_basepath

from system_test.core.repository import split_group_config

basedir = get_basepath()


def print_explain(names):
    groups_nums = get_groups()
    if not isinstance(names, list):
        names = [names]
    out = []
    for name in [split_group_config(i)[0] if split_group_config(i) else i
                 for i in names]:
        for i in groups_nums[name]:
            if hasattr(i, 'home'):
                out.append((i.home._proboscis_entry_.parent.home, i.home))
            else:
                out.append(i)
    print(pretty_log(out))
def _create_test_plan_from_registry(groups):
    discover_import_tests(get_basepath(), tests_directory)
    define_custom_groups()
    for one in groups:
        register_system_test_cases(one)
    return TestPlan.create_from_registry(DEFAULT_REGISTRY)
def get_tests_descriptions(milestone_id, tests_include, tests_exclude, groups,
                           default_test_priority):
    discover_import_tests(get_basepath(), tests_directory)
    define_custom_groups()
    for one in groups:
        register_system_test_cases(one)
    plan = TestPlan.create_from_registry(DEFAULT_REGISTRY)
    all_plan_tests = plan.tests[:]

    tests = []

    for jenkins_suffix in groups:
        group = groups[jenkins_suffix]
        plan.filter(group_names=[group])
        for case in plan.tests:
            if not case.entry.info.enabled:
                continue
            home = case.entry.home
            if not hasattr(case.entry, 'parent'):
                # Not a real case, some stuff needed by template based tests
                continue
            parent_home = case.entry.parent.home
            case_state = case.state
            if issubclass(parent_home, ActionTest):
                case_name = parent_home.__name__
                test_group = parent_home.__name__
                if any([x['custom_test_group'] == test_group for x in tests]):
                    continue
            else:
                case_name = home.func_name
                test_group = case.entry.home.func_name
            if tests_include:
                if tests_include not in case_name:
                    logger.debug("Skipping '{0}' test because it doesn't "
                                 "contain '{1}' in method name".format(
                                     case_name, tests_include))
                    continue
            if tests_exclude:
                if tests_exclude in case_name:
                    logger.debug("Skipping '{0}' test because it contains"
                                 " '{1}' in method name".format(
                                     case_name, tests_exclude))
                    continue

            if issubclass(parent_home, ActionTest):
                docstring = parent_home.__doc__.split('\n')
                case_state.instance._load_config()
                configuration = case_state.instance.config_name
                docstring[0] = "{0} on {1}".format(docstring[0], configuration)
                docstring = '\n'.join(docstring)
            else:
                docstring = home.func_doc or ''
                configuration = None
            docstring = '\n'.join([s.strip() for s in docstring.split('\n')])

            steps = [{
                "content": s,
                "expected": "pass"
            } for s in docstring.split('\n') if s and s[0].isdigit()]

            test_duration = re.search(r'Duration\s+(\d+[s,m])\b', docstring)
            title = docstring.split('\n')[0] or case.entry.home.func_name

            if case.entry.home.func_name in GROUPS_TO_EXPAND:
                """Expand specified test names with the group names that are
                   used in jenkins jobs where this test is started.
                """
                title = ' - '.join([title, jenkins_suffix])
                test_group = '_'.join(
                    [case.entry.home.func_name, jenkins_suffix])