Skip to content

Commit 988ded4

Browse files
committed
Don't unwrap in e2e tests
1 parent f1a5c36 commit 988ded4

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

payjoin-cli/tests/e2e.rs

+14-15
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ mod e2e {
55

66
use nix::sys::signal::{kill, Signal};
77
use nix::unistd::Pid;
8-
use payjoin_test_utils::init_bitcoind_sender_receiver;
8+
use payjoin_test_utils::{init_bitcoind_sender_receiver, BoxError};
99
use tokio::fs;
1010
use tokio::io::{AsyncBufReadExt, AsyncWriteExt, BufReader};
1111
use tokio::process::Command;
@@ -19,19 +19,19 @@ mod e2e {
1919

2020
#[cfg(not(feature = "v2"))]
2121
#[tokio::test(flavor = "multi_thread", worker_threads = 4)]
22-
async fn send_receive_payjoin() {
23-
let (bitcoind, _sender, _receiver) = init_bitcoind_sender_receiver(None, None).unwrap();
22+
async fn send_receive_payjoin() -> Result<(), BoxError> {
23+
let (bitcoind, _sender, _receiver) = init_bitcoind_sender_receiver(None, None)?;
2424
let temp_dir = env::temp_dir();
2525
let receiver_db_path = temp_dir.join("receiver_db");
2626
let sender_db_path = temp_dir.join("sender_db");
2727
let receiver_db_path_clone = receiver_db_path.clone();
2828
let sender_db_path_clone = sender_db_path.clone();
29+
let port = find_free_port()?;
2930

3031
let payjoin_sent = tokio::spawn(async move {
3132
let receiver_rpchost = format!("http://{}/wallet/receiver", bitcoind.params.rpc_socket);
3233
let sender_rpchost = format!("http://{}/wallet/sender", bitcoind.params.rpc_socket);
3334
let cookie_file = &bitcoind.params.cookie_file;
34-
let port = find_free_port();
3535
let pj_endpoint = format!("https://localhost:{}", port);
3636
let payjoin_cli = env!("CARGO_BIN_EXE_payjoin-cli");
3737

@@ -118,29 +118,28 @@ mod e2e {
118118

119119
sigint(&cli_receiver).expect("Failed to kill payjoin-cli");
120120
sigint(&cli_sender).expect("Failed to kill payjoin-cli");
121-
payjoin_sent
121+
payjoin_sent.unwrap_or(Some(false)).expect("rx channel closed prematurely")
122122
})
123-
.await;
123+
.await?;
124124

125125
cleanup_temp_file(&receiver_db_path).await;
126126
cleanup_temp_file(&sender_db_path).await;
127-
assert!(
128-
payjoin_sent.unwrap().unwrap_or(Some(false)).unwrap(),
129-
"Payjoin send was not detected"
130-
);
131-
132-
fn find_free_port() -> u16 {
133-
let listener = std::net::TcpListener::bind("127.0.0.1:0").unwrap();
134-
listener.local_addr().unwrap().port()
127+
assert!(payjoin_sent, "Payjoin send was not detected");
128+
129+
fn find_free_port() -> Result<u16, BoxError> {
130+
let listener = std::net::TcpListener::bind("127.0.0.1:0")?;
131+
Ok(listener.local_addr()?.port())
135132
}
133+
134+
Ok(())
136135
}
137136

138137
#[cfg(feature = "v2")]
139138
#[tokio::test(flavor = "multi_thread", worker_threads = 4)]
140139
async fn send_receive_payjoin() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
141140
use std::path::PathBuf;
142141

143-
use payjoin_test_utils::{init_tracing, BoxError, TestServices};
142+
use payjoin_test_utils::{init_tracing, TestServices};
144143
use tokio::process::Child;
145144

146145
type Result<T> = std::result::Result<T, BoxError>;

0 commit comments

Comments
 (0)