From f4722deada16a9c02f8b39c97edc789ce420afef Mon Sep 17 00:00:00 2001 From: spacebear Date: Thu, 10 Jul 2025 18:38:28 -0400 Subject: [PATCH] Use tempfile for temporary e2e test directories --- Cargo-minimal.lock | 90 ++++++++++++++++++++++++++++++++-------- Cargo-recent.lock | 90 ++++++++++++++++++++++++++++++++-------- payjoin-cli/Cargo.toml | 1 + payjoin-cli/tests/e2e.rs | 59 +++++++------------------- 4 files changed, 161 insertions(+), 79 deletions(-) diff --git a/Cargo-minimal.lock b/Cargo-minimal.lock index 9b44cb8d2..d655590ff 100644 --- a/Cargo-minimal.lock +++ b/Cargo-minimal.lock @@ -86,7 +86,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", ] @@ -771,12 +771,12 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.9" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -948,7 +948,19 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -1295,9 +1307,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libredox" @@ -1322,6 +1334,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + [[package]] name = "lock_api" version = "0.4.12" @@ -1414,7 +1432,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.48.0", ] @@ -1644,6 +1662,7 @@ dependencies = [ "rustls 0.22.4", "serde", "sled", + "tempfile", "tokio", "tokio-rustls", "url", @@ -1899,6 +1918,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.8.5" @@ -1926,7 +1951,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -2089,7 +2114,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "spin 0.9.8", "untrusted 0.9.0", @@ -2132,10 +2157,23 @@ dependencies = [ "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", +] + [[package]] name = "rustls" version = "0.21.12" @@ -2528,14 +2566,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.12.0" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.3", "once_cell", - "rustix", + "rustix 1.0.7", "windows-sys 0.59.0", ] @@ -2933,6 +2971,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.93" @@ -3225,6 +3272,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "xattr" version = "1.3.1" @@ -3232,8 +3288,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", - "linux-raw-sys", - "rustix", + "linux-raw-sys 0.4.14", + "rustix 0.38.36", ] [[package]] diff --git a/Cargo-recent.lock b/Cargo-recent.lock index 9b44cb8d2..d655590ff 100644 --- a/Cargo-recent.lock +++ b/Cargo-recent.lock @@ -86,7 +86,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", ] @@ -771,12 +771,12 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.9" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -948,7 +948,19 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -1295,9 +1307,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libredox" @@ -1322,6 +1334,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + [[package]] name = "lock_api" version = "0.4.12" @@ -1414,7 +1432,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.48.0", ] @@ -1644,6 +1662,7 @@ dependencies = [ "rustls 0.22.4", "serde", "sled", + "tempfile", "tokio", "tokio-rustls", "url", @@ -1899,6 +1918,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.8.5" @@ -1926,7 +1951,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -2089,7 +2114,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "spin 0.9.8", "untrusted 0.9.0", @@ -2132,10 +2157,23 @@ dependencies = [ "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", +] + [[package]] name = "rustls" version = "0.21.12" @@ -2528,14 +2566,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.12.0" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.3", "once_cell", - "rustix", + "rustix 1.0.7", "windows-sys 0.59.0", ] @@ -2933,6 +2971,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.93" @@ -3225,6 +3272,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "xattr" version = "1.3.1" @@ -3232,8 +3288,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", - "linux-raw-sys", - "rustix", + "linux-raw-sys 0.4.14", + "rustix 0.38.36", ] [[package]] diff --git a/payjoin-cli/Cargo.toml b/payjoin-cli/Cargo.toml index 180518126..9392fffad 100644 --- a/payjoin-cli/Cargo.toml +++ b/payjoin-cli/Cargo.toml @@ -50,3 +50,4 @@ url = { version = "2.3.1", features = ["serde"] } [dev-dependencies] nix = "0.26.4" payjoin-test-utils = { version = "0.0.1" } +tempfile = "3.20.0" diff --git a/payjoin-cli/tests/e2e.rs b/payjoin-cli/tests/e2e.rs index 0cbc91d45..9001be04d 100644 --- a/payjoin-cli/tests/e2e.rs +++ b/payjoin-cli/tests/e2e.rs @@ -1,12 +1,11 @@ #[cfg(feature = "_danger-local-https")] mod e2e { - use std::env; - use std::path::PathBuf; use std::process::{ExitStatus, Stdio}; use nix::sys::signal::{kill, Signal}; use nix::unistd::Pid; use payjoin_test_utils::{init_bitcoind_sender_receiver, BoxError}; + use tempfile::tempdir; use tokio::io::{AsyncBufReadExt, AsyncWriteExt, BufReader}; use tokio::process::Command; @@ -17,31 +16,15 @@ mod e2e { child.wait().await } - struct CleanupGuard { - paths: Vec, - } - - impl Drop for CleanupGuard { - fn drop(&mut self) { - for path in &self.paths { - cleanup_temp_file(path); - } - } - } - const RECEIVE_SATS: &str = "54321"; #[cfg(feature = "v1")] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn send_receive_payjoin_v1() -> Result<(), BoxError> { let (bitcoind, _sender, _receiver) = init_bitcoind_sender_receiver(None, None)?; - let temp_dir = env::temp_dir(); - let receiver_db_path = temp_dir.join("receiver_db"); - let sender_db_path = temp_dir.join("sender_db"); - let _cleanup_guard = - CleanupGuard { paths: vec![receiver_db_path.clone(), sender_db_path.clone()] }; - let receiver_db_path_clone = receiver_db_path.clone(); - let sender_db_path_clone = sender_db_path.clone(); + let temp_dir = tempdir()?; + let receiver_db_path = temp_dir.path().join("receiver_db"); + let sender_db_path = temp_dir.path().join("sender_db"); let port = find_free_port()?; let payjoin_sent = tokio::spawn(async move { @@ -58,7 +41,7 @@ mod e2e { .arg("--cookie-file") .arg(cookie_file) .arg("--db-path") - .arg(&receiver_db_path_clone) + .arg(&receiver_db_path) .arg("receive") .arg(RECEIVE_SATS) .arg("--port") @@ -100,7 +83,7 @@ mod e2e { .arg("--cookie-file") .arg(cookie_file) .arg("--db-path") - .arg(&sender_db_path_clone) + .arg(&sender_db_path) .arg("send") .arg(&bip21) .arg("--fee-rate") @@ -157,41 +140,33 @@ mod e2e { #[cfg(feature = "v2")] #[tokio::test(flavor = "multi_thread", worker_threads = 4)] async fn send_receive_payjoin_v2() -> Result<(), Box> { - use std::path::PathBuf; - use payjoin_test_utils::{init_tracing, TestServices}; + use tempfile::TempDir; use tokio::process::{Child, ChildStdout}; type Result = std::result::Result; init_tracing(); let mut services = TestServices::initialize().await?; - let temp_dir = env::temp_dir(); - let receiver_db_path = temp_dir.join("receiver_db"); - let sender_db_path = temp_dir.join("sender_db"); - let _cleanup_guard = - CleanupGuard { paths: vec![receiver_db_path.clone(), sender_db_path.clone()] }; + let temp_dir = tempdir()?; let result = tokio::select! { res = services.take_ohttp_relay_handle() => Err(format!("Ohttp relay is long running: {res:?}").into()), res = services.take_directory_handle() => Err(format!("Directory server is long running: {res:?}").into()), - res = send_receive_cli_async(&services, receiver_db_path.clone(), sender_db_path.clone()) => res, + res = send_receive_cli_async(&services, &temp_dir) => res, }; assert!(result.is_ok(), "send_receive failed: {:#?}", result.unwrap_err()); - async fn send_receive_cli_async( - services: &TestServices, - receiver_db_path: PathBuf, - sender_db_path: PathBuf, - ) -> Result<()> { + async fn send_receive_cli_async(services: &TestServices, temp_dir: &TempDir) -> Result<()> { + let receiver_db_path = temp_dir.path().join("receiver_db"); + let sender_db_path = temp_dir.path().join("sender_db"); let (bitcoind, _sender, _receiver) = init_bitcoind_sender_receiver(None, None)?; - let temp_dir = env::temp_dir(); - let cert_path = temp_dir.join("localhost.der"); + let cert_path = std::env::temp_dir().join("localhost.der"); tokio::fs::write(&cert_path, services.cert()).await?; services.wait_for_services_ready().await?; let ohttp_keys = services.fetch_ohttp_keys().await?; - let ohttp_keys_path = temp_dir.join("ohttp_keys"); + let ohttp_keys_path = temp_dir.path().join("ohttp_keys"); tokio::fs::write(&ohttp_keys_path, ohttp_keys.encode()?).await?; let receiver_rpchost = format!("http://{}/wallet/receiver", bitcoind.params.rpc_socket); @@ -419,10 +394,4 @@ mod e2e { Ok(()) } - - fn cleanup_temp_file(path: &std::path::Path) { - if let Err(e) = std::fs::remove_dir_all(path) { - eprintln!("Failed to remove {path:?}: {e}"); - } - } }