import json
import os
import shutil
wrapper = """\
#!/bin/sh
set -eu
exec '{srcdir}/target/debug/{prog}' --resources '{srcdir}/share' "$@"
"""
def install_subplot(ctx):
runcmd_prepend_to_path = globals()["runcmd_prepend_to_path"]
bindir = os.environ.get("SUBPLOT_DIR")
assert (
bindir is not None
), "MUST set SUBPLOT_DIR to directory where Subplot binaries are installed"
runcmd_prepend_to_path(ctx, dirname=bindir)
def uninstall_subplot(ctx):
if "bin-dir" in ctx:
bindir = ctx["bin-dir"]
if os.path.exists(bindir):
shutil.rmtree(bindir)
def scenario_was_run(ctx, name=None):
runcmd_stdout_contains = globals()["runcmd_stdout_contains"]
runcmd_stdout_contains(ctx, text="\nscenario: {}\n".format(name))
def scenario_was_not_run(ctx, name=None):
runcmd_stdout_doesnt_contain = globals()["runcmd_stdout_doesnt_contain"]
runcmd_stdout_doesnt_contain(ctx, text="\nscenario: {}\n".format(name))
def step_was_run(ctx, keyword=None, name=None):
runcmd_stdout_contains = globals()["runcmd_stdout_contains"]
runcmd_stdout_contains(ctx, text="\n step: {} {}\n".format(keyword, name))
def step_was_run_and_then(ctx, keyword1=None, name1=None, keyword2=None, name2=None):
runcmd_stdout_contains = globals()["runcmd_stdout_contains"]
runcmd_stdout_contains(
ctx,
text="\n step: {} {}\n step: {} {}".format(keyword1, name1, keyword2, name2),
)
def cleanup_was_run(ctx, keyword1=None, name1=None, keyword2=None, name2=None):
runcmd_stdout_contains = globals()["runcmd_stdout_contains"]
runcmd_stdout_contains(
ctx,
text="\n cleanup: {} {}\n cleanup: {} {}\n".format(
keyword1, name1, keyword2, name2
),
)
def cleanup_was_not_run(ctx, keyword=None, name=None):
runcmd_stdout_doesnt_contain = globals()["runcmd_stdout_doesnt_contain"]
runcmd_stdout_doesnt_contain(ctx, text="\n cleanup: {} {}\n".format(keyword, name))
def json_output_matches_file(ctx, filename=None):
assert_dict_eq = globals()["assert_dict_eq"]
ns = ctx.declare("_runcmd")
actual = json.loads(ns["stdout"])
expected = json.load(open(filename))
assert_dict_eq(actual, expected)
def file_ends_in_zero_newlines(ctx, filename=None):
assert_ne = globals()["assert_ne"]
content = open(filename, "r").read()
assert_ne(content[-1], "\n")
def file_ends_in_one_newline(ctx, filename=None):
assert_eq = globals()["assert_eq"]
assert_ne = globals()["assert_ne"]
content = open(filename, "r").read()
assert_eq(content[-1], "\n")
assert_ne(content[-2], "\n")
def file_ends_in_two_newlines(ctx, filename=None):
assert_eq = globals()["assert_eq"]
content = open(filename, "r").read()
assert_eq(content[-2:], "\n\n")
def binary(basename):
srcdir = globals()["srcdir"]
return os.path.join(srcdir, "target", "debug", basename)
def do_nothing(ctx):
pass