Skip to content

Commit dde2b15

Browse files
committed
add fuzzing
1 parent 65e03a1 commit dde2b15

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ debug = true
3131

3232
[workspace.dependencies]
3333
jiter = { path = "crates/jiter", version = "0.5.0" }
34+
batson = { path = "crates/batson", version = "0.5.0" }
3435
pyo3 = { version = "0.22.0" }
3536
pyo3-build-config = { version = "0.22.0" }
3637
bencher = "0.1.5"

crates/fuzz/Cargo.toml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ serde = "1.0.190"
1515
indexmap = "2.0.0"
1616
num-bigint = "0.4.4"
1717
num-traits = "0.2.17"
18-
jiter = {path = "../jiter"}
18+
jiter = {workspace = true}
19+
batson = {workspace = true}
1920

2021
[[bin]]
2122
name = "compare_to_serde"
@@ -28,3 +29,9 @@ name = "compare_skip"
2829
path = "fuzz_targets/compare_skip.rs"
2930
test = false
3031
doc = false
32+
33+
[[bin]]
34+
name = "batson_round_trip"
35+
path = "fuzz_targets/batson_round_trip.rs"
36+
test = false
37+
doc = false
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#![no_main]
2+
3+
use batson::{batson_to_json_string, encode_from_json};
4+
use jiter::JsonValue;
5+
6+
use libfuzzer_sys::fuzz_target;
7+
8+
fn round_trip(json: String) {
9+
let Ok(jiter_value1) = JsonValue::parse(json.as_bytes(), false) else {
10+
return;
11+
};
12+
let bytes1 = encode_from_json(&jiter_value1).unwrap();
13+
let json1 = batson_to_json_string(&bytes1).unwrap();
14+
15+
let jiter_value2 = JsonValue::parse(json1.as_bytes(), false).unwrap();
16+
let bytes2 = encode_from_json(&jiter_value2).unwrap();
17+
let json2 = batson_to_json_string(&bytes2).unwrap();
18+
19+
assert_eq!(json1, json2);
20+
}
21+
22+
fuzz_target!(|json: String| {
23+
round_trip(json);
24+
});

0 commit comments

Comments
 (0)