From e760afbc1a5d655f175418894d2201db79aaddf4 Mon Sep 17 00:00:00 2001 From: Paul Hauner Date: Wed, 22 May 2019 18:55:00 +1000 Subject: [PATCH] Tidy presentation of errors for `ef_tests` --- eth2/utils/compare_fields/src/lib.rs | 2 +- tests/ef_tests/src/case_result.rs | 8 ++++---- tests/ef_tests/src/doc.rs | 6 ++++-- tests/ef_tests/src/error.rs | 18 ++++++++++++++++++ 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/eth2/utils/compare_fields/src/lib.rs b/eth2/utils/compare_fields/src/lib.rs index ce0832deea..75f20b3c53 100644 --- a/eth2/utils/compare_fields/src/lib.rs +++ b/eth2/utils/compare_fields/src/lib.rs @@ -1,7 +1,7 @@ #[derive(Debug, PartialEq, Clone)] pub struct FieldComparison { - pub equal: bool, pub field_name: String, + pub equal: bool, pub a: String, pub b: String, } diff --git a/tests/ef_tests/src/case_result.rs b/tests/ef_tests/src/case_result.rs index b58cb7702c..613b82734b 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; +use compare_fields::{CompareFields, FieldComparison}; use std::fmt::Debug; use types::BeaconState; @@ -51,16 +51,16 @@ where { match (result, expected) { (Ok(result), Some(expected)) => { - let mismatching_fields: Vec = expected + let mismatching_fields: Vec = expected .compare_fields(result) .into_iter() .filter(|c| !c.equal) - .map(|c| c.field_name) + // .map(|c| c.field_name) .collect(); if !mismatching_fields.is_empty() { Err(Error::NotEqual(format!( - "Result mismatch. Fields not equal: {:?}", + "Fields not equal: {:#?}", mismatching_fields ))) } else { diff --git a/tests/ef_tests/src/doc.rs b/tests/ef_tests/src/doc.rs index c475c67c66..6b80646193 100644 --- a/tests/ef_tests/src/doc.rs +++ b/tests/ef_tests/src/doc.rs @@ -108,9 +108,11 @@ pub fn print_failures(doc: &Doc, results: &[CaseResult]) { println!(""); for failure in failures { + let error = failure.result.clone().unwrap_err(); + println!("-------"); - println!("case[{}].result:", failure.case_index); - println!("{:#?}", failure.result); + println!("case[{}] failed with {}:", failure.case_index, error.name()); + println!("{}", error.message()); } println!(""); } diff --git a/tests/ef_tests/src/error.rs b/tests/ef_tests/src/error.rs index 58732e83ea..cd812d2fd8 100644 --- a/tests/ef_tests/src/error.rs +++ b/tests/ef_tests/src/error.rs @@ -7,3 +7,21 @@ pub enum Error { /// Failed to parse the test (internal error). FailedToParseTest(String), } + +impl Error { + pub fn name(&self) -> &str { + match self { + Error::NotEqual(_) => "NotEqual", + Error::DidntFail(_) => "DidntFail", + Error::FailedToParseTest(_) => "FailedToParseTest", + } + } + + pub fn message(&self) -> &str { + match self { + Error::NotEqual(m) => m.as_str(), + Error::DidntFail(m) => m.as_str(), + Error::FailedToParseTest(m) => m.as_str(), + } + } +}