1 from check_index import *
5 assert sorted(q.keys()) == [
6 "client-client-member",
9 "client-json-bad-root",
13 "client-request-array-negative-major-version",
14 "client-request-array-negative-minor-version",
15 "client-request-array-negative-version",
16 "client-request-array-no-major-version",
17 "client-request-array-no-supported-version",
18 "client-request-array-no-supported-version-among",
19 "client-request-array-version-1",
20 "client-request-array-version-1-1",
21 "client-request-array-version-2",
22 "client-request-negative-major-version",
23 "client-request-negative-minor-version",
24 "client-request-negative-version",
25 "client-request-no-major-version",
26 "client-request-no-version",
27 "client-request-version-1",
28 "client-request-version-1-1",
29 "client-request-version-2",
30 "client-requests-bad",
31 "client-requests-empty",
32 "client-requests-not-kinded",
33 "client-requests-not-objects",
34 "client-requests-unknown",
37 (check_query_client_member, "client-client-member"),
38 (check_query_empty_array, "client-empty-array"),
39 (check_query_empty_object, "client-empty-object"),
40 (check_query_json_bad_root, "client-json-bad-root"),
41 (check_query_json_empty, "client-json-empty"),
42 (check_query_json_extra, "client-json-extra"),
43 (check_query_not_file, "client-not-file"),
44 (check_query_requests_bad, "client-requests-bad"),
45 (check_query_requests_empty, "client-requests-empty"),
46 (check_query_requests_not_kinded, "client-requests-not-kinded"),
47 (check_query_requests_not_objects, "client-requests-not-objects"),
48 (check_query_requests_unknown, "client-requests-unknown"),
50 for (f, k) in expected:
52 assert sorted(q[k].keys()) == ["query.json"]
55 (check_query_response_array_negative_major_version, "client-request-array-negative-major-version"),
56 (check_query_response_array_negative_minor_version, "client-request-array-negative-minor-version"),
57 (check_query_response_array_negative_version, "client-request-array-negative-version"),
58 (check_query_response_array_no_major_version, "client-request-array-no-major-version"),
59 (check_query_response_array_no_supported_version, "client-request-array-no-supported-version"),
60 (check_query_response_array_no_supported_version_among, "client-request-array-no-supported-version-among"),
61 (check_query_response_array_version_1, "client-request-array-version-1"),
62 (check_query_response_array_version_1_1, "client-request-array-version-1-1"),
63 (check_query_response_array_version_2, "client-request-array-version-2"),
64 (check_query_response_negative_major_version, "client-request-negative-major-version"),
65 (check_query_response_negative_minor_version, "client-request-negative-minor-version"),
66 (check_query_response_negative_version, "client-request-negative-version"),
67 (check_query_response_no_major_version, "client-request-no-major-version"),
68 (check_query_response_no_version, "client-request-no-version"),
69 (check_query_response_version_1, "client-request-version-1"),
70 (check_query_response_version_1_1, "client-request-version-1-1"),
71 (check_query_response_version_2, "client-request-version-2"),
73 for (f, k) in expected:
75 assert sorted(q[k].keys()) == ["query.json"]
76 assert is_dict(q[k]["query.json"])
77 assert sorted(q[k]["query.json"].keys()) == ["requests", "responses"]
78 r = q[k]["query.json"]["requests"]
82 assert r[0]["kind"] == "__test"
83 r = q[k]["query.json"]["responses"]
89 def check_query_client_member(q):
91 assert sorted(q.keys()) == ["client", "responses"]
92 assert is_dict(q["client"])
93 assert sorted(q["client"].keys()) == []
94 check_error(q["responses"], "'requests' member missing")
96 def check_query_empty_array(q):
97 check_error(q, "query root is not an object")
99 def check_query_empty_object(q):
101 assert sorted(q.keys()) == ["responses"]
102 check_error(q["responses"], "'requests' member missing")
104 def check_query_json_bad_root(q):
105 check_error_re(q, "A valid JSON document must be either an array or an object value")
107 def check_query_json_empty(q):
108 check_error_re(q, "value, object or array expected")
110 def check_query_json_extra(q):
111 check_error_re(q, "Extra non-whitespace after JSON value")
113 def check_query_not_file(q):
114 check_error_re(q, "failed to read from file")
116 def check_query_requests_bad(q):
118 assert sorted(q.keys()) == ["requests", "responses"]
121 assert sorted(r.keys()) == []
122 check_error(q["responses"], "'requests' member is not an array")
124 def check_query_requests_empty(q):
126 assert sorted(q.keys()) == ["requests", "responses"]
134 def check_query_requests_not_kinded(q):
136 assert sorted(q.keys()) == ["requests", "responses"]
141 assert sorted(r[0].keys()) == []
143 assert sorted(r[1].keys()) == ["kind"]
144 assert is_dict(r[1]["kind"])
146 assert sorted(r[2].keys()) == ["kind"]
147 assert is_list(r[2]["kind"])
149 assert sorted(r[3].keys()) == ["kind"]
150 assert is_int(r[3]["kind"])
154 check_error(r[0], "'kind' member missing")
155 check_error(r[1], "'kind' member is not a string")
156 check_error(r[2], "'kind' member is not a string")
157 check_error(r[3], "'kind' member is not a string")
159 def check_query_requests_not_objects(q):
161 assert sorted(q.keys()) == ["requests", "responses"]
166 assert is_string(r[1])
171 check_error(r[0], "request is not an object")
172 check_error(r[1], "request is not an object")
173 check_error(r[2], "request is not an object")
175 def check_query_requests_unknown(q):
177 assert sorted(q.keys()) == ["requests", "responses"]
182 assert sorted(r[0].keys()) == ["kind"]
183 assert r[0]["kind"] == "unknownC"
185 assert sorted(r[1].keys()) == ["kind"]
186 assert r[1]["kind"] == "unknownB"
188 assert sorted(r[2].keys()) == ["kind"]
189 assert r[2]["kind"] == "unknownA"
193 check_error(r[0], "unknown request kind 'unknownC'")
194 check_error(r[1], "unknown request kind 'unknownB'")
195 check_error(r[2], "unknown request kind 'unknownA'")
197 def check_query_response_array_negative_major_version(r):
198 check_error(r, "'version' object 'major' member is not a non-negative integer")
200 def check_query_response_array_negative_minor_version(r):
201 check_error(r, "'version' object 'minor' member is not a non-negative integer")
203 def check_query_response_array_negative_version(r):
204 check_error(r, "'version' array entry is not a non-negative integer or object")
206 def check_query_response_array_no_major_version(r):
207 check_error(r, "'version' object 'major' member missing")
209 def check_query_response_array_no_supported_version(r):
210 check_error(r, "no supported version specified")
212 def check_query_response_array_no_supported_version_among(r):
213 check_error(r, "no supported version specified among: 4.0 3.0")
215 def check_query_response_array_version_1(r):
216 check_index__test(r, 1, 3)
218 def check_query_response_array_version_1_1(r):
219 check_index__test(r, 1, 3) # always uses latest minor version
221 def check_query_response_array_version_2(r):
222 check_index__test(r, 2, 0)
224 def check_query_response_negative_major_version(r):
225 check_error(r, "'version' object 'major' member is not a non-negative integer")
227 def check_query_response_negative_minor_version(r):
228 check_error(r, "'version' object 'minor' member is not a non-negative integer")
230 def check_query_response_negative_version(r):
231 check_error(r, "'version' member is not a non-negative integer, object, or array")
233 def check_query_response_no_major_version(r):
234 check_error(r, "'version' object 'major' member missing")
236 def check_query_response_no_version(r):
237 check_error(r, "'version' member missing")
239 def check_query_response_version_1(r):
240 check_index__test(r, 1, 3)
242 def check_query_response_version_1_1(r):
243 check_index__test(r, 1, 3) # always uses latest minor version
245 def check_query_response_version_2(r):
246 check_index__test(r, 2, 0)
248 def check_objects(o):
251 check_index__test(o[0], 1, 3)
252 check_index__test(o[1], 2, 0)
254 assert is_dict(index)
255 assert sorted(index.keys()) == ["cmake", "objects", "reply"]
256 check_cmake(index["cmake"])
257 check_reply(index["reply"])
258 check_objects(index["objects"])