diff --git a/radicle-node/src/test/environment.rs b/radicle-node/src/test/environment.rs index 2a146e65..6d608a2c 100644 --- a/radicle-node/src/test/environment.rs +++ b/radicle-node/src/test/environment.rs @@ -301,7 +301,13 @@ impl + Signer + Clone> Node { pub fn spawn(self, config: service::Config) -> NodeHandle { let listen = vec![([0, 0, 0, 0], 0).into()]; let proxy = net::SocketAddr::new(net::Ipv4Addr::LOCALHOST.into(), 9050); - let daemon = ([0, 0, 0, 0], fastrand::u16(1025..)).into(); + let daemon: net::SocketAddr = { + // Find free port for git-daemon to bind to. + // This is a somewhat racy solution, though it works much better than assigning a random + // port. + let sock = net::TcpListener::bind("0.0.0.0:0").unwrap(); + ([0, 0, 0, 0], sock.local_addr().unwrap().port()).into() + }; let (_, signals) = chan::bounded(1); let rt = Runtime::init( self.home.clone(),