Skip to content
Snippets Groups Projects
test.py 1.21 KiB
Newer Older
Martin Vejnár's avatar
Martin Vejnár committed
import os, json, sys, io
import pytoml as toml
Martin Vejnár's avatar
Martin Vejnár committed

def _testbench_literal(type, text):
    _type_table = {'str': 'string', 'int': 'integer'}
    return {'type': _type_table.get(type, type), 'value': text}

def _testbench_array(values):
    return {'type': 'array', 'value': values}

def _main():
    succeeded = []
    failed = []

Martin Vejnár's avatar
Martin Vejnár committed
    for top, dirnames, fnames in os.walk('.'):
Martin Vejnár's avatar
Martin Vejnár committed
        for fname in fnames:
            if not fname.endswith('.toml'):
                continue

            try:
                with open(os.path.join(top, fname), 'rb') as fin:
                    parsed = toml.load(fin, _testbench_literal, _testbench_array)
            except toml.TomlError:
                parsed = None

            try:
Martin Vejnár's avatar
Martin Vejnár committed
                with io.open(os.path.join(top, fname[:-5] + '.json'), 'rt', encoding='utf-8') as fin:
Martin Vejnár's avatar
Martin Vejnár committed
                    bench = json.load(fin)
            except IOError:
                bench = None

            if parsed != bench:
                failed.append(fname)
            else:
                succeeded.append(fname)

    for f in failed:
Martin Vejnár's avatar
Martin Vejnár committed
        print('failed: {}'.format(f))
    print('succeeded: {}'.format(len(succeeded)))
Martin Vejnár's avatar
Martin Vejnár committed
    return 1 if failed else 0

if __name__ == '__main__':
    sys.exit(_main())