diff options
author | Ali MJ Al-Nasrawy <alimjalnasrawy@gmail.com> | 2021-04-11 17:30:08 +0000 |
---|---|---|
committer | Ali MJ Al-Nasrawy <alimjalnasrawy@gmail.com> | 2021-04-11 17:30:08 +0000 |
commit | 50d43daaf605bb25f22f374f1098839ef0445810 (patch) | |
tree | cf012249e560378bb1f02314caf711c38f1f0ebd | |
parent | Avoid unneccessary syscalls for entry metadata (diff) | |
download | miniserve-50d43daaf605bb25f22f374f1098839ef0445810.tar.gz miniserve-50d43daaf605bb25f22f374f1098839ef0445810.zip |
Test for --no-symlink option
-rw-r--r-- | tests/serve_request.rs | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/tests/serve_request.rs b/tests/serve_request.rs index 385feeb..1e92339 100644 --- a/tests/serve_request.rs +++ b/tests/serve_request.rs @@ -159,15 +159,18 @@ fn serves_requests_no_hidden_files_without_flag(tmpdir: TempDir, port: u16) -> R Ok(()) } -#[rstest] -fn serves_requests_symlinks(tmpdir: TempDir, port: u16) -> Result<(), Error> { - let mut child = Command::cargo_bin("miniserve")? - .arg(tmpdir.path()) +#[rstest(no_symlinks, case(true), case(false))] +fn serves_requests_symlinks(tmpdir: TempDir, port: u16, no_symlinks: bool) -> Result<(), Error> { + let mut comm = Command::cargo_bin("miniserve")?; + comm.arg(tmpdir.path()) .arg("-p") .arg(port.to_string()) - .stdout(Stdio::null()) - .spawn()?; + .stdout(Stdio::null()); + if no_symlinks { + comm.arg("--no-symlinks"); + } + let mut child = comm.spawn()?; sleep(Duration::from_secs(1)); let files = &["symlink-file.html"]; @@ -199,9 +202,16 @@ fn serves_requests_symlinks(tmpdir: TempDir, port: u16) -> Result<(), Error> { for &entry in files.into_iter().chain(dirs) { let node = parsed .find(|x: &Node| x.name().unwrap_or_default() == "a" && x.text() == entry) - .next() - .unwrap(); + .next(); + assert_eq!(node.is_none(), no_symlinks); + if no_symlinks { + continue; + } + + let node = node.unwrap(); assert_eq!(node.attr("href").unwrap().strip_prefix("/").unwrap(), entry); + reqwest::blocking::get(format!("http://localhost:{}/{}", port, entry))? + .error_for_status()?; if entry.ends_with("/") { assert_eq!(node.attr("class").unwrap(), "directory"); } else { |