summaryrefslogtreecommitdiff
path: root/subplot.py
diff options
context:
space:
mode:
Diffstat (limited to 'subplot.py')
-rw-r--r--subplot.py145
1 files changed, 14 insertions, 131 deletions
diff --git a/subplot.py b/subplot.py
index e586b53..9e16168 100644
--- a/subplot.py
+++ b/subplot.py
@@ -4,21 +4,6 @@ import subprocess
import time
-def create_file(ctx, filename=None):
- with open(filename, "wb") as f:
- f.write(get_file(filename))
-
-
-def touch_file(ctx, filename=None, y=None, mon=None, d=None, h=None, min=None, s=None):
- t = (int(y), int(mon), int(d), int(h), int(min), int(s), -1, -1, -1)
- ts = time.mktime(t)
- os.utime(filename, times=(ts, ts))
-
-
-def update_mtime(ctx, filename=None):
- os.utime(filename)
-
-
def try_docgen(ctx, md=None, output=None):
docgen = binary("sp-docgen")
runcmd(ctx, [docgen, md, "-o", output])
@@ -26,13 +11,13 @@ def try_docgen(ctx, md=None, output=None):
def run_docgen(ctx, md=None, output=None):
try_docgen(ctx, md=md, output=output)
- exit_code_zero(ctx)
+ exit_code_is(ctx, 0)
def run_docgen_with_date(ctx, md=None, output=None, date=None):
docgen = binary("sp-docgen")
runcmd(ctx, [docgen, md, "-o", output, "--date", date])
- exit_code_zero(ctx)
+ exit_code_is(ctx, 0)
def try_codegen_and_program(ctx, filename=None, testprog=None):
@@ -43,76 +28,52 @@ def try_codegen_and_program(ctx, filename=None, testprog=None):
def run_codegen_and_program(ctx, filename=None, testprog=None):
try_codegen_and_program(ctx, filename=filename, testprog=testprog)
- exit_code_zero(ctx)
+ exit_code_is(ctx, 0)
def run_codegen(ctx, filename=None, testprog=None):
codegen = binary("sp-codegen")
tmpldir = os.path.join(srcdir, "templates")
runcmd(ctx, [codegen, filename, "-o", testprog, "--templates", tmpldir])
- exit_code_zero(ctx)
+ exit_code_is(ctx, 0)
def run_python_test_program(ctx, testprog=None, pattern=None):
runcmd(ctx, ["python3", testprog, pattern])
- exit_code_zero(ctx)
+ exit_code_is(ctx, 0)
def run_bash_test_program(ctx, testprog=None, pattern=None):
runcmd(ctx, ["bash", testprog, pattern])
- exit_code_zero(ctx)
+ exit_code_is(ctx, 0)
def run_meta(ctx, filename=None):
meta = binary("sp-meta")
runcmd(ctx, [meta, filename])
- exit_code_zero(ctx)
+ exit_code_is(ctx, 0)
def run_pandoc_with_filter(ctx, filename=None, output=None):
sp_filter = binary("sp-filter")
runcmd(ctx, ["pandoc", "--filter", sp_filter, filename, "-o", output])
- exit_code_zero(ctx)
-
-
-def file_exists(ctx, filename=None):
- assert_eq(os.path.exists(filename), True)
-
-
-def file_does_not_exist(ctx, filename=None):
- assert_eq(os.path.exists(filename), False)
-
-
-def file_matches(ctx, filename=None, regex=None):
- with open(filename) as f:
- content = f.read()
- m = re.search(regex, content)
- if m is None:
- print("content:", repr(content))
- print("regex:", repr(regex))
- assert_eq(bool(m), True)
-
-
-def file_contains(ctx, filename=None, pattern=None):
- with open(filename) as f:
- content = f.read()
- assert_eq(pattern in content, True)
+ exit_code_is(ctx, 0)
def scenario_was_run(ctx, name=None):
- stdout_matches(ctx, pattern="\nscenario: {}\n".format(name))
+ stdout_contains(ctx, pattern="\nscenario: {}\n".format(name))
def scenario_was_not_run(ctx, name=None):
- stdout_does_not_match(ctx, pattern="\nscenario: {}\n".format(name))
+ stdout_does_not_contain(ctx, pattern="\nscenario: {}\n".format(name))
def step_was_run(ctx, keyword=None, name=None):
- stdout_matches(ctx, pattern="\n step: {} {}\n".format(keyword, name))
+ stdout_contains(ctx, pattern="\n step: {} {}\n".format(keyword, name))
def step_was_run_and_then(ctx, keyword1=None, name1=None, keyword2=None, name2=None):
- stdout_matches(
+ stdout_contains(
ctx,
pattern="\n step: {} {}\n step: {} {}".format(
keyword1, name1, keyword2, name2
@@ -121,7 +82,7 @@ def step_was_run_and_then(ctx, keyword1=None, name1=None, keyword2=None, name2=N
def cleanup_was_run(ctx, keyword1=None, name1=None, keyword2=None, name2=None):
- stdout_matches(
+ stdout_contains(
ctx,
pattern="\n cleanup: {} {}\n cleanup: {} {}\n".format(
keyword1, name1, keyword2, name2
@@ -130,86 +91,8 @@ def cleanup_was_run(ctx, keyword1=None, name1=None, keyword2=None, name2=None):
def cleanup_was_not_run(ctx, keyword=None, name=None):
- stdout_does_not_match(ctx, pattern="\n cleanup: {} {}\n".format(keyword, name))
-
-
-def exit_code_zero(ctx):
- if ctx.get("exit") != 0:
- print("context:", ctx.as_dict())
- assert_eq(ctx.get("exit"), 0)
-
-
-def exit_code_nonzero(ctx):
- assert_ne(ctx.get("exit"), 0)
+ stdout_does_not_contain(ctx, pattern="\n cleanup: {} {}\n".format(keyword, name))
def binary(basename):
return os.path.join(srcdir, "target", "debug", basename)
-
-
-def stdout_matches(ctx, pattern=None):
- stdout = ctx.get("stdout", "")
- if pattern not in stdout:
- print("pattern:", repr(pattern))
- print("stdout:", repr(stdout))
- print("ctx:", ctx.as_dict())
- assert_eq(pattern in stdout, True)
-
-
-def stdout_does_not_match(ctx, pattern=None):
- stdout = ctx.get("stdout", "")
- if pattern in stdout:
- print("pattern:", repr(pattern))
- print("stdout:", repr(stdout))
- print("ctx:", ctx.as_dict())
- assert_eq(pattern not in stdout, True)
-
-
-def stderr_matches(ctx, pattern=None):
- stderr = ctx.get("stderr", "")
- if pattern not in stderr:
- print("pattern:", repr(pattern))
- print("stderr:", repr(stderr))
- print("ctx:", ctx.as_dict())
- assert_eq(pattern in stderr, True)
-
-
-def stderr_does_not_match(ctx, pattern=None):
- stderr = ctx.get("stderr", "")
- if pattern not in stderr:
- print("pattern:", repr(pattern))
- print("stderr:", repr(stderr))
- print("ctx:", ctx.as_dict())
- assert_eq(pattern not in stderr, True)
-
-
-def _get_metadata(filename):
- st = os.lstat(filename)
- keys = ["st_dev", "st_gid", "st_ino", "st_mode", "st_mtime", "st_size", "st_uid"]
- return {key: getattr(st, key) for key in keys}
-
-
-def remember_metadata(ctx, filename=None):
- ctx["remembered-metadata"] = _get_metadata(filename)
-
-
-def has_same_metadata_as_remembered(ctx, filename=None):
- assert_eq(ctx["remembered-metadata"], _get_metadata(filename))
-
-
-def has_diff_metadata_than_remembered(ctx, filename=None):
- assert_ne(ctx["remembered-metadata"], _get_metadata(filename))
-
-
-def only_these_files_exist(ctx, filenames=None):
- filenames = filenames.replace(",", "").split()
- assert_eq(set(os.listdir(".")), set(filenames))
-
-
-def runcmd(ctx, argv):
- p = subprocess.Popen(argv, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- stdout, stderr = p.communicate("")
- ctx["argv"] = argv
- ctx["stdout"] = stdout.decode("utf-8")
- ctx["stderr"] = stderr.decode("utf-8")
- ctx["exit"] = p.returncode