45 lines
1.2 KiB
Python
Executable File
45 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os.path
|
|
import tempfile
|
|
import subprocess
|
|
from glob import glob
|
|
|
|
|
|
if __name__ == '__main__':
|
|
json_tests = "@CMAKE_CURRENT_SOURCE_DIR@/test/json/pointer/validate/"
|
|
json_pointer = "@CMAKE_CURRENT_BINARY_DIR@/json-pointer"
|
|
json_compare = "@CMAKE_CURRENT_BINARY_DIR@/json-compare"
|
|
|
|
paths = glob(os.path.join(json_tests, "*.pointer"))
|
|
paths = (os.path.splitext(p)[0] for p in paths)
|
|
names = sorted(p for p in paths)
|
|
|
|
failures = 0
|
|
|
|
for n in names:
|
|
input = f"{n}.input.json"
|
|
truth = f"{n}.truth.json"
|
|
with open(f"{n}.pointer") as f: pointer = f.read()
|
|
|
|
success = False
|
|
|
|
try:
|
|
with tempfile.NamedTemporaryFile(delete=True) as result:
|
|
do_query = [json_pointer, pointer.rstrip(), input]
|
|
do_compare = [json_compare, result.name, truth]
|
|
|
|
#print(do_query)
|
|
#print(do_compare)
|
|
|
|
subprocess.check_call(do_query, stdout=result)
|
|
subprocess.check_call(do_compare)
|
|
success = True
|
|
except subprocess.CalledProcessError:
|
|
failures += 1
|
|
|
|
prefix = "not " if not success else ""
|
|
print(f"{prefix}ok - {n}")
|
|
|
|
exit(1 if failures else 0)
|