summaryrefslogtreecommitdiff
path: root/decoder/pdtest
diff options
context:
space:
mode:
Diffstat (limited to 'decoder/pdtest')
-rwxr-xr-xdecoder/pdtest31
1 files changed, 28 insertions, 3 deletions
diff --git a/decoder/pdtest b/decoder/pdtest
index 5948325..a2a33fc 100755
--- a/decoder/pdtest
+++ b/decoder/pdtest
@@ -146,9 +146,26 @@ def parse_testfile(path, pd, tc, op_type, op_class):
raise E_syntax
tclist[-1]['stack'] = f
elif key == 'input':
- if len(f) != 1:
+ if len(f) < 1:
raise E_syntax
- tclist[-1]['input'] = f[0]
+ input_spec = {
+ 'name': f.pop(0),
+ 'format': None,
+ 'options': [],
+ }
+ while len(f):
+ if len(f) < 2:
+ # Always needs <key> <value>
+ raise E_syntax
+ a, b = f[:2]
+ f = f[2:]
+ if a == 'format':
+ input_spec['format'] = b
+ elif a == 'option':
+ input_spec['options'].append(b)
+ else:
+ raise E_syntax
+ tclist[-1]['input'] = input_spec
elif key == 'output':
op_spec = {
'pd': f.pop(0),
@@ -325,7 +342,15 @@ def run_tests(tests, fix=False):
args.extend(['-o', "%s=%s" % (option, value)])
for label, initial_pin in spd['initial_pins']:
args.extend(['-N', "%s=%d" % (label, initial_pin)])
- args.extend(['-i', os.path.join(dumps_dir, tc['input'])])
+ # Setup input spec for this test (optional format spec).
+ in_spec = tc['input']
+ infile = os.path.join(dumps_dir, in_spec['name'])
+ args.extend(['-i', infile])
+ if in_spec['format']:
+ args.extend(['-I', in_spec['format']])
+ for opt in in_spec['options']:
+ args.extend(['-I', opt])
+ # Setup output spec for this test.
for op in tc['output']:
name = "%s/%s/%s" % (pd, tc['name'], op['type'])
opargs = ['-O', "%s:%s" % (op['pd'], op['type'])]