summaryrefslogtreecommitdiff
path: root/subplot.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2020-05-08 11:00:14 +0300
committerLars Wirzenius <liw@liw.fi>2020-05-08 11:01:18 +0300
commit4af1ba54ed096e64c61dfc12ec1138a9a0006481 (patch)
treee88aabf3062fb5c9c7dc7f7eb839de00bba795fe /subplot.py
parentd24db0031b097d7cd4240a02956995703aa4d48f (diff)
downloadsubplot-4af1ba54ed096e64c61dfc12ec1138a9a0006481.tar.gz
Add: scenarios for test programs running only chosen scenarios
Diffstat (limited to 'subplot.py')
-rw-r--r--subplot.py31
1 files changed, 28 insertions, 3 deletions
diff --git a/subplot.py b/subplot.py
index 2b9998f..2b91497 100644
--- a/subplot.py
+++ b/subplot.py
@@ -30,13 +30,27 @@ def run_docgen_with_date(ctx, md=None, output=None, date=None):
runcmd(ctx, [docgen, md, '-o', output, '--date', date])
exit_code_zero(ctx)
-def try_codegen(ctx, filename=None):
+def try_codegen_and_program(ctx, filename=None):
codegen = binary('sp-codegen')
tmpldir = os.path.join(srcdir, 'templates')
runcmd(ctx, [codegen, filename, '-o', 'test.py', '--run', '--templates', tmpldir])
-def run_codegen(ctx, filename=None):
- try_codegen(ctx, filename=filename)
+def run_codegen_and_program(ctx, filename=None):
+ try_codegen_and_program(ctx, filename=filename)
+ exit_code_zero(ctx)
+
+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)
+
+def run_python_test_program(ctx, testprog=None, pattern=None):
+ runcmd(ctx, ['python3', testprog, pattern])
+ exit_code_zero(ctx)
+
+def run_bash_test_program(ctx, testprog=None, pattern=None):
+ runcmd(ctx, ['bash', testprog, pattern])
exit_code_zero(ctx)
def run_meta(ctx, filename=None):
@@ -72,6 +86,9 @@ def file_contains(ctx, filename=None, pattern=None):
def scenario_was_run(ctx, name=None):
stdout_matches(ctx, pattern='\nscenario: {}\n'.format(name))
+def scenario_was_not_run(ctx, name=None):
+ stdout_does_not_match(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))
@@ -94,6 +111,14 @@ def stdout_matches(ctx, pattern=None):
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 _get_metadata(filename):
st = os.lstat(filename)
keys = [