1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
import json
import os
import re
import subprocess
import time
def try_docgen(ctx, md=None, output=None):
docgen = binary("sp-docgen")
runcmd(ctx, [docgen, md, "-o", output])
def run_docgen(ctx, md=None, output=None):
try_docgen(ctx, md=md, output=output)
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_is(ctx, 0)
def try_codegen_and_program(ctx, filename=None, testprog=None):
codegen = binary("sp-codegen")
tmpldir = os.path.join(srcdir, "templates")
runcmd(ctx, [codegen, filename, "-o", testprog, "--run", "--templates", tmpldir])
def run_codegen_and_program(ctx, filename=None, testprog=None):
try_codegen_and_program(ctx, filename=filename, testprog=testprog)
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_is(ctx, 0)
def run_python_test_program(ctx, testprog=None, pattern=None):
runcmd(ctx, ["python3", testprog, pattern])
exit_code_is(ctx, 0)
def run_bash_test_program(ctx, testprog=None, pattern=None):
runcmd(ctx, ["bash", testprog, pattern])
exit_code_is(ctx, 0)
def run_meta(ctx, filename=None):
meta = binary("sp-meta")
runcmd(ctx, [meta, filename])
exit_code_is(ctx, 0)
def run_meta_json(ctx, filename=None):
meta = binary("sp-meta")
runcmd(ctx, [meta, filename, "-o", "json"])
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_is(ctx, 0)
def scenario_was_run(ctx, name=None):
stdout_contains(ctx, pattern="\nscenario: {}\n".format(name))
def scenario_was_not_run(ctx, name=None):
stdout_does_not_contain(ctx, pattern="\nscenario: {}\n".format(name))
def step_was_run(ctx, keyword=None, name=None):
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_contains(
ctx,
pattern="\n step: {} {}\n step: {} {}".format(
keyword1, name1, keyword2, name2
),
)
def cleanup_was_run(ctx, keyword1=None, name1=None, keyword2=None, name2=None):
stdout_contains(
ctx,
pattern="\n cleanup: {} {}\n cleanup: {} {}\n".format(
keyword1, name1, keyword2, name2
),
)
def cleanup_was_not_run(ctx, keyword=None, name=None):
stdout_does_not_contain(ctx, pattern="\n cleanup: {} {}\n".format(keyword, name))
def json_output_matches_file(ctx, filename=None):
actual = json.loads(ctx["stdout"])
expected = json.load(open(filename))
assert_dict_eq(actual, expected)
def binary(basename):
return os.path.join(srcdir, "target", "debug", basename)
|