#!/usr/bin/env python3 # echo hurl file # The file is parsed and output exactly as the input # import codecs import os import sys import subprocess def decode_string(encoded): if encoded.startswith(codecs.BOM_UTF8): return encoded.decode('utf-8-sig') elif encoded.startswith(codecs.BOM_UTF16): encoded = encoded[len(codecs.BOM_UTF16):] return encoded.decode('utf-16') else: return encoded.decode() def test(format_type, hurl_file): output_file = hurl_file.replace('.hurl','.' + format_type) if not os.path.exists(output_file): return cmd = ['hurlfmt', '--format', format_type, hurl_file] print(' '.join(cmd)) result = subprocess.run(cmd, stdout=subprocess.PIPE) expected = open(output_file, encoding='utf-8').read().strip() actual = decode_string(result.stdout) if actual != expected: print('>>> error in stdout') print(f'actual: <{actual}>\nexpected: <{expected}>') sys.exit(1) def main(): if len(sys.argv) < 2: print('usage: test_format.py json|html HURL_FILE..') sys.exit(1) format_type = sys.argv[1] for hurl_file in sys.argv[2:]: test(format_type, hurl_file) if __name__ == '__main__': main()