Add basic code for new testing format
This commit is contained in:
parent
bf23a5b7b0
commit
31d960011f
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "tests/ef_tests/eth2.0-spec-tests"]
|
||||||
|
path = tests/ef_tests/eth2.0-spec-tests
|
||||||
|
url = https://github.com/ethereum/eth2.0-spec-tests
|
@ -29,6 +29,7 @@ members = [
|
|||||||
"beacon_node/rpc",
|
"beacon_node/rpc",
|
||||||
"beacon_node/version",
|
"beacon_node/version",
|
||||||
"beacon_node/beacon_chain",
|
"beacon_node/beacon_chain",
|
||||||
|
"tests/ef_tests",
|
||||||
"protos",
|
"protos",
|
||||||
"validator_client",
|
"validator_client",
|
||||||
"account_manager",
|
"account_manager",
|
||||||
|
10
tests/ef_tests/Cargo.toml
Normal file
10
tests/ef_tests/Cargo.toml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[package]
|
||||||
|
name = "ef_tests"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
serde = "1.0"
|
||||||
|
serde_derive = "1.0"
|
||||||
|
serde_yaml = "0.8"
|
1
tests/ef_tests/eth2.0-spec-tests
Submodule
1
tests/ef_tests/eth2.0-spec-tests
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 161a36ee6232d8d251d798c8262638ed0c34c9c6
|
30
tests/ef_tests/src/lib.rs
Normal file
30
tests/ef_tests/src/lib.rs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
use serde_derive::Deserialize;
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize)]
|
||||||
|
pub struct TestDoc<T> {
|
||||||
|
pub title: String,
|
||||||
|
pub summary: String,
|
||||||
|
pub forks_timeline: String,
|
||||||
|
pub forks: Vec<String>,
|
||||||
|
pub config: String,
|
||||||
|
pub runner: String,
|
||||||
|
pub handler: String,
|
||||||
|
pub test_cases: Vec<T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize)]
|
||||||
|
pub struct SszGenericCase {
|
||||||
|
#[serde(alias = "type")]
|
||||||
|
pub type_name: String,
|
||||||
|
pub valid: bool,
|
||||||
|
pub value: String,
|
||||||
|
pub ssz: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
assert_eq!(2 + 2, 4);
|
||||||
|
}
|
||||||
|
}
|
27
tests/ef_tests/tests/tests.rs
Normal file
27
tests/ef_tests/tests/tests.rs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
use ef_tests::*;
|
||||||
|
use serde::de::DeserializeOwned;
|
||||||
|
use std::{fs::File, io::prelude::*, path::PathBuf};
|
||||||
|
|
||||||
|
fn load_test_case<T: DeserializeOwned>(test_name: &str) -> TestDoc<T> {
|
||||||
|
let mut file = {
|
||||||
|
let mut file_path_buf = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||||
|
file_path_buf.push(format!("eth2.0-spec-tests/tests/{}", test_name));
|
||||||
|
|
||||||
|
File::open(file_path_buf).unwrap()
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut yaml_str = String::new();
|
||||||
|
file.read_to_string(&mut yaml_str).unwrap();
|
||||||
|
yaml_str = yaml_str.to_lowercase();
|
||||||
|
|
||||||
|
serde_yaml::from_str(&yaml_str.as_str()).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn ssz() {
|
||||||
|
let doc: TestDoc<SszGenericCase> = load_test_case("ssz_generic/uint/uint_bounds.yaml");
|
||||||
|
|
||||||
|
dbg!(doc);
|
||||||
|
|
||||||
|
assert!(false);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user