Example #1
0
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
Example #3
0
File: core.py Project: ndebuhr/yay
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()
Example #4
0
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()
Example #5
0
File: core.py Project: ndebuhr/yay
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)
Example #6
0
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