35 lines
931 B
Python
35 lines
931 B
Python
|
def succeed(*cmds):
|
||
|
"""Returns the concatenated output of all cmds"""
|
||
|
return machine.succeed(*cmds)
|
||
|
|
||
|
|
||
|
def assert_matches(cmd, regexp):
|
||
|
out = succeed(cmd)
|
||
|
if not re.search(regexp, out):
|
||
|
raise Exception(f"Pattern '{regexp}' not found in '{out}'")
|
||
|
|
||
|
|
||
|
def assert_matches_exactly(cmd, regexp):
|
||
|
out = succeed(cmd)
|
||
|
if not re.fullmatch(regexp, out):
|
||
|
raise Exception(f"Pattern '{regexp}' doesn't match '{out}'")
|
||
|
|
||
|
|
||
|
def log_has_string(unit, str):
|
||
|
return f"journalctl -b --output=cat -u {unit} --grep='{str}'"
|
||
|
|
||
|
|
||
|
def assert_no_failure(unit):
|
||
|
"""Unit should not have failed since the system is running"""
|
||
|
machine.fail(log_has_string(unit, "Failed with result"))
|
||
|
|
||
|
|
||
|
def assert_running(unit):
|
||
|
machine.wait_for_unit(unit)
|
||
|
assert_no_failure(unit)
|
||
|
|
||
|
|
||
|
# Don't execute the following test suite when this script is running in interactive mode
|
||
|
if "is_interactive" in vars():
|
||
|
raise Exception()
|