annotate llvm/test/TableGen/JSON-check.py @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children 1f2b6ac9f198
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 #!/usr/bin/env python
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 import sys
anatofuz
parents:
diff changeset
4 import subprocess
anatofuz
parents:
diff changeset
5 import traceback
anatofuz
parents:
diff changeset
6 import json
anatofuz
parents:
diff changeset
7
anatofuz
parents:
diff changeset
8 data = json.load(sys.stdin)
anatofuz
parents:
diff changeset
9 testfile = sys.argv[1]
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 prefix = "CHECK: "
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 fails = 0
anatofuz
parents:
diff changeset
14 passes = 0
anatofuz
parents:
diff changeset
15 with open(testfile) as testfh:
anatofuz
parents:
diff changeset
16 lineno = 0
anatofuz
parents:
diff changeset
17 for line in iter(testfh.readline, ""):
anatofuz
parents:
diff changeset
18 lineno += 1
anatofuz
parents:
diff changeset
19 line = line.rstrip("\r\n")
anatofuz
parents:
diff changeset
20 try:
anatofuz
parents:
diff changeset
21 prefix_pos = line.index(prefix)
anatofuz
parents:
diff changeset
22 except ValueError:
anatofuz
parents:
diff changeset
23 continue
anatofuz
parents:
diff changeset
24 check_expr = line[prefix_pos + len(prefix):]
anatofuz
parents:
diff changeset
25
anatofuz
parents:
diff changeset
26 try:
anatofuz
parents:
diff changeset
27 exception = None
anatofuz
parents:
diff changeset
28 result = eval(check_expr, {"data":data})
anatofuz
parents:
diff changeset
29 except Exception:
anatofuz
parents:
diff changeset
30 result = False
anatofuz
parents:
diff changeset
31 exception = traceback.format_exc().splitlines()[-1]
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 if exception is not None:
anatofuz
parents:
diff changeset
34 sys.stderr.write(
anatofuz
parents:
diff changeset
35 "{file}:{line:d}: check threw exception: {expr}\n"
anatofuz
parents:
diff changeset
36 "{file}:{line:d}: exception was: {exception}\n".format(
anatofuz
parents:
diff changeset
37 file=testfile, line=lineno,
anatofuz
parents:
diff changeset
38 expr=check_expr, exception=exception))
anatofuz
parents:
diff changeset
39 fails += 1
anatofuz
parents:
diff changeset
40 elif not result:
anatofuz
parents:
diff changeset
41 sys.stderr.write(
anatofuz
parents:
diff changeset
42 "{file}:{line:d}: check returned False: {expr}\n".format(
anatofuz
parents:
diff changeset
43 file=testfile, line=lineno, expr=check_expr))
anatofuz
parents:
diff changeset
44 fails += 1
anatofuz
parents:
diff changeset
45 else:
anatofuz
parents:
diff changeset
46 passes += 1
anatofuz
parents:
diff changeset
47
anatofuz
parents:
diff changeset
48 if fails != 0:
anatofuz
parents:
diff changeset
49 sys.exit("{} checks failed".format(fails))
anatofuz
parents:
diff changeset
50 else:
anatofuz
parents:
diff changeset
51 sys.stdout.write("{} checks passed\n".format(passes))