What changed, and why it matters
This commit is a routine code cleanup: it moves a small test-only helper macro from a shared internal utility crate into the one place it is actually used. There is no change to user-facing behavior, no bug fix, and no security relevance.
No action required. This is a non-security refactor of test-only code.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The serde_round_trip macro, previously exported from bitcoin-internals under the test-serde feature, is removed from internals/src/serde.rs and redefined inline in key_expression/src/bip32.rs inside the tests module. The key_expression crate gains bincode as a dev-dependency because the inline macro now references bincode directly instead of via $crate::bincode. The macro body is otherwise identical. This is a refactor affecting only test code.
Changed components
internals/src/serde.rskey_expression/src/bip32.rs (tests module only)key_expression/Cargo.toml (dev-dependencies only)Inspect captured patch +17 / −19
diff --git a/Cargo-minimal.lock b/Cargo-minimal.lock
index d352ab62..80f387d3 100644
--- a/Cargo-minimal.lock
+++ b/Cargo-minimal.lock
@@ -183,6 +183,7 @@ version = "0.0.0"
dependencies = [
"arbitrary",
"base58ck 0.4.0",
+ "bincode",
"bitcoin-crypto",
"bitcoin-internals 0.5.0",
"bitcoin-network-kind",
diff --git a/Cargo-recent.lock b/Cargo-recent.lock
index 1b1613fc..13333810 100644
--- a/Cargo-recent.lock
+++ b/Cargo-recent.lock
@@ -182,6 +182,7 @@ version = "0.0.0"
dependencies = [
"arbitrary",
"base58ck 0.4.0",
+ "bincode",
"bitcoin-crypto",
"bitcoin-internals 0.5.0",
"bitcoin-network-kind",
diff --git a/internals/src/serde.rs b/internals/src/serde.rs
index bb52e9ef..bf54774f 100644
--- a/internals/src/serde.rs
+++ b/internals/src/serde.rs
@@ -297,23 +297,6 @@ macro_rules! serde_struct_human_string_impl {
)
}
-/// Does round trip test to/from serde value.
-#[cfg(feature = "test-serde")]
-#[macro_export]
-macro_rules! serde_round_trip (
- ($var:expr) => ({
- use serde_json;
-
- let encoded = $crate::serde_json::to_value(&$var).expect("serde_json failed to encode");
- let decoded = $crate::serde_json::from_value(encoded).expect("serde_json failed to decode");
- assert_eq!($var, decoded);
-
- let encoded = $crate::bincode::serialize(&$var).expect("bincode failed to encode");
- let decoded = $crate::bincode::deserialize(&encoded).expect("bincode failed to decode");
- assert_eq!($var, decoded);
- })
-);
-
#[cfg(feature = "hex")]
/// Serializes a byte slice using the `hex` crate.
pub struct SerializeBytesAsHex<'a>(pub &'a [u8]);
diff --git a/key_expression/Cargo.toml b/key_expression/Cargo.toml
index a20e80c1..8abd3db4 100644
--- a/key_expression/Cargo.toml
+++ b/key_expression/Cargo.toml
@@ -35,6 +35,7 @@ serde = { version = "1.0.195", default-features = false, features = ["derive"],
[dev-dependencies]
internals = { package = "bitcoin-internals", path = "../internals", features = ["test-serde"] }
serde_json = "1.0.68"
+bincode = "1.3.1"
[package.metadata.docs.rs]
all-features = true
diff --git a/key_expression/src/bip32.rs b/key_expression/src/bip32.rs
index 7f23b3e4..e911f0ac 100644
--- a/key_expression/src/bip32.rs
+++ b/key_expression/src/bip32.rs
@@ -1508,8 +1508,6 @@ mod tests {
use alloc::string::ToString;
use hex::hex;
- #[cfg(feature = "serde")]
- use internals::serde_round_trip;
use super::*;
@@ -1945,6 +1943,20 @@ mod tests {
}
}
+ /// Does round trip test to/from serde value.
+ #[cfg(feature = "serde")]
+ macro_rules! serde_round_trip (
+ ($var:expr) => ({
+ let encoded = serde_json::to_value(&$var).expect("serde_json failed to encode");
+ let decoded = serde_json::from_value(encoded).expect("serde_json failed to decode");
+ assert_eq!($var, decoded);
+
+ let encoded = bincode::serialize(&$var).expect("bincode failed to encode");
+ let decoded = bincode::deserialize(&encoded).expect("bincode failed to decode");
+ assert_eq!($var, decoded);
+ })
+ );
+
#[test]
#[cfg(feature = "serde")]
pub fn encode_decode_childnumber() {
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.