def pytest_generate_tests()

in conftest.py [0:0]


def pytest_generate_tests(metafunc):
    import re

    name_regex = re.compile(r"\s*(?P<name>[a-z0-9\-\_]+)\s*$")

    if "application" in metafunc.fixturenames:
        from ramble.main import RambleCommand

        list_cmd = RambleCommand("list")

        all_applications = []
        repo_apps = list_cmd().split("\n")

        for app_str in repo_apps:
            m = name_regex.match(app_str)
            if m:
                all_applications.append(m.group("name"))

        metafunc.parametrize("application", all_applications)

    if "modifier" in metafunc.fixturenames:
        from ramble.main import RambleCommand

        list_cmd = RambleCommand("list")

        all_modifiers = []
        repo_mods = list_cmd("--type", "modifiers").split("\n")

        for mod_str in repo_mods:
            m = name_regex.match(mod_str)
            if m:
                all_modifiers.append(m.group("name"))

        metafunc.parametrize("modifier", all_modifiers)

    if "mock_modifier" in metafunc.fixturenames:
        obj_type = ramble.repository.ObjectTypes.modifiers
        repo_path = ramble.repository.Repo(ramble.paths.mock_builtin_path, obj_type)

        all_modifiers = []
        for mod_name in repo_path.all_object_names():
            all_modifiers.append(mod_name)

        metafunc.parametrize("mock_modifier", all_modifiers)

    if "package_manager" in metafunc.fixturenames:
        from ramble.main import RambleCommand

        list_cmd = RambleCommand("list")

        all_package_managers = ["None"]
        repo_pms = list_cmd("--type", "package_managers").split("\n")

        for pm_str in repo_pms:
            m = name_regex.match(pm_str)
            if m:
                all_package_managers.append(m.group("name"))

        metafunc.parametrize("package_manager", all_package_managers)

    if "mock_package_managers" in metafunc.fixturenames:
        obj_type = ramble.repository.ObjectTypes.package_managers
        repo_path = ramble.repository.Repo(ramble.paths.mock_builtin_path, obj_type)

        all_package_managers = ["None"]
        for mod_name in repo_path.all_object_names():
            all_package_managers.append(mod_name)

        metafunc.parametrize("mock_package_managers", all_package_managers)

    if "workflow_manager" in metafunc.fixturenames:
        from ramble.main import RambleCommand

        list_cmd = RambleCommand("list")

        all_workflow_managers = ["None"]
        repo_pms = list_cmd("--type", "workflow_managers").split("\n")

        for pm_str in repo_pms:
            m = name_regex.match(pm_str)
            if m:
                all_workflow_managers.append(m.group("name"))

        metafunc.parametrize("workflow_manager", all_workflow_managers)

    if "mock_workflow_managers" in metafunc.fixturenames:
        obj_type = ramble.repository.ObjectTypes.workflow_managers
        repo_path = ramble.repository.Repo(ramble.paths.mock_builtin_path, obj_type)

        all_workflow_managers = ["None"]
        for mod_name in repo_path.all_object_names():
            all_workflow_managers.append(mod_name)

        metafunc.parametrize("mock_workflow_managers", all_workflow_managers)

    if "config_section" in metafunc.fixturenames:
        from ramble.main import RambleCommand

        config_cmd = RambleCommand("config")

        all_sections = []
        config_sections = config_cmd("list").split(" ")

        for section_str in config_sections:
            if section_str != "":
                all_sections.append(section_str.strip())

        metafunc.parametrize("config_section", all_sections)