Source code for catcher.steps.stop
from catcher.steps.check import Operator
from catcher.steps.step import Step, update_variables
[docs]class StopException(Exception):
def __init__(self, message):
super().__init__(message)
[docs]class Stop(Step):
"""
Stop a test without error
:Input:
:if: condition
:Examples:
Stop execution if migration was applied.
::
steps:
- postgres:
request:
conf: '{{ migrations_postgres }}'
query: "select count(*) from migration where hash = '{{ TEST_NAME }}';"
register: {result: '{{ OUTPUT }}'}
tag: check
name: 'check_migration_{{ TEST_NAME }}'
- stop:
if:
equals: {the: '{{ result }}', is: 1}
- postgres:
request:
conf: '{{ migrations_postgres }}'
query: "insert into migration(id, hash) values(1, '{{ TEST_NAME }}');"
"""
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.end_if = kwargs['if']
[docs] @update_variables
def action(self, includes: dict, variables: dict) -> dict:
operator = Operator.find_operator(self.end_if)
if operator.operation(variables):
raise StopException(str(self.end_if) + ' fired')
else:
return variables