hurl/integration/test_echo.py

41 lines
1007 B
Python
Raw Normal View History

#!/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()