diff --git a/Cargo.lock b/Cargo.lock index 5b1335d..3d9d50a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -556,6 +556,12 @@ dependencies = [ "version_check", ] +[[package]] +name = "get-port" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "888123007db34fbff15b5a347d46364dfbad531d6cb43de52cc0b62558f570e2" + [[package]] name = "getrandom" version = "0.2.7" @@ -895,6 +901,7 @@ dependencies = [ "clap", "env_logger", "futures", + "get-port", "ignore", "local-ip-address", "log", diff --git a/Cargo.toml b/Cargo.toml index 83a2bf1..9905bb7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,4 +27,5 @@ ignore = "0.4.25" path-absolutize = "3.1.1" [dev-dependencies] +get-port = "4.0.0" reqwest = "0.12.4" diff --git a/tests/test.rs b/tests/test.rs index b83879c..7853681 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -1,17 +1,20 @@ +use get_port::{Ops as _, tcp::TcpPort}; use live_server::{Options, listen}; use reqwest::StatusCode; +const HOST: &str = "127.0.0.1"; + #[tokio::test] async fn request() { - const HOST: &str = "127.0.0.1:8000"; + let authority = format!("{HOST}:{}", TcpPort::any(HOST).unwrap()); - let listener = listen(HOST, "./tests/page").await.unwrap(); + let listener = listen(&authority, "./tests/page").await.unwrap(); tokio::spawn(async { listener.start(Options::default()).await.unwrap(); }); // Test requesting index.html - let response = reqwest::get(format!("http://{HOST}")).await.unwrap(); + let response = reqwest::get(format!("http://{authority}")).await.unwrap(); assert_eq!(response.status(), StatusCode::OK); @@ -29,7 +32,7 @@ async fn request() { assert!(text.contains("