Example #1
0
    def test_modules_can_be_added(self):
        v = Variant("variant name")
        v.modules(["enterprise", "enterprise2"])

        obj = v.to_map()
        assert "enterprise" in obj["modules"]
        assert "enterprise2" in obj["modules"]
Example #2
0
    def test_tasks_can_be_added(self):
        v = Variant("variant name")
        v.task(TaskSpec("task 0")).tasks(
            [TaskSpec("task 1"), TaskSpec("task 2")])

        obj = v.to_map()
        assert "task 0" == obj["tasks"][0]["name"]
        assert "task 1" == obj["tasks"][1]["name"]
        assert "task 2" == obj["tasks"][2]["name"]
Example #3
0
    def test_flat_values_in_map(self):
        v = Variant("variant name")
        v.display_name("display name").run_on("distro").batch_time(100)

        obj = v.to_map()
        assert "variant name" == obj["name"]
        assert "display name" == obj["display_name"]
        assert ["distro"] == obj["run_on"]
        assert 100 == obj["batchtime"]
Example #4
0
    def test_display_tasks_can_be_added(self):
        v = Variant("variant name")
        v.display_task(DisplayTaskDefinition("display task 0"))\
            .display_tasks([DisplayTaskDefinition("display task 1"),
                            DisplayTaskDefinition("display task 2")])

        obj = v.to_map()
        assert "display task 0" == obj["display_tasks"][0]["name"]
        assert "display task 1" == obj["display_tasks"][1]["name"]
        assert "display task 2" == obj["display_tasks"][2]["name"]
Example #5
0
def _find_task(build_variant_config: Variant, task_name: str) -> Task:
    """
    Look up shrub config for task.

    :param build_variant_config: Config of build variant to collect task info from.
    :param task_name: Name of task to get info for.
    :return: Task configuration.
    """
    task = build_variant_config.get_task(task_name)
    if not task:
        task = build_variant_config.get_task(task_name + "_gen")
    return task
Example #6
0
def _get_evg_task_config(
        selected_tests_variant_expansions: Dict[str, str],
        task_name: str,
        build_variant_config: Variant,
) -> Dict[str, Any]:
    """
    Look up task config of the task to be generated.

    :param selected_tests_variant_expansions: Expansions of the selected-tests variant.
    :param task_name: Task to get info for.
    :param build_variant_config: Config of build variant to collect task info from.
    :return: Task configuration values.
    """
    task = build_variant_config.get_task(task_name)
    if task.is_generate_resmoke_task:
        task_vars = task.generate_resmoke_tasks_command["vars"]
    else:
        task_vars = task.run_tests_command["vars"]
        task_vars.update({"fallback_num_sub_suites": "1"})

    suite_name = ResmokeArgs.get_arg(task_vars["resmoke_args"], "suites")
    if suite_name:
        task_vars.update({"suite": suite_name})

    # the suites argument will run all tests in a suite even when individual
    # tests are specified in resmoke_args, so we remove it
    resmoke_args_without_suites = ResmokeArgs.remove_arg(task_vars["resmoke_args"], "suites")
    task_vars["resmoke_args"] = resmoke_args_without_suites

    selected_tests_task_config = _get_selected_tests_task_config(selected_tests_variant_expansions)

    return {
        "task_name": task.name, "build_variant": build_variant_config.name, **task_vars,
        **selected_tests_task_config
    }
Example #7
0
    def test_expansions_can_be_added(self):
        v = Variant("variant name")
        v.expansion("k0", "v0")
        v.expansions({"k1": "v1", "k2": "v2"})

        obj = v.to_map()
        assert "v0" in obj["expansions"]["k0"]
        assert "v1" in obj["expansions"]["k1"]
        assert "v2" in obj["expansions"]["k2"]
Example #8
0
    def test_invalid_tasks_cannot_be_added(self):
        v = Variant("variant name")
        with pytest.raises(TypeError):
            v.task("I'm not really a task")

        with pytest.raises(TypeError):
            v.tasks(TaskSpec("not array"))
Example #9
0
    def test_invalid_modules_cannot_be_added(self):
        v = Variant("variant name")
        with pytest.raises(TypeError):
            v.module(25)

        with pytest.raises(TypeError):
            v.modules(TaskSpec("not array"))
Example #10
0
    def test_invalid_expansion(self):
        v = Variant("variant name")
        with pytest.raises(TypeError):
            v.expansion(42, "v")

        with pytest.raises(TypeError):
            v.expansion("k", 42)
Example #11
0
    def variant(self, name):
        """
        Get a variant the variant list by name. If the variant
        name is not found, create a new variant and insert it into the
        variant list.

        :param name: name of variant.
        :return: variant specified.
        """
        if not isinstance(name, str):
            raise TypeError("variant only accepts strings")

        v = _find_name_in_list(self._variants, name)
        if v:
            return v

        v = Variant(name)
        self._variants.append(v)
        return v
Example #12
0
 def test_invalid_run_on(self):
     v = Variant("variant name")
     with pytest.raises(TypeError):
         v.run_on(42)
Example #13
0
    def test_module_can_be_added(self):
        v = Variant("variant name")
        v.module("enterprise")

        obj = v.to_map()
        assert ["enterprise"] == obj["modules"]
Example #14
0
 def test_invalid_batch_time(self):
     v = Variant("variant name")
     with pytest.raises(TypeError):
         v.batch_time("hello World")
Example #15
0
 def test_invalid_display_name(self):
     v = Variant("variant name")
     with pytest.raises(TypeError):
         v.display_name(42)
Example #16
0
 def test_invalid_name(self):
     with pytest.raises(TypeError):
         Variant(42)
Example #17
0
    def test_empty_command_definition(self):
        v = Variant("variant name")

        assert "variant name" == v.get_name()
        assert {"name": "variant name"} == v.to_map()
Example #18
0
 def test_invalid_display_tasks(self):
     v = Variant("variant name")
     with pytest.raises(TypeError):
         v.display_tasks("hello world")