diff options
Diffstat (limited to 'tests/invalid_config_tests.rs')
-rw-r--r-- | tests/invalid_config_tests.rs | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/tests/invalid_config_tests.rs b/tests/invalid_config_tests.rs index 8b137891..34b8e06e 100644 --- a/tests/invalid_config_tests.rs +++ b/tests/invalid_config_tests.rs @@ -1 +1,136 @@ +use assert_cmd::prelude::*; +use predicates::prelude::*; +use std::process::Command; +// These tests are for testing some config file-specific options. + +fn get_binary_location() -> String { + env!("CARGO_BIN_EXE_btm").to_string() +} + +#[test] +fn test_toml_mismatch_type() -> Result<(), Box<dyn std::error::Error>> { + Command::new(get_binary_location()) + .arg("-C") + .arg("./tests/invalid_configs/toml_mismatch_type.toml") + .assert() + .failure() + .stderr(predicate::str::contains("invalid type")); + Ok(()) +} + +#[test] +fn test_empty_layout() -> Result<(), Box<dyn std::error::Error>> { + Command::new(get_binary_location()) + .arg("-C") + .arg("./tests/invalid_configs/empty_layout.toml") + .assert() + .failure() + .stderr(predicate::str::contains("invalid layout config")); + Ok(()) +} + +#[test] +fn test_invalid_layout_widget_type() -> Result<(), Box<dyn std::error::Error>> { + Command::new(get_binary_location()) + .arg("-C") + .arg("./tests/invalid_configs/invalid_layout_widget_type.toml") + .assert() + .failure() + .stderr(predicate::str::contains("invalid widget type")); + Ok(()) +} + +/// This test isn't really needed as this is technically covered by TOML spec. +/// However, I feel like it's worth checking anyways - not like it takes long. +#[test] +fn test_duplicate_temp_type() -> Result<(), Box<dyn std::error::Error>> { + Command::new(get_binary_location()) + .arg("-C") + .arg("./tests/invalid_configs/duplicate_temp_type.toml") + .assert() + .failure() + .stderr(predicate::str::contains("duplicate field")); + Ok(()) +} + +/// Checks for if a hex is valid +#[test] +fn test_invalid_colour_hex() -> Result<(), Box<dyn std::error::Error>> { + Command::new(get_binary_location()) + .arg("-C") + .arg("./tests/invalid_configs/invalid_colour_hex.toml") + .assert() + .failure() + .stderr(predicate::str::contains("invalid color hex")); + Ok(()) +} + +/// Checks for if a hex is too long +#[test] +fn test_invalid_colour_hex_2() -> Result<(), Box<dyn std::error::Error>> { + Command::new(get_binary_location()) + .arg("-C") + .arg("./tests/invalid_configs/invalid_colour_hex_2.toml") + .assert() + .failure() + .stderr(predicate::str::contains("invalid color hex")); + Ok(()) +} + +/// Checks unicode hex because the way we originally did it could cause char +/// boundary errors! +#[test] +fn test_invalid_colour_hex_3() -> Result<(), Box<dyn std::error::Error>> { + Command::new(get_binary_location()) + .arg("-C") + .arg("./tests/invalid_configs/invalid_colour_hex_3.toml") + .assert() + .failure() + .stderr(predicate::str::contains("invalid color hex")); + Ok(()) +} + +#[test] +fn test_invalid_colour_name() -> Result<(), Box<dyn std::error::Error>> { + Command::new(get_binary_location()) + .arg("-C") + .arg("./tests/invalid_configs/invalid_colour_name.toml") + .assert() + .failure() + .stderr(predicate::str::contains("invalid named color")); + Ok(()) +} + +#[test] +fn test_invalid_colour_rgb() -> Result<(), Box<dyn std::error::Error>> { + Command::new(get_binary_location()) + .arg("-C") + .arg("./tests/invalid_configs/invalid_colour_rgb.toml") + .assert() + .failure() + .stderr(predicate::str::contains("invalid RGB color")); + Ok(()) +} + +#[test] +fn test_invalid_colour_rgb_2() -> Result<(), Box<dyn std::error::Error>> { + Command::new(get_binary_location()) + .arg("-C") + .arg("./tests/invalid_configs/invalid_colour_rgb_2.toml") + .assert() + .failure() + .stderr(predicate::str::contains("invalid RGB color")); + Ok(()) +} + +#[test] +fn test_invalid_colour_string() -> Result<(), Box<dyn std::error::Error>> { + Command::new(get_binary_location()) + .arg("-C") + .arg("./tests/invalid_configs/invalid_colour_string.toml") + .assert() + .failure() + .stderr(predicate::str::contains("invalid named color")); + Ok(()) +} |