From f2e30fdfbb593f4a0b931dce0822b1169c626cc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20T=C3=B3th?= Date: Wed, 6 May 2026 14:35:54 +0000 Subject: [PATCH 1/2] Add `FuzzSpec` deserialization to `skribe-fuzz-rs` --- skribe-fuzz-rs/Cargo.toml | 2 ++ skribe-fuzz-rs/src/fuzz_spec.rs | 52 +++++++++++++++++++++++++++++++++ skribe-fuzz-rs/src/lib.rs | 3 ++ 3 files changed, 57 insertions(+) create mode 100644 skribe-fuzz-rs/src/fuzz_spec.rs diff --git a/skribe-fuzz-rs/Cargo.toml b/skribe-fuzz-rs/Cargo.toml index 8bd5132..3f58d60 100644 --- a/skribe-fuzz-rs/Cargo.toml +++ b/skribe-fuzz-rs/Cargo.toml @@ -4,5 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] +serde = "1.0.228" +serde_json = "1.0.149" kframework = { git = "https://github.com/runtimeverification/kframework-rs.git", rev = "1e7ee3a" } kframework_ffi = { git = "https://github.com/runtimeverification/kframework-rs.git", rev = "1e7ee3a" } diff --git a/skribe-fuzz-rs/src/fuzz_spec.rs b/skribe-fuzz-rs/src/fuzz_spec.rs new file mode 100644 index 0000000..6eeaa18 --- /dev/null +++ b/skribe-fuzz-rs/src/fuzz_spec.rs @@ -0,0 +1,52 @@ +use serde::Deserialize; + +#[derive(Debug, Deserialize)] +pub struct Signature { + pub contract_name: String, + pub name: String, + pub arg_types: Vec, +} + +#[derive(Debug, Deserialize)] +pub struct FuzzSpec { + pub template: String, + pub signatures: Vec, +} + +pub fn fuzz_specs_from_json(json: &str) -> Result, serde_json::Error> { + serde_json::from_str(json) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_fuzz_specs_from_json() { + let json = r#"[ + { + "template": "X:SortGeneratedTopCell{}", + "signatures": [ + { + "contract_name": "TestSkribeEndToEnd", + "name": "test_end_to_end_intense", + "arg_types": ["bytes8", "bytes8", "bool", "(uint256,bool)[]"] + } + ] + } + ]"#; + + let specs = fuzz_specs_from_json(json).unwrap(); + assert_eq!(specs.len(), 1); + assert_eq!(specs[0].template, "X:SortGeneratedTopCell{}"); + assert_eq!(specs[0].signatures.len(), 1); + + let sig = &specs[0].signatures[0]; + assert_eq!(sig.contract_name, "TestSkribeEndToEnd"); + assert_eq!(sig.name, "test_end_to_end_intense"); + assert_eq!( + sig.arg_types, + ["bytes8", "bytes8", "bool", "(uint256,bool)[]"] + ); + } +} diff --git a/skribe-fuzz-rs/src/lib.rs b/skribe-fuzz-rs/src/lib.rs index 9cdcd4f..4f96f14 100644 --- a/skribe-fuzz-rs/src/lib.rs +++ b/skribe-fuzz-rs/src/lib.rs @@ -4,6 +4,9 @@ pub use kframework_ffi::kllvm; use kframework::kore::{Id, Pattern, Sort}; use kframework_ffi::kllvm::{Marshaller, VarHandler}; +mod fuzz_spec; +pub use fuzz_spec::{FuzzSpec, Signature, fuzz_specs_from_json}; + struct DummyHandler; impl VarHandler for DummyHandler { From a9e2629b65299d0221c57d326c78500b006bb0d7 Mon Sep 17 00:00:00 2001 From: devops Date: Wed, 6 May 2026 15:23:07 +0000 Subject: [PATCH 2/2] Set Version: 0.1.32 --- package/version | 2 +- pyproject.toml | 2 +- uv.lock | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/version b/package/version index db7a480..28d0075 100644 --- a/package/version +++ b/package/version @@ -1 +1 @@ -0.1.31 +0.1.32 diff --git a/pyproject.toml b/pyproject.toml index 9ba6a03..06fd0ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "skribe" -version = "0.1.31" +version = "0.1.32" description = "Property testing for Stylus smart contracts" readme = "README.md" requires-python = "~=3.10" diff --git a/uv.lock b/uv.lock index 5cc0e66..76a0972 100644 --- a/uv.lock +++ b/uv.lock @@ -1815,7 +1815,7 @@ wheels = [ [[package]] name = "skribe" -version = "0.1.31" +version = "0.1.32" source = { editable = "." } dependencies = [ { name = "kontrol" },