def assert_that(data, context): condition = conditions.parse_condition(data) if condition.is_true(): return message = "\n{}".format(format_yaml(condition.as_dict())) if type(condition) is conditions.Equals: message = f"\nExpected: {condition.equals}\nActual: {condition.object}" assert False, message
def handle_until(self, until, output): if is_dict(until): until_copy = copy.deepcopy(until) until_copy = vars.resolve_variables(until_copy, self.variables) condition = conditions.parse_condition(until_copy) running = not condition.is_true() else: running = (output != until) return running
def if_statement(data, variables, break_on_success=False): actions = get_parameter(data, 'Do') del data['Do'] data = vars.resolve_variables(data, variables) condition = parse_condition(data) if condition.is_true(): execute_command(process_task, actions, variables) if break_on_success: raise FlowBreak()
def if_statement(data, context, break_on_success=False): cons = conditions.pop_conditions(data) cons = vars.resolve_variables(cons, context.variables) condition = conditions.parse_condition(cons) if condition.is_true(): context.run_task({'Do': data}) # context.run_task({'Do': actions}) if break_on_success: raise FlowBreak()
def repeat(data, variables): actions = get_parameter(data, 'Do') until = get_parameter(data, 'Until') finished = False while not finished: result = execute_command(do, actions, variables) if is_dict(until): until_copy = copy.deepcopy(until) until_copy = vars.resolve_variables(until_copy, variables) condition = parse_condition(until_copy) finished = condition.is_true() else: finished = (result == until)
def repeat(data, context): actions = get_parameter(data, 'Do') until = get_parameter(data, 'Until') finished = False while not finished: result = context.run_task({'Do': actions}) if is_dict(until): until_copy = copy.deepcopy(until) until_copy = vars.resolve_variables(until_copy, context.variables) condition = conditions.parse_condition(until_copy) finished = condition.is_true() else: finished = (result == until)
def run_step(self, step): command = step['command'] # Handle flow control if 'Do' == command: self.run_next_step(step) return if 'For each' == command: self.expand_for_each(step) self.run_next_step(step) return if 'If' == command or 'If any' == command: data = vars.resolve_variables(step['data'], self.variables) condition = conditions.parse_condition(data) if condition.is_true(): self.run_next_step(step) if 'If any' == command: raise FlowBreak() return if 'Repeat' == command: step['steps'] = copy.deepcopy(step['data']) self.run_next_step(step) return # Unknown command if command not in self.command_handlers: raise YayException("Unknown action: {}".format(command)) # Execute command output = self.run_single_command(self.command_handlers[command], step['data']) if output: step['output'] = output return output