def apply(self): failed = False for expr in self.evals: result = None if issubclass(type(expr), Lookup): result = expr.evaluate(self.resource) elif type(expr) == str: result = Template.native_eval(expr, self.resource) else: result = expr self.echo("%s => %s" % (expr, result)) if not result: failed = True variables = self.resource.get_variables() for (k,v) in self.variable_checks.items(): if k not in variables: self.echo("%s is not defined" % k) failed = True else: actual = variables[k] if (v != actual): self.echo("%s is %s (type:%s), should be %s (type:%s)" % (k, v, type(v), actual, type(actual))) failed = True else: self.echo("%s is %s" % (k, v)) if not failed: return self.ok() else: return self.fatal("assertions failed")
def evaluate(self, resource): return Template.native_eval(self.expr, resource)