diff --git a/eth2/types/src/beacon_state.rs b/eth2/types/src/beacon_state.rs index b1072b2e7f..336fcf79a0 100644 --- a/eth2/types/src/beacon_state.rs +++ b/eth2/types/src/beacon_state.rs @@ -86,7 +86,9 @@ where pub fork: Fork, // Validator registry + #[compare_fields(as_slice)] pub validator_registry: Vec, + #[compare_fields(as_slice)] pub balances: Vec, // Randomness and committees diff --git a/tests/ef_tests/src/case_result.rs b/tests/ef_tests/src/case_result.rs index c61874e3ac..cd40ac8cea 100644 --- a/tests/ef_tests/src/case_result.rs +++ b/tests/ef_tests/src/case_result.rs @@ -1,5 +1,5 @@ use super::*; -use compare_fields::{CompareFields, FieldComparison}; +use compare_fields::{CompareFields, Comparison, FieldComparison}; use std::fmt::Debug; use types::BeaconState; @@ -51,13 +51,17 @@ where { match (result, expected) { (Ok(result), Some(expected)) => { - let mismatching_fields: Vec = expected + let mut mismatching_fields: Vec = expected .compare_fields(result) .into_iter() - .filter(|c| !c.equal) - // .map(|c| c.field_name) + // Filter all out all fields that are equal. + .filter(Comparison::not_equal) .collect(); + mismatching_fields + .iter_mut() + .for_each(|f| f.retain_children(FieldComparison::not_equal)); + if !mismatching_fields.is_empty() { Err(Error::NotEqual(format!( "Fields not equal (a = expected, b = result): {:#?}",