33from tests import OrderedDict
44from tests import json
55
6- from nose . tools import assert_equal
6+ import pytest
77
88from jmespath .visitor import Options
99
1515OPTIONS = Options (dict_cls = OrderedDict )
1616
1717
18- def test_compliance ( ):
18+ def _compliance_tests ( requested_test_type ):
1919 for full_path in _walk_files ():
2020 if full_path .endswith ('.json' ):
2121 for given , test_type , test_data in load_cases (full_path ):
2222 t = test_data
2323 # Benchmark tests aren't run as part of the normal
2424 # test suite, so we only care about 'result' and
2525 # 'error' test_types.
26- if test_type == 'result' :
27- yield (_test_expression , given , t ['expression' ],
26+ if test_type == 'result' and test_type == requested_test_type :
27+ yield (given , t ['expression' ],
2828 t ['result' ], os .path .basename (full_path ))
29- elif test_type == 'error' :
30- yield (_test_error_expression , given , t ['expression' ],
29+ elif test_type == 'error' and test_type == requested_test_type :
30+ yield (given , t ['expression' ],
3131 t ['error' ], os .path .basename (full_path ))
3232
3333
@@ -63,7 +63,11 @@ def load_cases(full_path):
6363 yield (given , test_type , case )
6464
6565
66- def _test_expression (given , expression , expected , filename ):
66+ @pytest .mark .parametrize (
67+ 'given, expression, expected, filename' ,
68+ _compliance_tests ('result' )
69+ )
70+ def test_expression (given , expression , expected , filename ):
6771 import jmespath .parser
6872 try :
6973 parsed = jmespath .compile (expression )
@@ -80,10 +84,14 @@ def _test_expression(given, expression, expected, filename):
8084 actual_repr , pformat (parsed .parsed ),
8185 json .dumps (given , indent = 4 )))
8286 error_msg = error_msg .replace (r'\n' , '\n ' )
83- assert_equal ( actual , expected , error_msg )
87+ assert actual == expected , error_msg
8488
8589
86- def _test_error_expression (given , expression , error , filename ):
90+ @pytest .mark .parametrize (
91+ 'given, expression, error, filename' ,
92+ _compliance_tests ('error' )
93+ )
94+ def test_error_expression (given , expression , error , filename ):
8795 import jmespath .parser
8896 if error not in ('syntax' , 'invalid-type' ,
8997 'unknown-function' , 'invalid-arity' , 'invalid-value' ):
0 commit comments