From 4b4d1d78921395f5ffdea0ff94815e100b3144ab Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 25 Aug 2022 21:59:32 -0400 Subject: Add tests for `--readme` --- tests/readme.rs | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 tests/readme.rs (limited to 'tests') diff --git a/tests/readme.rs b/tests/readme.rs new file mode 100644 index 0000000..0dabf87 --- /dev/null +++ b/tests/readme.rs @@ -0,0 +1,124 @@ +mod fixtures; + +use assert_cmd::prelude::*; +use assert_fs::fixture::{FileWriteStr, TempDir}; +use assert_fs::prelude::PathChild; +use fixtures::{server, tmpdir, Error, TestServer, DIRECTORIES}; +use reqwest::Url; +use rstest::rstest; +use select::document::Document; +use select::predicate::Attr; +use std::process::{Command, Stdio}; +use std::thread::sleep; +use std::time::Duration; + +#[rstest] +/// Do not show readme contents by default +fn no_readme_contents(server: TestServer) -> Result<(), Error> { + let body = reqwest::blocking::get(server.url())?.error_for_status()?; + let parsed = Document::from_read(body)?; + assert!(parsed.find(Attr("id", "readme")).next().is_none()); + assert!(parsed.find(Attr("id", "readme-filename")).next().is_none()); + assert!(parsed.find(Attr("id", "readme-contents")).next().is_none()); + + Ok(()) +} + +#[rstest] +/// Show readme contents when told to if there is no readme.md file +fn show_readme_contents(tmpdir: TempDir) -> Result<(), Error> { + tmpdir + .child("readme.md") + .write_str("Readme Contents.") + .expect("Couldn't write to readme.md"); + let mut child = Command::cargo_bin("miniserve")? + .arg("--readme") + .arg("--port") + .arg("8090") + .arg(tmpdir.path()) + .stdout(Stdio::null()) + .spawn()?; + + sleep(Duration::from_secs(1)); + let body = reqwest::blocking::get("http://localhost:8090")?.error_for_status()?; + let parsed = Document::from_read(body)?; + assert!(parsed.find(Attr("id", "readme")).next().is_some()); + assert!(parsed.find(Attr("id", "readme-filename")).next().is_some()); + assert!( + parsed + .find(Attr("id", "readme-filename")) + .next() + .unwrap() + .text() + == "readme.md" + ); + assert!(parsed.find(Attr("id", "readme-contents")).next().is_some()); + assert!( + parsed + .find(Attr("id", "readme-contents")) + .next() + .unwrap() + .text() + .trim() + == "Readme Contents." + ); + + child.kill()?; + Ok(()) +} + +#[rstest] +/// Show readme contents when told to if there is no readme.md file +fn show_readme_contents_directories(tmpdir: TempDir) -> Result<(), Error> { + let directories = DIRECTORIES.to_vec(); + for directory in directories.iter() { + tmpdir + .child(format!("{}{}", directory, "readme.md")) + .write_str("Readme Contents.") + .expect("Couldn't write to file"); + } + + let mut child = Command::cargo_bin("miniserve")? + .arg("--readme") + .arg(tmpdir.path()) + .stdout(Stdio::null()) + .spawn()?; + + sleep(Duration::from_secs(1)); + + for directory in directories { + let dir_body = + reqwest::blocking::get(Url::parse("http://localhost:8080")?.join(&directory)?)? + .error_for_status()?; + let dir_body_parsed = Document::from_read(dir_body)?; + assert!(dir_body_parsed.find(Attr("id", "readme")).next().is_some()); + assert!(dir_body_parsed + .find(Attr("id", "readme-filename")) + .next() + .is_some()); + assert!( + dir_body_parsed + .find(Attr("id", "readme-filename")) + .next() + .unwrap() + .text() + == "readme.md" + ); + assert!(dir_body_parsed + .find(Attr("id", "readme-contents")) + .next() + .is_some()); + assert!( + dir_body_parsed + .find(Attr("id", "readme-contents")) + .next() + .unwrap() + .text() + .trim() + == "Readme Contents." + ); + } + + child.kill()?; + Ok(()) +} -- cgit v1.2.3 From 83135dac7b2894d0f9ba5fb004d1b04d99251f3f Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 25 Aug 2022 22:27:52 -0400 Subject: Modify `--readme` tests for directories --- tests/readme.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/readme.rs b/tests/readme.rs index 0dabf87..201f9af 100644 --- a/tests/readme.rs +++ b/tests/readme.rs @@ -25,7 +25,7 @@ fn no_readme_contents(server: TestServer) -> Result<(), Error> { } #[rstest] -/// Show readme contents when told to if there is no readme.md file +/// Show readme contents when told to if there is readme.md file fn show_readme_contents(tmpdir: TempDir) -> Result<(), Error> { tmpdir .child("readme.md") @@ -68,13 +68,13 @@ fn show_readme_contents(tmpdir: TempDir) -> Result<(), Error> { } #[rstest] -/// Show readme contents when told to if there is no readme.md file +/// Show readme contents when told to if there is readme.md file on directories. fn show_readme_contents_directories(tmpdir: TempDir) -> Result<(), Error> { let directories = DIRECTORIES.to_vec(); for directory in directories.iter() { tmpdir .child(format!("{}{}", directory, "readme.md")) - .write_str("Readme Contents.") + .write_str(&format!("Readme Contents for {}.", directory)) .expect("Couldn't write to file"); } @@ -115,7 +115,7 @@ fn show_readme_contents_directories(tmpdir: TempDir) -> Result<(), Error> { .unwrap() .text() .trim() - == "Readme Contents." + == format!("Readme Contents for {}.", directory) ); } -- cgit v1.2.3 From 8483826332d50e080092bd734512634ea14bee17 Mon Sep 17 00:00:00 2001 From: Gaurav Date: Fri, 26 Aug 2022 17:20:16 -0400 Subject: Use `TestServer` in `--readme` tests --- tests/fixtures/mod.rs | 1 + tests/readme.rs | 50 +++++++------------------------------------------- 2 files changed, 8 insertions(+), 43 deletions(-) (limited to 'tests') diff --git a/tests/fixtures/mod.rs b/tests/fixtures/mod.rs index ec17f3e..138bfcf 100644 --- a/tests/fixtures/mod.rs +++ b/tests/fixtures/mod.rs @@ -17,6 +17,7 @@ pub static FILES: &[&str] = &[ "test.txt", "test.html", "test.mkv", + "readme.md", #[cfg(not(windows))] "test \" \' & < >.csv", "😀.data", diff --git a/tests/readme.rs b/tests/readme.rs index 201f9af..0e90217 100644 --- a/tests/readme.rs +++ b/tests/readme.rs @@ -1,16 +1,9 @@ mod fixtures; -use assert_cmd::prelude::*; -use assert_fs::fixture::{FileWriteStr, TempDir}; -use assert_fs::prelude::PathChild; -use fixtures::{server, tmpdir, Error, TestServer, DIRECTORIES}; -use reqwest::Url; +use fixtures::{server, Error, TestServer, DIRECTORIES}; use rstest::rstest; use select::document::Document; use select::predicate::Attr; -use std::process::{Command, Stdio}; -use std::thread::sleep; -use std::time::Duration; #[rstest] /// Do not show readme contents by default @@ -26,21 +19,8 @@ fn no_readme_contents(server: TestServer) -> Result<(), Error> { #[rstest] /// Show readme contents when told to if there is readme.md file -fn show_readme_contents(tmpdir: TempDir) -> Result<(), Error> { - tmpdir - .child("readme.md") - .write_str("Readme Contents.") - .expect("Couldn't write to readme.md"); - let mut child = Command::cargo_bin("miniserve")? - .arg("--readme") - .arg("--port") - .arg("8090") - .arg(tmpdir.path()) - .stdout(Stdio::null()) - .spawn()?; - - sleep(Duration::from_secs(1)); - let body = reqwest::blocking::get("http://localhost:8090")?.error_for_status()?; +fn show_readme_contents(#[with(&["--readme"])] server: TestServer) -> Result<(), Error> { + let body = reqwest::blocking::get(server.url())?.error_for_status()?; let parsed = Document::from_read(body)?; assert!(parsed.find(Attr("id", "readme")).next().is_some()); assert!(parsed.find(Attr("id", "readme-filename")).next().is_some()); @@ -60,35 +40,20 @@ fn show_readme_contents(tmpdir: TempDir) -> Result<(), Error> { .unwrap() .text() .trim() - == "Readme Contents." + == "Test Hello Yes" ); - child.kill()?; Ok(()) } #[rstest] /// Show readme contents when told to if there is readme.md file on directories. -fn show_readme_contents_directories(tmpdir: TempDir) -> Result<(), Error> { +fn show_readme_contents_directories(#[with(&["--readme"])] server: TestServer) -> Result<(), Error> { let directories = DIRECTORIES.to_vec(); - for directory in directories.iter() { - tmpdir - .child(format!("{}{}", directory, "readme.md")) - .write_str(&format!("Readme Contents for {}.", directory)) - .expect("Couldn't write to file"); - } - - let mut child = Command::cargo_bin("miniserve")? - .arg("--readme") - .arg(tmpdir.path()) - .stdout(Stdio::null()) - .spawn()?; - - sleep(Duration::from_secs(1)); for directory in directories { let dir_body = - reqwest::blocking::get(Url::parse("http://localhost:8080")?.join(&directory)?)? + reqwest::blocking::get(server.url().join(&directory)?)? .error_for_status()?; let dir_body_parsed = Document::from_read(dir_body)?; assert!(dir_body_parsed.find(Attr("id", "readme")).next().is_some()); @@ -115,10 +80,9 @@ fn show_readme_contents_directories(tmpdir: TempDir) -> Result<(), Error> { .unwrap() .text() .trim() - == format!("Readme Contents for {}.", directory) + == &format!("This is {}readme.md", directory) ); } - child.kill()?; Ok(()) } -- cgit v1.2.3 From c951d7ad187059c9152309e0dc2fd771f5e4b2d4 Mon Sep 17 00:00:00 2001 From: Gaurav Date: Fri, 26 Aug 2022 17:27:42 -0400 Subject: Appease `cargo fmt` --- tests/readme.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/readme.rs b/tests/readme.rs index 0e90217..59f3d65 100644 --- a/tests/readme.rs +++ b/tests/readme.rs @@ -48,13 +48,14 @@ fn show_readme_contents(#[with(&["--readme"])] server: TestServer) -> Result<(), #[rstest] /// Show readme contents when told to if there is readme.md file on directories. -fn show_readme_contents_directories(#[with(&["--readme"])] server: TestServer) -> Result<(), Error> { +fn show_readme_contents_directories( + #[with(&["--readme"])] server: TestServer, +) -> Result<(), Error> { let directories = DIRECTORIES.to_vec(); for directory in directories { let dir_body = - reqwest::blocking::get(server.url().join(&directory)?)? - .error_for_status()?; + reqwest::blocking::get(server.url().join(&directory)?)?.error_for_status()?; let dir_body_parsed = Document::from_read(dir_body)?; assert!(dir_body_parsed.find(Attr("id", "readme")).next().is_some()); assert!(dir_body_parsed -- cgit v1.2.3 From 7831056a0fdd2319778f1368601394e09aada27a Mon Sep 17 00:00:00 2001 From: Gaurav Date: Fri, 26 Aug 2022 17:43:26 -0400 Subject: Make cases for `--readme` test functions * remove extra functions for directory check * add directory listing check for with and without readme --- tests/readme.rs | 75 +++++++++++++++++++++------------------------------------ 1 file changed, 27 insertions(+), 48 deletions(-) (limited to 'tests') diff --git a/tests/readme.rs b/tests/readme.rs index 59f3d65..ea4e301 100644 --- a/tests/readme.rs +++ b/tests/readme.rs @@ -1,15 +1,21 @@ mod fixtures; -use fixtures::{server, Error, TestServer, DIRECTORIES}; +use fixtures::{server, Error, TestServer, DIRECTORIES, FILES}; use rstest::rstest; -use select::document::Document; use select::predicate::Attr; +use select::{document::Document, node::Node}; #[rstest] /// Do not show readme contents by default fn no_readme_contents(server: TestServer) -> Result<(), Error> { let body = reqwest::blocking::get(server.url())?.error_for_status()?; let parsed = Document::from_read(body)?; + for &file in FILES { + assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); + } + for &dir in DIRECTORIES { + assert!(parsed.find(|x: &Node| x.text() == dir).next().is_some()); + } assert!(parsed.find(Attr("id", "readme")).next().is_none()); assert!(parsed.find(Attr("id", "readme-filename")).next().is_none()); assert!(parsed.find(Attr("id", "readme-contents")).next().is_none()); @@ -17,11 +23,26 @@ fn no_readme_contents(server: TestServer) -> Result<(), Error> { Ok(()) } -#[rstest] +#[rstest( + dir, + content, + case("", "Test Hello Yes"), + case("/dira/", "This is dira/readme.md"), + case("/dirb/", "This is dirb/readme.md") +)] /// Show readme contents when told to if there is readme.md file -fn show_readme_contents(#[with(&["--readme"])] server: TestServer) -> Result<(), Error> { - let body = reqwest::blocking::get(server.url())?.error_for_status()?; +fn show_readme_contents( + #[with(&["--readme"])] server: TestServer, + dir: &str, + content: &str, +) -> Result<(), Error> { + let body = reqwest::blocking::get(server.url().join(dir)?)?.error_for_status()?; let parsed = Document::from_read(body)?; + + for &file in FILES { + assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); + } + assert!(parsed.find(Attr("id", "readme")).next().is_some()); assert!(parsed.find(Attr("id", "readme-filename")).next().is_some()); assert!( @@ -40,50 +61,8 @@ fn show_readme_contents(#[with(&["--readme"])] server: TestServer) -> Result<(), .unwrap() .text() .trim() - == "Test Hello Yes" + == content ); Ok(()) } - -#[rstest] -/// Show readme contents when told to if there is readme.md file on directories. -fn show_readme_contents_directories( - #[with(&["--readme"])] server: TestServer, -) -> Result<(), Error> { - let directories = DIRECTORIES.to_vec(); - - for directory in directories { - let dir_body = - reqwest::blocking::get(server.url().join(&directory)?)?.error_for_status()?; - let dir_body_parsed = Document::from_read(dir_body)?; - assert!(dir_body_parsed.find(Attr("id", "readme")).next().is_some()); - assert!(dir_body_parsed - .find(Attr("id", "readme-filename")) - .next() - .is_some()); - assert!( - dir_body_parsed - .find(Attr("id", "readme-filename")) - .next() - .unwrap() - .text() - == "readme.md" - ); - assert!(dir_body_parsed - .find(Attr("id", "readme-contents")) - .next() - .is_some()); - assert!( - dir_body_parsed - .find(Attr("id", "readme-contents")) - .next() - .unwrap() - .text() - .trim() - == &format!("This is {}readme.md", directory) - ); - } - - Ok(()) -} -- cgit v1.2.3 From 558d52aff41421dae70a2b757f948a0a375669a3 Mon Sep 17 00:00:00 2001 From: Gaurav Date: Sat, 27 Aug 2022 18:59:05 -0400 Subject: Add test for README.md file for `--readme` --- tests/readme.rs | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'tests') diff --git a/tests/readme.rs b/tests/readme.rs index ea4e301..5287963 100644 --- a/tests/readme.rs +++ b/tests/readme.rs @@ -4,6 +4,8 @@ use fixtures::{server, Error, TestServer, DIRECTORIES, FILES}; use rstest::rstest; use select::predicate::Attr; use select::{document::Document, node::Node}; +use std::fs::{create_dir_all, File}; +use std::io::Write; #[rstest] /// Do not show readme contents by default @@ -24,23 +26,37 @@ fn no_readme_contents(server: TestServer) -> Result<(), Error> { } #[rstest( + makedir, dir, content, - case("", "Test Hello Yes"), - case("/dira/", "This is dira/readme.md"), - case("/dirb/", "This is dirb/readme.md") + case(false, "", "Test Hello Yes"), + case(false, "/dira/", "This is dira/readme.md"), + case(false, "/dirb/", "This is dirb/readme.md"), + case(true, "/readme-dira/", "This is readme-dira/README.md") )] -/// Show readme contents when told to if there is readme.md file +/// Show readme contents when told to if there is readme.md/README.md file fn show_readme_contents( #[with(&["--readme"])] server: TestServer, + makedir: bool, dir: &str, content: &str, ) -> Result<(), Error> { + if makedir { + let tempdir = server.path().join(dir.strip_prefix("/").unwrap()); + create_dir_all(tempdir.clone()).unwrap(); + let mut readme_file = File::create(tempdir.join("README.md"))?; + readme_file + .write(content.to_string().as_bytes()) + .expect("Couldn't write README.md"); + } + let body = reqwest::blocking::get(server.url().join(dir)?)?.error_for_status()?; let parsed = Document::from_read(body)?; - for &file in FILES { - assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); + if !makedir { + for &file in FILES { + assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); + } } assert!(parsed.find(Attr("id", "readme")).next().is_some()); @@ -51,6 +67,7 @@ fn show_readme_contents( .next() .unwrap() .text() + .to_lowercase() == "readme.md" ); assert!(parsed.find(Attr("id", "readme-contents")).next().is_some()); -- cgit v1.2.3 From 6c9c49316f9bb21365166385045dc4bd9d90678b Mon Sep 17 00:00:00 2001 From: Gaurav Date: Fri, 2 Sep 2022 18:45:44 -0400 Subject: Test for different README.md in all directories. --- tests/fixtures/mod.rs | 1 - tests/readme.rs | 86 ++++++++++++++++++++++++--------------------------- 2 files changed, 41 insertions(+), 46 deletions(-) (limited to 'tests') diff --git a/tests/fixtures/mod.rs b/tests/fixtures/mod.rs index 138bfcf..ec17f3e 100644 --- a/tests/fixtures/mod.rs +++ b/tests/fixtures/mod.rs @@ -17,7 +17,6 @@ pub static FILES: &[&str] = &[ "test.txt", "test.html", "test.mkv", - "readme.md", #[cfg(not(windows))] "test \" \' & < >.csv", "😀.data", diff --git a/tests/readme.rs b/tests/readme.rs index 5287963..530a2a1 100644 --- a/tests/readme.rs +++ b/tests/readme.rs @@ -4,7 +4,7 @@ use fixtures::{server, Error, TestServer, DIRECTORIES, FILES}; use rstest::rstest; use select::predicate::Attr; use select::{document::Document, node::Node}; -use std::fs::{create_dir_all, File}; +use std::fs::{remove_file, File}; use std::io::Write; #[rstest] @@ -26,60 +26,56 @@ fn no_readme_contents(server: TestServer) -> Result<(), Error> { } #[rstest( - makedir, - dir, - content, - case(false, "", "Test Hello Yes"), - case(false, "/dira/", "This is dira/readme.md"), - case(false, "/dirb/", "This is dirb/readme.md"), - case(true, "/readme-dira/", "This is readme-dira/README.md") + readme_name, + case("Readme.md"), + case("readme.md"), + case("README.md"), + case("README.MD"), + case("ReAdMe.Md") )] /// Show readme contents when told to if there is readme.md/README.md file fn show_readme_contents( #[with(&["--readme"])] server: TestServer, - makedir: bool, - dir: &str, - content: &str, + readme_name: &str, ) -> Result<(), Error> { - if makedir { - let tempdir = server.path().join(dir.strip_prefix("/").unwrap()); - create_dir_all(tempdir.clone()).unwrap(); - let mut readme_file = File::create(tempdir.join("README.md"))?; + for dir in DIRECTORIES { + let readme_path = server.path().join(dir).join(readme_name); + let mut readme_file = File::create(&readme_path)?; readme_file - .write(content.to_string().as_bytes()) - .expect("Couldn't write README.md"); - } - - let body = reqwest::blocking::get(server.url().join(dir)?)?.error_for_status()?; - let parsed = Document::from_read(body)?; + .write( + format!("Contents of {}", readme_name) + .to_string() + .as_bytes(), + ) + .expect("Couldn't write readme"); + let body = reqwest::blocking::get(server.url().join(dir)?)?.error_for_status()?; + let parsed = Document::from_read(body)?; - if !makedir { for &file in FILES { assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); } - } - - assert!(parsed.find(Attr("id", "readme")).next().is_some()); - assert!(parsed.find(Attr("id", "readme-filename")).next().is_some()); - assert!( - parsed - .find(Attr("id", "readme-filename")) - .next() - .unwrap() - .text() - .to_lowercase() - == "readme.md" - ); - assert!(parsed.find(Attr("id", "readme-contents")).next().is_some()); - assert!( - parsed - .find(Attr("id", "readme-contents")) - .next() - .unwrap() - .text() - .trim() - == content - ); + assert!(parsed.find(Attr("id", "readme")).next().is_some()); + assert!(parsed.find(Attr("id", "readme-filename")).next().is_some()); + assert!( + parsed + .find(Attr("id", "readme-filename")) + .next() + .unwrap() + .text() + == readme_name + ); + assert!(parsed.find(Attr("id", "readme-contents")).next().is_some()); + assert!( + parsed + .find(Attr("id", "readme-contents")) + .next() + .unwrap() + .text() + .trim() + == format!("Contents of {}", readme_name) + ); + remove_file(readme_path).unwrap(); + } Ok(()) } -- cgit v1.2.3 From 8f2aec69aa8b4cd02f629cd5fcebab5ac895a14e Mon Sep 17 00:00:00 2001 From: Gaurav Date: Mon, 12 Sep 2022 20:08:39 -0400 Subject: Add README test in root Root and Directories' readme test is in different functions to make it easier to catch bugs. --- tests/readme.rs | 101 ++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 69 insertions(+), 32 deletions(-) (limited to 'tests') diff --git a/tests/readme.rs b/tests/readme.rs index 530a2a1..dd56311 100644 --- a/tests/readme.rs +++ b/tests/readme.rs @@ -6,6 +6,7 @@ use select::predicate::Attr; use select::{document::Document, node::Node}; use std::fs::{remove_file, File}; use std::io::Write; +use std::path::PathBuf; #[rstest] /// Do not show readme contents by default @@ -33,49 +34,85 @@ fn no_readme_contents(server: TestServer) -> Result<(), Error> { case("README.MD"), case("ReAdMe.Md") )] -/// Show readme contents when told to if there is readme.md/README.md file -fn show_readme_contents( + +/// Show readme contents when told to if there is readme.md/README.md file in root +fn show_root_readme_contents( + #[with(&["--readme"])] server: TestServer, + readme_name: &str, +) -> Result<(), Error> { + let readme_path = write_readme_contents(server.path().to_path_buf(), readme_name); + let body = reqwest::blocking::get(server.url())?.error_for_status()?; + let parsed = Document::from_read(body)?; + + for &file in FILES { + assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); + } + assert_readme_contents(&parsed, &readme_name); + remove_file(readme_path).unwrap(); + Ok(()) +} + +#[rstest( + readme_name, + case("Readme.md"), + case("readme.md"), + case("README.md"), + case("README.MD"), + case("ReAdMe.Md") +)] +/// Show readme contents when told to if there is readme.md/README.md file in directories +fn show_nested_readme_contents( #[with(&["--readme"])] server: TestServer, readme_name: &str, ) -> Result<(), Error> { for dir in DIRECTORIES { - let readme_path = server.path().join(dir).join(readme_name); - let mut readme_file = File::create(&readme_path)?; - readme_file - .write( - format!("Contents of {}", readme_name) - .to_string() - .as_bytes(), - ) - .expect("Couldn't write readme"); + let readme_path = write_readme_contents(server.path().join(dir), readme_name); let body = reqwest::blocking::get(server.url().join(dir)?)?.error_for_status()?; let parsed = Document::from_read(body)?; for &file in FILES { assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); } - - assert!(parsed.find(Attr("id", "readme")).next().is_some()); - assert!(parsed.find(Attr("id", "readme-filename")).next().is_some()); - assert!( - parsed - .find(Attr("id", "readme-filename")) - .next() - .unwrap() - .text() - == readme_name - ); - assert!(parsed.find(Attr("id", "readme-contents")).next().is_some()); - assert!( - parsed - .find(Attr("id", "readme-contents")) - .next() - .unwrap() - .text() - .trim() - == format!("Contents of {}", readme_name) - ); + assert_readme_contents(&parsed, &readme_name); remove_file(readme_path).unwrap(); } Ok(()) } + +fn write_readme_contents(path: PathBuf, filename: &str) -> PathBuf { + let readme_path = path.join(filename); + let mut readme_file = File::create(&readme_path).unwrap(); + readme_file + .write(format!("Contents of {}", filename).to_string().as_bytes()) + .expect("Couldn't write readme"); + readme_path +} + +fn assert_readme_contents(parsed_dom: &Document, filename: &str) { + assert!(parsed_dom.find(Attr("id", "readme")).next().is_some()); + assert!(parsed_dom + .find(Attr("id", "readme-filename")) + .next() + .is_some()); + assert!( + parsed_dom + .find(Attr("id", "readme-filename")) + .next() + .unwrap() + .text() + == filename + ); + assert!(parsed_dom + .find(Attr("id", "readme-contents")) + .next() + .is_some()); + assert!( + parsed_dom + .find(Attr("id", "readme-contents")) + .next() + .unwrap() + .text() + .trim() + == format!("Contents of {}", filename) + ); +} -- cgit v1.2.3 From f709dfd43a9031604646a4c96291388c43e36b8a Mon Sep 17 00:00:00 2001 From: Kian-Meng Ang Date: Wed, 14 Sep 2022 22:05:01 +0800 Subject: Fix typos Found via `codespell -L crate`. --- tests/serve_request.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/serve_request.rs b/tests/serve_request.rs index 3f5eeff..b23f7e2 100644 --- a/tests/serve_request.rs +++ b/tests/serve_request.rs @@ -135,7 +135,7 @@ fn serves_requests_symlinks( let broken = "symlink broken"; // Set up some basic symlinks: - // to dir, to file, to non-existant location + // to dir, to file, to non-existent location let orig = DIRECTORIES[0].strip_suffix("/").unwrap(); let link = server.path().join(dir.strip_suffix("/").unwrap()); symlink_dir(orig, link).expect("Couldn't create symlink"); @@ -166,7 +166,7 @@ fn serves_requests_symlinks( } // If following symlinks is deactivated, we can just skip this iteration as we assorted - // above tht no entries in the listing can be found for symlinks in that case. + // above the no entries in the listing can be found for symlinks in that case. if no_symlinks { continue; } -- cgit v1.2.3 From d5bc1b3c0b7d2f9c09fabec2d70503a8dffe68f6 Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Thu, 15 Sep 2022 08:38:38 +0200 Subject: Reformat readme tests and add some comments --- tests/readme.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/readme.rs b/tests/readme.rs index dd56311..56a3afd 100644 --- a/tests/readme.rs +++ b/tests/readme.rs @@ -8,17 +8,21 @@ use std::fs::{remove_file, File}; use std::io::Write; use std::path::PathBuf; -#[rstest] /// Do not show readme contents by default +#[rstest] fn no_readme_contents(server: TestServer) -> Result<(), Error> { let body = reqwest::blocking::get(server.url())?.error_for_status()?; let parsed = Document::from_read(body)?; + + // Check that the regular file listing still works. for &file in FILES { assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); } for &dir in DIRECTORIES { assert!(parsed.find(|x: &Node| x.text() == dir).next().is_some()); } + + // Check that there is no readme stuff here. assert!(parsed.find(Attr("id", "readme")).next().is_none()); assert!(parsed.find(Attr("id", "readme-filename")).next().is_none()); assert!(parsed.find(Attr("id", "readme-contents")).next().is_none()); @@ -26,6 +30,7 @@ fn no_readme_contents(server: TestServer) -> Result<(), Error> { Ok(()) } +/// Show readme contents when told to if there is a readme file in the root #[rstest( readme_name, case("Readme.md"), @@ -34,8 +39,6 @@ fn no_readme_contents(server: TestServer) -> Result<(), Error> { case("README.MD"), case("ReAdMe.Md") )] - -/// Show readme contents when told to if there is readme.md/README.md file in root fn show_root_readme_contents( #[with(&["--readme"])] server: TestServer, readme_name: &str, @@ -44,14 +47,17 @@ fn show_root_readme_contents( let body = reqwest::blocking::get(server.url())?.error_for_status()?; let parsed = Document::from_read(body)?; + // All the files are still getting listed... for &file in FILES { assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); } + // ...in addition to the readme contents below the file listing. assert_readme_contents(&parsed, &readme_name); remove_file(readme_path).unwrap(); Ok(()) } +/// Show readme contents when told to if there is a readme file in any of the directories #[rstest( readme_name, case("Readme.md"), @@ -60,7 +66,6 @@ fn show_root_readme_contents( case("README.MD"), case("ReAdMe.Md") )] -/// Show readme contents when told to if there is readme.md/README.md file in directories fn show_nested_readme_contents( #[with(&["--readme"])] server: TestServer, readme_name: &str, @@ -70,9 +75,11 @@ fn show_nested_readme_contents( let body = reqwest::blocking::get(server.url().join(dir)?)?.error_for_status()?; let parsed = Document::from_read(body)?; + // All the files are still getting listed... for &file in FILES { assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); } + // ...in addition to the readme contents below the file listing. assert_readme_contents(&parsed, &readme_name); remove_file(readme_path).unwrap(); } -- cgit v1.2.3 From 4192ef14d46e721e8f07f4d8e7306ebe0d5d30f2 Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Thu, 15 Sep 2022 08:39:15 +0200 Subject: Check for directories in default request test --- tests/serve_request.rs | 3 +++ 1 file changed, 3 insertions(+) (limited to 'tests') diff --git a/tests/serve_request.rs b/tests/serve_request.rs index 3f5eeff..aa57a9b 100644 --- a/tests/serve_request.rs +++ b/tests/serve_request.rs @@ -33,6 +33,9 @@ fn serves_requests_with_no_options(tmpdir: TempDir) -> Result<(), Error> { for &file in FILES { assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); } + for &dir in DIRECTORIES { + assert!(parsed.find(|x: &Node| x.text() == dir).next().is_some()); + } child.kill()?; -- cgit v1.2.3