#!/usr/bin/env python3 # echo hurl file # The file is parsed and output exactly as the input # import sys import subprocess import codecs 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(hurl_file): cmd = ['hurlfmt', '--no-format', hurl_file] print(' '.join(cmd)) result = subprocess.run(cmd, stdout=subprocess.PIPE) expected = codecs.open(hurl_file, encoding='utf-8-sig').read() # Input file can be saved with a BOM actual = decode_string(result.stdout) if actual != expected: print('>>> error in stdout') print(f'actual: <{actual}>\nexpected: <{expected}>') sys.exit(1) def main(): for hurl_file in sys.argv[1:]: test(hurl_file) if __name__ == '__main__': main()