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 | |
| parent | 93c6a678b398cdfacb0d18ad499c3321a44ff31f (diff) | |
Address some more coverage
| -rw-r--r-- | Cargo.lock | 2 | ||||
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | src/file_handler/file_strategies/gemini.rs | 104 |
3 files changed, 106 insertions, 2 deletions
@@ -10,7 +10,7 @@ checksum = "ff101c368b563c1aace5a5f18255a52fcd150b6e97fadd5dd970b6f912f66571" [[package]] name = "page" -version = "1.4.4" +version = "1.5.0" dependencies = [ "gema_texto", "test_utilities", @@ -1,6 +1,6 @@ [package] name = "page" -version = "1.4.4" +version = "1.5.0" edition = "2024" license = "AGPL-3.0-or-later" description = "Command line tool to generate a static website and gemini capsule from a directory with gemtext." 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()); + } } |