From aa503c46c384c13fb02bf0cc98438336a161fcd4 Mon Sep 17 00:00:00 2001 From: Isaac Parker Date: Sun, 28 Jun 2020 14:03:31 -0600 Subject: Bind to random port when port 0 specified --- tests/serve_request.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'tests/serve_request.rs') diff --git a/tests/serve_request.rs b/tests/serve_request.rs index 5761a65..918bb98 100644 --- a/tests/serve_request.rs +++ b/tests/serve_request.rs @@ -9,6 +9,7 @@ use select::node::Node; use std::process::{Command, Stdio}; use std::thread::sleep; use std::time::Duration; +use regex::{Regex}; #[rstest] fn serves_requests_with_no_options(tmpdir: TempDir) -> Result<(), Error> { @@ -69,6 +70,31 @@ fn serves_requests_with_non_default_port(tmpdir: TempDir, port: u16) -> Result<( Ok(()) } +#[rstest] +fn serves_requests_with_randomly_assigned_port(tmpdir: TempDir) -> Result<(), Error> { + let mut child = Command::cargo_bin("miniserve")? + .arg(tmpdir.path()) + .arg("-p") + .arg("0".to_string()) + .stdout(Stdio::piped()) + .spawn()?; + + sleep(Duration::from_secs(1)); + child.kill()?; + + let output = child.wait_with_output().expect("Failed to read stdout"); + let all_text = String::from_utf8(output.stdout)?; + + let re = Regex::new(r"http://127.0.0.1:(\d+)").unwrap(); + let caps = re.captures(all_text.as_str()).unwrap(); + let port_num = caps.get(1).unwrap().as_str().parse::().unwrap(); + + assert!(port_num > 0); + assert!(port_num <= 65535); + + Ok(()) +} + #[rstest] fn serves_requests_custom_index_notice(tmpdir: TempDir, port: u16) -> Result<(), Error> { let mut child = Command::cargo_bin("miniserve")? -- cgit v1.2.3 From b6b363a9350e43bd464160af659f5100e301632c Mon Sep 17 00:00:00 2001 From: Isaac Parker Date: Mon, 29 Jun 2020 00:09:58 -0600 Subject: Cast port to u16 --- tests/serve_request.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'tests/serve_request.rs') diff --git a/tests/serve_request.rs b/tests/serve_request.rs index 918bb98..ad9dc2c 100644 --- a/tests/serve_request.rs +++ b/tests/serve_request.rs @@ -9,7 +9,7 @@ use select::node::Node; use std::process::{Command, Stdio}; use std::thread::sleep; use std::time::Duration; -use regex::{Regex}; +use regex::Regex; #[rstest] fn serves_requests_with_no_options(tmpdir: TempDir) -> Result<(), Error> { @@ -87,10 +87,9 @@ fn serves_requests_with_randomly_assigned_port(tmpdir: TempDir) -> Result<(), Er let re = Regex::new(r"http://127.0.0.1:(\d+)").unwrap(); let caps = re.captures(all_text.as_str()).unwrap(); - let port_num = caps.get(1).unwrap().as_str().parse::().unwrap(); + let port_num = caps.get(1).unwrap().as_str().parse::().unwrap(); assert!(port_num > 0); - assert!(port_num <= 65535); Ok(()) } -- cgit v1.2.3