3
3
from tests import OrderedDict
4
4
from tests import json
5
5
6
- from nose . tools import assert_equal
6
+ import pytest
7
7
8
8
from jmespath .visitor import Options
9
9
15
15
OPTIONS = Options (dict_cls = OrderedDict )
16
16
17
17
18
- def test_compliance ( ):
18
+ def _compliance_tests ( requested_test_type ):
19
19
for full_path in _walk_files ():
20
20
if full_path .endswith ('.json' ):
21
21
for given , test_type , test_data in load_cases (full_path ):
22
22
t = test_data
23
23
# Benchmark tests aren't run as part of the normal
24
24
# test suite, so we only care about 'result' and
25
25
# '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' ],
28
28
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' ],
31
31
t ['error' ], os .path .basename (full_path ))
32
32
33
33
@@ -63,7 +63,11 @@ def load_cases(full_path):
63
63
yield (given , test_type , case )
64
64
65
65
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 ):
67
71
import jmespath .parser
68
72
try :
69
73
parsed = jmespath .compile (expression )
@@ -80,10 +84,14 @@ def _test_expression(given, expression, expected, filename):
80
84
actual_repr , pformat (parsed .parsed ),
81
85
json .dumps (given , indent = 4 )))
82
86
error_msg = error_msg .replace (r'\n' , '\n ' )
83
- assert_equal ( actual , expected , error_msg )
87
+ assert actual == expected , error_msg
84
88
85
89
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 ):
87
95
import jmespath .parser
88
96
if error not in ('syntax' , 'invalid-type' ,
89
97
'unknown-function' , 'invalid-arity' , 'invalid-value' ):
0 commit comments