Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / TableGen / JSON-check.py
blob296a5dcfc4fdcdc64bf5420e5453acd3183bf010
1 #!/usr/bin/env python
3 import sys
4 import subprocess
5 import traceback
6 import json
8 data = json.load(sys.stdin)
9 testfile = sys.argv[1]
11 prefix = "CHECK: "
13 fails = 0
14 passes = 0
15 with open(testfile) as testfh:
16 lineno = 0
17 for line in iter(testfh.readline, ""):
18 lineno += 1
19 line = line.rstrip("\r\n")
20 try:
21 prefix_pos = line.index(prefix)
22 except ValueError:
23 continue
24 check_expr = line[prefix_pos + len(prefix) :]
26 try:
27 exception = None
28 result = eval(check_expr, {"data": data})
29 except Exception:
30 result = False
31 exception = traceback.format_exc().splitlines()[-1]
33 if exception is not None:
34 sys.stderr.write(
35 "{file}:{line:d}: check threw exception: {expr}\n"
36 "{file}:{line:d}: exception was: {exception}\n".format(
37 file=testfile, line=lineno, expr=check_expr, exception=exception
40 fails += 1
41 elif not result:
42 sys.stderr.write(
43 "{file}:{line:d}: check returned False: {expr}\n".format(
44 file=testfile, line=lineno, expr=check_expr
47 fails += 1
48 else:
49 passes += 1
51 if fails != 0:
52 sys.exit("{} checks failed".format(fails))
53 else:
54 sys.stdout.write("{} checks passed\n".format(passes))