diff options
author | Sven-Hendrik Haase <svenstaro@gmail.com> | 2020-06-29 13:45:32 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-29 13:45:32 +0000 |
commit | 865e8cce79f3a03151418519d5614403fb2dc9af (patch) | |
tree | adf1141de7bf6fae74f492f1e8a519d77c42fe25 /tests/serve_request.rs | |
parent | Start 0.8.0 (diff) | |
parent | Cast port to u16 (diff) | |
download | miniserve-865e8cce79f3a03151418519d5614403fb2dc9af.tar.gz miniserve-865e8cce79f3a03151418519d5614403fb2dc9af.zip |
Merge pull request #327 from parrotmac/ip/0-random-port
Bind to random available port when port 0 specified
Diffstat (limited to 'tests/serve_request.rs')
-rw-r--r-- | tests/serve_request.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/serve_request.rs b/tests/serve_request.rs index 5761a65..ad9dc2c 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> { @@ -70,6 +71,30 @@ fn serves_requests_with_non_default_port(tmpdir: TempDir, port: u16) -> Result<( } #[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::<u16>().unwrap(); + + assert!(port_num > 0); + + Ok(()) +} + +#[rstest] fn serves_requests_custom_index_notice(tmpdir: TempDir, port: u16) -> Result<(), Error> { let mut child = Command::cargo_bin("miniserve")? .arg("--index=not.html") |