Exemplo n.º 1
0
 def _has_both_parameters_and_variants(self):
     if not self.test_parameters:
         return False
     for variant in self.variants.itertests():
         var = variant.get("variant")
         if not is_empty_variant(var):
             return True
     return False
Exemplo n.º 2
0
    def _create_params(runnable):
        """Create params for the test"""
        if runnable.variant is None:
            return None

        # rebuild the variant tree
        variant_tree_nodes = [TreeNodeEnvOnly(path, env) for path, env
                              in runnable.variant['variant']]

        if not is_empty_variant(variant_tree_nodes):
            tree_nodes = variant_tree_nodes
            paths = runnable.variant['paths']
            return tree_nodes, paths
Exemplo n.º 3
0
    def _template_to_factory(test_parameters, template, variant):
        """
        Applies test params from variant to the test template

        :param test_parameters: a simpler set of parameters (currently
                                given to the run command via "-p" parameters)
        :param template: a test template, containing the class name,
                         followed by parameters to the class
        :type template: tuple
        :param variant: variant to be applied, usually containing
                        the keys: paths, variant and variant_id
        :type variant: dict
        :return: tuple(new_test_factory, applied_variant)
        """
        var = variant.get("variant")
        paths = variant.get("paths")
        empty_variants = varianter.is_empty_variant(var)

        original_params_to_klass = template[1]
        if "params" not in original_params_to_klass:
            params_to_klass = original_params_to_klass.copy()
            if test_parameters and empty_variants:
                var[0] = tree.TreeNode().get_node("/", True)
                var[0].value = test_parameters
                paths = ["/"]
            params_to_klass["params"] = (var, paths)
            factory = [template[0], params_to_klass]
            return factory, variant

        if not empty_variants:
            raise NotImplementedError(
                "Specifying test params from test loader "
                "and from varianter at the same time is "
                "not yet supported. Please remove either "
                "variants defined by the varianter (%s) "
                "or make the test loader of test %s to "
                "not to fill variants." % (variant, template))

        return template, {
            "variant": var,
            "variant_id": varianter.generate_variant_id(var),
            "paths": paths
        }