X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-test.git;a=blobdiff_plain;f=decoder%2Fpdtest;h=a2a33fc9b66260f609f32a98db067656c61231e2;hp=59483253c86eab67bf6f5322c088827bb492e5cd;hb=HEAD;hpb=6a789f0afcc5894a81e3f56e11883f1446d46e7b 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 + 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'])]