1
1
import json
2
2
from pathlib import Path
3
- from typing import Any
4
3
5
4
import pytest
6
5
from syrupy .assertion import SnapshotAssertion
7
6
8
7
from ..decoder import loads , repair_json
9
8
10
9
11
- def load_repaired_json (json_str : str ) -> dict [str , Any ]:
12
- return json .loads (repair_json (json_str ))
13
-
14
-
15
10
def test_repaired_json_simple_case (snapshot : SnapshotAssertion ) -> None :
16
- assert snapshot == load_repaired_json ( "{}" )
17
- assert snapshot == load_repaired_json ( '{"foo": "bar"}' )
18
- assert snapshot == load_repaired_json ( '{"foo": "bar", "baz": "qux"}' )
19
- assert snapshot == load_repaired_json ( '{"foo": "bar", "baz": "qux", "quux": "corge"}' )
11
+ assert snapshot == json . loads ( repair_json ( "{}" ) )
12
+ assert snapshot == json . loads ( repair_json ( '{"foo": "bar"}' ) )
13
+ assert snapshot == json . loads ( repair_json ( '{"foo": "bar", "baz": "qux"}' ) )
14
+ assert snapshot == json . loads ( repair_json ( '{"foo": "bar", "baz": "qux", "quux": "corge"}' ) )
20
15
# add more nested objects
21
- assert snapshot == load_repaired_json ( '{"foo": {"bar": "baz"}}' )
22
- assert snapshot == load_repaired_json ( '{"foo": {"bar": {"baz": "qux"}}}' )
23
- assert snapshot == load_repaired_json ( '{"foo": {"bar": {"baz": {"qux": "quux"}}}}' )
16
+ assert snapshot == json . loads ( repair_json ( '{"foo": {"bar": "baz"}}' ) )
17
+ assert snapshot == json . loads ( repair_json ( '{"foo": {"bar": {"baz": "qux"}}}' ) )
18
+ assert snapshot == json . loads ( repair_json ( '{"foo": {"bar": {"baz": {"qux": "quux"}}}}' ) )
24
19
25
20
26
21
@pytest .mark .parametrize (
@@ -32,7 +27,7 @@ def test_repaired_json_vaild_case(snapshot: SnapshotAssertion, test_filename: Pa
32
27
content = test_filename .read_text ()
33
28
parsed_by_std_json = json .loads (content )
34
29
35
- parsed_by_fixed_json = load_repaired_json ( content )
30
+ parsed_by_fixed_json = json . loads ( repair_json ( content ) )
36
31
assert snapshot == parsed_by_fixed_json
37
32
assert parsed_by_fixed_json == parsed_by_std_json
38
33
@@ -44,8 +39,15 @@ def test_repaired_json_vaild_case(snapshot: SnapshotAssertion, test_filename: Pa
44
39
)
45
40
def test_repaired_json_invaild_case (snapshot : SnapshotAssertion , test_filename : Path ) -> None :
46
41
content = test_filename .read_text ()
47
- result = load_repaired_json (content )
42
+ result = loads (content , auto_repair = True )
43
+ assert snapshot == result
44
+
45
+
46
+ def test_repaired_json_invalid_case_special (snapshot : SnapshotAssertion ) -> None :
47
+ content = '{"a": "\n "}'
48
+ result = loads (content , auto_repair = True )
48
49
assert snapshot == result
50
+ assert json .loads (content , strict = False ) == result
49
51
50
52
51
53
def test_repair_json_fail () -> None :
0 commit comments