diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-04-05 19:43:00 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-04-05 19:43:00 +0200 |
| commit | 95fdc18304507569109931f898d47af5148b1011 (patch) | |
| tree | 2400f5943fde72830cb500fbd06032b90838b008 /src | |
| parent | 93c6a678b398cdfacb0d18ad499c3321a44ff31f (diff) | |
Address some more coverage
Diffstat (limited to 'src')
| -rw-r--r-- | src/file_handler/file_strategies/gemini.rs | 104 |
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()); + } } |