diff options
Diffstat (limited to 'subplot.py')
-rw-r--r-- | subplot.py | 145 |
1 files changed, 14 insertions, 131 deletions
@@ -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 |