aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-04-05 19:43:00 +0200
committerRuben Beltran del Rio <git@r.bdr.sh>2025-04-05 19:43:00 +0200
commit95fdc18304507569109931f898d47af5148b1011 (patch)
tree2400f5943fde72830cb500fbd06032b90838b008 /src
parent93c6a678b398cdfacb0d18ad499c3321a44ff31f (diff)
Address some more coverage
Diffstat (limited to 'src')
-rw-r--r--src/file_handler/file_strategies/gemini.rs104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/file_handler/file_strategies/gemini.rs b/src/file_handler/file_strategies/gemini.rs
index 0c7efbb..2f6cc43 100644
--- a/src/file_handler/file_strategies/gemini.rs
+++ b/src/file_handler/file_strategies/gemini.rs
@@ -397,4 +397,108 @@ Hello world
",
);
}
+
+ #[test]
+ fn fails_to_generate_html_if_file_is_not_part_of_source() {
+ let strategy = Strategy {};
+ let test_dir = setup_test_dir();
+ let source_dir = test_dir.join("source");
+ let output_dir = test_dir.join("output");
+ create_dir_all(&source_dir).expect("Could not create source test directory");
+ create_dir_all(&output_dir).expect("Could not create output test directory");
+ create_test_file(&source_dir.join("image.png"), "A fish playing the banjo");
+
+ create_test_file(
+ &output_dir.join("outside.gmi"),
+ "\
+--- title: Page Is Cool!
+--- description: My Description
+# Test
+Hello world
+",
+ );
+ let file = File {
+ path: output_dir.join("outside.gmi"),
+ file_type: FileType::Gemini,
+ };
+ let layout = "";
+
+ assert!(strategy.handle_html(&source_dir, &output_dir, &file, layout).is_err());
+ }
+
+ #[test]
+ fn fails_to_generate_gmi_if_file_is_not_part_of_source() {
+ let strategy = Strategy {};
+ let test_dir = setup_test_dir();
+ let source_dir = test_dir.join("source");
+ let output_dir = test_dir.join("output");
+ create_dir_all(&source_dir).expect("Could not create source test directory");
+ create_dir_all(&output_dir).expect("Could not create output test directory");
+ create_test_file(&source_dir.join("image.png"), "A fish playing the banjo");
+
+ create_test_file(
+ &output_dir.join("outside.gmi"),
+ "\
+--- title: Page Is Cool!
+--- description: My Description
+# Test
+Hello world
+",
+ );
+ let file = File {
+ path: output_dir.join("outside.gmi"),
+ file_type: FileType::Gemini,
+ };
+
+ assert!(strategy.handle_gemini(&source_dir, &output_dir, &file).is_err());
+ }
+
+ #[test]
+ fn html_fails_if_destination_parent_is_not_readable() {
+ let strategy = Strategy {};
+ let test_dir = setup_test_dir();
+ let source_dir = test_dir.join("source");
+ let output_dir = Path::new("");
+
+ create_test_file(
+ &source_dir,
+ "\
+--- title: Page Is Cool!
+--- description: My Description
+# Test
+Hello world
+",
+ );
+ let file = File {
+ path: source_dir.clone(),
+ file_type: FileType::File,
+ };
+ let layout = "";
+
+ assert!(strategy.handle_html(&source_dir, output_dir, &file, layout).is_err());
+ }
+
+ #[test]
+ fn gemini_fails_if_destination_parent_is_not_readable() {
+ let strategy = Strategy {};
+ let test_dir = setup_test_dir();
+ let source_dir = test_dir.join("source");
+ let output_dir = Path::new("");
+
+ create_test_file(
+ &source_dir,
+ "\
+--- title: Page Is Cool!
+--- description: My Description
+# Test
+Hello world
+",
+ );
+ let file = File {
+ path: source_dir.clone(),
+ file_type: FileType::File,
+ };
+
+ assert!(strategy.handle_gemini(&source_dir, output_dir, &file).is_err());
+ }
}