11"""Test Python JSONPath against the JSONPath Compliance Test Suite.
22
3- Assumes a version of the test suite is available in the current working
4- directory as "cts.json".
5-
6- See https://github.com/jsonpath-standard/jsonpath-compliance-test-suite.
7-
8- We've deliberately named this file so as to exclude it when running `pytest`
9- or `hatch run test`. Target it specifically using `pytest tests/compliance.py`.
3+ The CTS is a submodule located in /tests/cts. After a git clone, run
4+ `git submodule update --init` from the root of the repository.
105"""
116import asyncio
127import json
@@ -46,10 +41,51 @@ class Case:
4641 "name selector, double quotes, incomplete escape" : "ignore" ,
4742 "name selector, single quotes, invalid escaped double quote" : "ignore" ,
4843 "name selector, single quotes, incomplete escape" : "ignore" ,
49- "filter, non-singular query in comparison, slice" : "ignore" ,
50- "filter, non-singular query in comparison, all children" : "ignore" ,
51- "filter, non-singular query in comparison, descendants" : "ignore" ,
52- "filter, non-singular query in comparison, combined" : "ignore" ,
44+ "filter, non-singular query in comparison, slice" : "TODO" ,
45+ "filter, non-singular query in comparison, all children" : "TODO" ,
46+ "filter, non-singular query in comparison, descendants" : "TODO" ,
47+ "filter, non-singular query in comparison, combined" : "TODO" ,
48+ "filter, relative non-singular query, index, equal" : "TODO" ,
49+ "filter, relative non-singular query, index, not equal" : "TODO" ,
50+ "filter, relative non-singular query, index, less-or-equal" : "TODO" ,
51+ "filter, relative non-singular query, name, equal" : "TODO" ,
52+ "filter, relative non-singular query, name, not equal" : "TODO" ,
53+ "filter, relative non-singular query, name, less-or-equal" : "TODO" ,
54+ "filter, relative non-singular query, combined, equal" : "TODO" ,
55+ "filter, relative non-singular query, combined, not equal" : "TODO" ,
56+ "filter, relative non-singular query, combined, less-or-equal" : "TODO" ,
57+ "filter, relative non-singular query, wildcard, equal" : "TODO" ,
58+ "filter, relative non-singular query, wildcard, not equal" : "TODO" ,
59+ "filter, relative non-singular query, wildcard, less-or-equal" : "TODO" ,
60+ "filter, relative non-singular query, slice, equal" : "TODO" ,
61+ "filter, relative non-singular query, slice, not equal" : "TODO" ,
62+ "filter, relative non-singular query, slice, less-or-equal" : "TODO" ,
63+ "filter, absolute non-singular query, index, equal" : "TODO" ,
64+ "filter, absolute non-singular query, index, not equal" : "TODO" ,
65+ "filter, absolute non-singular query, index, less-or-equal" : "TODO" ,
66+ "filter, absolute non-singular query, name, equal" : "TODO" ,
67+ "filter, absolute non-singular query, name, not equal" : "TODO" ,
68+ "filter, absolute non-singular query, name, less-or-equal" : "TODO" ,
69+ "filter, absolute non-singular query, combined, equal" : "TODO" ,
70+ "filter, absolute non-singular query, combined, not equal" : "TODO" ,
71+ "filter, absolute non-singular query, combined, less-or-equal" : "TODO" ,
72+ "filter, absolute non-singular query, wildcard, equal" : "TODO" ,
73+ "filter, absolute non-singular query, wildcard, not equal" : "TODO" ,
74+ "filter, absolute non-singular query, wildcard, less-or-equal" : "TODO" ,
75+ "filter, absolute non-singular query, slice, equal" : "TODO" ,
76+ "filter, absolute non-singular query, slice, not equal" : "TODO" ,
77+ "filter, absolute non-singular query, slice, less-or-equal" : "TODO" ,
78+ "filter, multiple selectors" : "TODO" ,
79+ "filter, multiple selectors, comparison" : "TODO" ,
80+ "filter, multiple selectors, overlapping" : "TODO" ,
81+ "filter, multiple selectors, filter and index" : "TODO" ,
82+ "filter, multiple selectors, filter and wildcard" : "TODO" ,
83+ "filter, multiple selectors, filter and slice" : "TODO" ,
84+ "filter, multiple selectors, comparison filter, index and slice" : "TODO" ,
85+ "filter, equals number, exponent" : "TODO" ,
86+ "filter, equals number, positive exponent" : "TODO" ,
87+ "filter, equals number, negative exponent" : "TODO" ,
88+ "filter, equals number, decimal fraction, no fractional digit" : "TODO" ,
5389 "functions, length, result must be compared" : "ignore" ,
5490 "functions, count, result must be compared" : "ignore" ,
5591 "functions, match, result cannot be compared" : "ignore" ,
@@ -67,7 +103,7 @@ class Case:
67103
68104
69105def cases () -> List [Case ]:
70- with open ("cts.json" , encoding = "utf8" ) as fd :
106+ with open ("tests/cts/ cts.json" , encoding = "utf8" ) as fd :
71107 data = json .load (fd )
72108 return [Case (** case ) for case in data ["tests" ]]
73109
0 commit comments