From 95fdc18304507569109931f898d47af5148b1011 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Sat, 5 Apr 2025 19:43:00 +0200 Subject: Address some more coverage --- src/file_handler/file_strategies/gemini.rs | 104 +++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) (limited to 'src') 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()); + } } -- cgit