Begin updating serde such that it can read the yaml test files
This commit is contained in:
		
							parent
							
								
									37b8e9f39a
								
							
						
					
					
						commit
						26f8694161
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -20,7 +20,6 @@ pub struct TestDoc {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
#[ignore]
 | 
			
		||||
fn yaml() {
 | 
			
		||||
    use serde_yaml;
 | 
			
		||||
    use std::{fs::File, io::prelude::*, path::PathBuf};
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@ boolean-bitfield = { path = "../utils/boolean-bitfield" }
 | 
			
		||||
dirs = "1.0"
 | 
			
		||||
ethereum-types = "0.5"
 | 
			
		||||
hashing = { path = "../utils/hashing" }
 | 
			
		||||
hex = "0.3"
 | 
			
		||||
honey-badger-split =  { path = "../utils/honey-badger-split" }
 | 
			
		||||
int_to_bytes = { path = "../utils/int_to_bytes" }
 | 
			
		||||
log = "0.4"
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ use crate::*;
 | 
			
		||||
use bls::Signature;
 | 
			
		||||
use int_to_bytes::int_to_bytes4;
 | 
			
		||||
use serde_derive::Deserialize;
 | 
			
		||||
use test_utils::u8_from_hex_str;
 | 
			
		||||
 | 
			
		||||
const GWEI: u64 = 1_000_000_000;
 | 
			
		||||
 | 
			
		||||
@ -57,6 +58,7 @@ pub struct ChainSpec {
 | 
			
		||||
    pub far_future_epoch: Epoch,
 | 
			
		||||
    pub zero_hash: Hash256,
 | 
			
		||||
    pub empty_signature: Signature,
 | 
			
		||||
    #[serde(deserialize_with = "u8_from_hex_str")]
 | 
			
		||||
    pub bls_withdrawal_prefix_byte: u8,
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
use crate::{test_utils::TestRandom, ChainSpec, Epoch};
 | 
			
		||||
use crate::{test_utils::{fork_from_hex_str, TestRandom}, ChainSpec, Epoch};
 | 
			
		||||
use int_to_bytes::int_to_bytes4;
 | 
			
		||||
use rand::RngCore;
 | 
			
		||||
use serde_derive::{Deserialize, Serialize};
 | 
			
		||||
@ -12,7 +12,9 @@ use test_random_derive::TestRandom;
 | 
			
		||||
    Debug, Clone, PartialEq, Default, Serialize, Deserialize, Encode, Decode, TreeHash, TestRandom,
 | 
			
		||||
)]
 | 
			
		||||
pub struct Fork {
 | 
			
		||||
    #[serde(deserialize_with = "fork_from_hex_str")]
 | 
			
		||||
    pub previous_version: [u8; 4],
 | 
			
		||||
    #[serde(deserialize_with = "fork_from_hex_str")]
 | 
			
		||||
    pub current_version: [u8; 4],
 | 
			
		||||
    pub epoch: Epoch,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@
 | 
			
		||||
mod macros;
 | 
			
		||||
mod generate_deterministic_keypairs;
 | 
			
		||||
mod keypairs_file;
 | 
			
		||||
mod serde_utils;
 | 
			
		||||
mod test_random;
 | 
			
		||||
mod testing_attestation_builder;
 | 
			
		||||
mod testing_attestation_data_builder;
 | 
			
		||||
@ -17,6 +18,7 @@ mod testing_voluntary_exit_builder;
 | 
			
		||||
pub use generate_deterministic_keypairs::generate_deterministic_keypairs;
 | 
			
		||||
pub use keypairs_file::KeypairsFile;
 | 
			
		||||
pub use rand::{prng::XorShiftRng, SeedableRng};
 | 
			
		||||
pub use serde_utils::{fork_from_hex_str, u8_from_hex_str};
 | 
			
		||||
pub use test_random::TestRandom;
 | 
			
		||||
pub use testing_attestation_builder::TestingAttestationBuilder;
 | 
			
		||||
pub use testing_attestation_data_builder::TestingAttestationDataBuilder;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								eth2/types/src/test_utils/serde_utils.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								eth2/types/src/test_utils/serde_utils.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
use serde::{Deserialize, Deserializer};
 | 
			
		||||
use serde::de::Error;
 | 
			
		||||
 | 
			
		||||
pub fn u8_from_hex_str<'de, D>(deserializer: D) -> Result<u8, D::Error>
 | 
			
		||||
where
 | 
			
		||||
    D: Deserializer<'de>,
 | 
			
		||||
{
 | 
			
		||||
    let s: String = Deserialize::deserialize(deserializer)?;
 | 
			
		||||
 | 
			
		||||
    u8::from_str_radix(&s.as_str()[2..], 16).map_err(D::Error::custom)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn fork_from_hex_str<'de, D>(deserializer: D) -> Result<[u8; 4], D::Error>
 | 
			
		||||
where
 | 
			
		||||
    D: Deserializer<'de>,
 | 
			
		||||
{
 | 
			
		||||
    let s: String = Deserialize::deserialize(deserializer)?;
 | 
			
		||||
    let mut array = [0 as u8; 4];
 | 
			
		||||
    let decoded: Vec<u8> = hex::decode(&s.as_str()[2..]).map_err(D::Error::custom)?;
 | 
			
		||||
 | 
			
		||||
    for (i, item) in array.iter_mut().enumerate() {
 | 
			
		||||
        if i > decoded.len() {
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        *item = decoded[i];
 | 
			
		||||
    }
 | 
			
		||||
    Ok(array)
 | 
			
		||||
}
 | 
			
		||||
@ -8,13 +8,13 @@ impl<'de> Visitor<'de> for HexVisitor {
 | 
			
		||||
    type Value = Vec<u8>;
 | 
			
		||||
 | 
			
		||||
    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
 | 
			
		||||
        formatter.write_str("a hex string (without 0x prefix)")
 | 
			
		||||
        formatter.write_str("a hex string (irrelevant of prefix)")
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
 | 
			
		||||
    where
 | 
			
		||||
        E: de::Error,
 | 
			
		||||
    {
 | 
			
		||||
        Ok(hex::decode(value).map_err(|e| de::Error::custom(format!("invalid hex ({:?})", e)))?)
 | 
			
		||||
        Ok(hex::decode(value.trim_start_matches("0x")).map_err(|e| de::Error::custom(format!("invalid hex ({:?})", e)))?)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -73,7 +73,7 @@ impl Encodable for Signature {
 | 
			
		||||
impl Decodable for Signature {
 | 
			
		||||
    fn ssz_decode(bytes: &[u8], i: usize) -> Result<(Self, usize), DecodeError> {
 | 
			
		||||
        let (sig_bytes, i) = decode_ssz_list(bytes, i)?;
 | 
			
		||||
        let raw_sig = RawSignature::from_bytes(&sig_bytes).map_err(|_| DecodeError::TooShort)?;
 | 
			
		||||
        let raw_sig = RawSignature::from_bytes(&sig_bytes).map_err(|_| DecodeError::Invalid)?;
 | 
			
		||||
        Ok((Signature(raw_sig), i))
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user