annotate llvm/test/TableGen/JSON-check.py @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900
parents 1d019706d866
children
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
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
24 check_expr = line[prefix_pos + len(prefix) :]
150
anatofuz
parents:
diff changeset
25
anatofuz
parents:
diff changeset
26 try:
anatofuz
parents:
diff changeset
27 exception = None
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
28 result = eval(check_expr, {"data": data})
150
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(
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
37 file=testfile, line=lineno, expr=check_expr, exception=exception
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
38 )
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
39 )
150
anatofuz
parents:
diff changeset
40 fails += 1
anatofuz
parents:
diff changeset
41 elif not result:
anatofuz
parents:
diff changeset
42 sys.stderr.write(
anatofuz
parents:
diff changeset
43 "{file}:{line:d}: check returned False: {expr}\n".format(
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
44 file=testfile, line=lineno, expr=check_expr
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
45 )
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
46 )
150
anatofuz
parents:
diff changeset
47 fails += 1
anatofuz
parents:
diff changeset
48 else:
anatofuz
parents:
diff changeset
49 passes += 1
anatofuz
parents:
diff changeset
50
anatofuz
parents:
diff changeset
51 if fails != 0:
anatofuz
parents:
diff changeset
52 sys.exit("{} checks failed".format(fails))
anatofuz
parents:
diff changeset
53 else:
anatofuz
parents:
diff changeset
54 sys.stdout.write("{} checks passed\n".format(passes))