Skip to content
This repository has been archived by the owner on Nov 6, 2020. It is now read-only.

Conditionally compile ethcore public test helpers #8743

Merged
merged 3 commits into from
Jun 4, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions ethcore/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,5 @@ json-tests = ["ethcore-transaction/json-tests"]
test-heavy = []
# Compile benches
benches = []
# Compile test helpers
test-helpers = []
3 changes: 3 additions & 0 deletions ethcore/private-tx/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,6 @@ serde_derive = "1.0"
serde_json = "1.0"
tiny-keccak = "1.3"
url = "1"

[dev-dependencies]
ethcore = { path = "..", features = ["test-helpers"] }
4 changes: 4 additions & 0 deletions ethcore/src/client/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,20 @@ mod ancient_import;
mod client;
mod config;
mod error;
#[cfg(any(test, feature="test-helpers"))]
mod evm_test_client;
mod io_message;
#[cfg(any(test, feature="test-helpers"))]
mod test_client;
mod trace;

pub use self::client::*;
pub use self::config::{Mode, ClientConfig, DatabaseCompactionProfile, BlockChainConfig, VMType};
pub use self::error::Error;
#[cfg(any(test, feature="test-helpers"))]
pub use self::evm_test_client::{EvmTestClient, EvmTestError, TransactResult};
pub use self::io_message::ClientIoMessage;
#[cfg(any(test, feature="test-helpers"))]
pub use self::test_client::{TestBlockChainClient, EachBlockWith};
pub use self::chain_notify::{ChainNotify, ChainRoute, ChainRouteType, ChainMessageType};
pub use self::traits::{
Expand Down
4 changes: 2 additions & 2 deletions ethcore/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,6 @@ pub mod snapshot;
pub mod spec;
pub mod state;
pub mod state_db;
// Test helpers made public for usage outside ethcore
pub mod test_helpers;
pub mod trace;
pub mod verification;

Expand All @@ -177,6 +175,8 @@ mod tests;
#[cfg(test)]
#[cfg(feature="json-tests")]
mod json_tests;
#[cfg(any(test, feature="test-helpers"))]
pub mod test_helpers;
#[cfg(test)]
mod test_helpers_internal;

Expand Down
26 changes: 19 additions & 7 deletions ethcore/src/spec/spec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,7 @@ macro_rules! load_bundled {
};
}

#[cfg(any(test, feature="test-helpers"))]
macro_rules! load_machine_bundled {
($e:expr) => {
Spec::load_machine(
Expand Down Expand Up @@ -839,60 +840,68 @@ impl Spec {
self.engine.genesis_epoch_data(&genesis, &call)
}

/// Create a new Spec with InstantSeal consensus which does internal sealing (not requiring
/// work).
pub fn new_instant() -> Spec {
load_bundled!("instant_seal")
}

/// Create a new Spec which conforms to the Frontier-era Morden chain except that it's a
/// NullEngine consensus.
#[cfg(any(test, feature="test-helpers"))]
pub fn new_test() -> Spec {
load_bundled!("null_morden")
}

/// Create the EthereumMachine corresponding to Spec::new_test.
#[cfg(any(test, feature="test-helpers"))]
pub fn new_test_machine() -> EthereumMachine { load_machine_bundled!("null_morden") }


/// Create a new Spec which conforms to the Frontier-era Morden chain except that it's a NullEngine consensus with applying reward on block close.
#[cfg(any(test, feature="test-helpers"))]
pub fn new_test_with_reward() -> Spec { load_bundled!("null_morden_with_reward") }

/// Create a new Spec which is a NullEngine consensus with a premine of address whose
/// secret is keccak('').
#[cfg(any(test, feature="test-helpers"))]
pub fn new_null() -> Spec {
load_bundled!("null")
}

/// Create a new Spec which constructs a contract at address 5 with storage at 0 equal to 1.
#[cfg(any(test, feature="test-helpers"))]
pub fn new_test_constructor() -> Spec {
load_bundled!("constructor")
}

/// Create a new Spec with InstantSeal consensus which does internal sealing (not requiring
/// work).
pub fn new_instant() -> Spec {
load_bundled!("instant_seal")
}

/// Create a new Spec with AuthorityRound consensus which does internal sealing (not
/// requiring work).
/// Accounts with secrets keccak("0") and keccak("1") are the validators.
#[cfg(any(test, feature="test-helpers"))]
pub fn new_test_round() -> Self {
load_bundled!("authority_round")
}

/// Create a new Spec with AuthorityRound consensus which does internal sealing (not
/// requiring work) with empty step messages enabled.
/// Accounts with secrets keccak("0") and keccak("1") are the validators.
#[cfg(any(test, feature="test-helpers"))]
pub fn new_test_round_empty_steps() -> Self {
load_bundled!("authority_round_empty_steps")
}

/// Create a new Spec with AuthorityRound consensus (with empty steps) using a block reward
/// contract. The contract source code can be found at:
/// https://github.com/parity-contracts/block-reward/blob/daf7d44383b6cdb11cb6b953b018648e2b027cfb/contracts/ExampleBlockReward.sol
#[cfg(any(test, feature="test-helpers"))]
pub fn new_test_round_block_reward_contract() -> Self {
load_bundled!("authority_round_block_reward_contract")
}

/// Create a new Spec with Tendermint consensus which does internal sealing (not requiring
/// work).
/// Account keccak("0") and keccak("1") are a authorities.
#[cfg(any(test, feature="test-helpers"))]
pub fn new_test_tendermint() -> Self {
load_bundled!("tendermint")
}
Expand All @@ -905,13 +914,15 @@ impl Spec {
/// "0xbfc708a000000000000000000000000082a978b3f5962a5b0957d9ee9eef472ee55b42f1" and added
/// back in using
/// "0x4d238c8e00000000000000000000000082a978b3f5962a5b0957d9ee9eef472ee55b42f1".
#[cfg(any(test, feature="test-helpers"))]
pub fn new_validator_safe_contract() -> Self {
load_bundled!("validator_safe_contract")
}

/// The same as the `safeContract`, but allows reporting and uses AuthorityRound.
/// Account is marked with `reportBenign` it can be checked as disliked with "0xd8f2e0bf".
/// Validator can be removed with `reportMalicious`.
#[cfg(any(test, feature="test-helpers"))]
pub fn new_validator_contract() -> Self {
load_bundled!("validator_contract")
}
Expand All @@ -920,6 +931,7 @@ impl Spec {
/// height.
/// Account with secrets keccak("0") is the validator for block 1 and with keccak("1")
/// onwards.
#[cfg(any(test, feature="test-helpers"))]
pub fn new_validator_multi() -> Self {
load_bundled!("validator_multi")
}
Expand Down
1 change: 1 addition & 0 deletions ethcore/sync/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,4 @@ ethcore-io = { path = "../../util/io", features = ["mio"] }
ethkey = { path = "../../ethkey" }
kvdb-memorydb = { path = "../../util/kvdb-memorydb" }
ethcore-private-tx = { path = "../private-tx" }
ethcore = { path = "..", features = ["test-helpers"] }