diff --git a/ethers-core/Cargo.toml b/ethers-core/Cargo.toml index 4c48ad1f..e2513bbb 100644 --- a/ethers-core/Cargo.toml +++ b/ethers-core/Cargo.toml @@ -44,8 +44,10 @@ syn = { version = "1.0.107", optional = true } proc-macro2 = { version = "1.0.50", optional = true } num_enum = "0.5.7" -[dev-dependencies] +[target.'cfg(not(target_arch = "wasm32"))'.dependencies] tempfile = { version = "3.3.0", default-features = false } + +[dev-dependencies] serde_json = { version = "1.0.64", default-features = false } bincode = { version = "1.3.3", default-features = false } once_cell = { version = "1.17.0" } diff --git a/ethers-core/src/utils/geth.rs b/ethers-core/src/utils/geth.rs index 25d7a553..a266169a 100644 --- a/ethers-core/src/utils/geth.rs +++ b/ethers-core/src/utils/geth.rs @@ -6,13 +6,13 @@ use crate::{ utils::secret_key_to_address, }; use std::{ - env::temp_dir, fs::{create_dir, File}, io::{BufRead, BufReader}, path::PathBuf, process::{Child, ChildStderr, Command, Stdio}, time::{Duration, Instant}, }; +use tempfile::tempdir; /// How long we will wait for geth to indicate that it is ready. const GETH_STARTUP_TIMEOUT_MILLIS: u64 = 10_000; @@ -402,7 +402,11 @@ impl Geth { if let Some(ref genesis) = self.genesis { // create a temp dir to store the genesis file - let temp_genesis_path = temp_dir().join("genesis.json"); + let temp_genesis_dir_path = + tempdir().expect("should be able to create temp dir for genesis init").into_path(); + + // create a temp dir to store the genesis file + let temp_genesis_path = temp_genesis_dir_path.join("genesis.json"); // create the genesis file let mut file = File::create(&temp_genesis_path).expect("could not create genesis file"); @@ -425,6 +429,10 @@ impl Geth { .expect("failed to spawn geth init") .wait() .expect("failed to wait for geth init to exit"); + + // clean up the temp dir which is now persisted + std::fs::remove_dir_all(temp_genesis_dir_path) + .expect("could not remove genesis temp dir"); } if let Some(ref data_dir) = self.data_dir {