aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAli MJ Al-Nasrawy <alimjalnasrawy@gmail.com>2021-04-11 17:30:08 +0000
committerAli MJ Al-Nasrawy <alimjalnasrawy@gmail.com>2021-04-11 17:30:08 +0000
commit50d43daaf605bb25f22f374f1098839ef0445810 (patch)
treecf012249e560378bb1f02314caf711c38f1f0ebd
parentAvoid unneccessary syscalls for entry metadata (diff)
downloadminiserve-50d43daaf605bb25f22f374f1098839ef0445810.tar.gz
miniserve-50d43daaf605bb25f22f374f1098839ef0445810.zip
Test for --no-symlink option
-rw-r--r--tests/serve_request.rs26
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 {