hurl/integration/test_lint.py
2022-02-05 18:15:41 +01:00

54 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python3
# lint hurl file
#
import codecs
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(hurl_file):
cmd = ["hurlfmt", "--check", hurl_file]
print(" ".join(cmd))
result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if result.returncode != 1:
print(f"return code => expected: 1 actual {result.returncode}")
sys.exit(1)
err_file = hurl_file.replace(".hurl", ".err")
expected = open(err_file).read().strip()
actual = decode_string(result.stderr).strip()
if actual != expected:
print(">>> error in stderr")
print(f"actual: <{actual}>\nexpected: <{expected}>")
sys.exit(1)
cmd = ["hurlfmt", hurl_file]
print(" ".join(cmd))
result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
err_file = hurl_file.replace(".hurl", ".hurl.lint")
expected = open(err_file).read().strip()
actual = decode_string(result.stdout).strip()
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()