2020-04-23 21:33:51 +02:00
|
|
|
use assert_cmd::prelude::*;
|
|
|
|
use predicates::prelude::*;
|
|
|
|
use std::process::Command;
|
2019-12-15 06:17:15 +01:00
|
|
|
|
2020-04-23 21:33:51 +02:00
|
|
|
// These tests are for testing some config file-specific options.
|
|
|
|
|
|
|
|
fn get_binary_location() -> String {
|
2020-05-05 00:53:05 +02:00
|
|
|
env!("CARGO_BIN_EXE_btm").to_string()
|
2020-04-23 21:33:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_toml_mismatch_type() {
|
2020-04-23 21:33:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/toml_mismatch_type.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
|
|
|
.stderr(predicate::str::contains("invalid type"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_empty_layout() {
|
2020-04-23 21:33:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/empty_layout.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
2020-09-01 05:59:33 +02:00
|
|
|
.stderr(predicate::str::contains("at least one widget"));
|
2020-04-23 21:33:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_invalid_layout_widget_type() {
|
2020-04-23 21:33:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/invalid_layout_widget_type.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
2020-09-01 05:59:33 +02:00
|
|
|
.stderr(predicate::str::contains("invalid widget name"));
|
2020-04-23 21:33:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/// 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]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_duplicate_temp_type() {
|
2020-04-23 21:33:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/duplicate_temp_type.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
|
|
|
.stderr(predicate::str::contains("duplicate field"));
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Checks for if a hex is valid
|
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_invalid_colour_hex() {
|
2020-04-23 21:33:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/invalid_colour_hex.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
2020-09-01 05:59:33 +02:00
|
|
|
.stderr(predicate::str::contains("invalid hex colour"));
|
2020-04-23 21:33:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/// Checks for if a hex is too long
|
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_invalid_colour_hex_2() {
|
2020-04-23 21:33:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/invalid_colour_hex_2.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
2020-09-01 05:59:33 +02:00
|
|
|
.stderr(predicate::str::contains("invalid hex colour"));
|
2020-04-23 21:33:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/// Checks unicode hex because the way we originally did it could cause char
|
|
|
|
/// boundary errors!
|
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_invalid_colour_hex_3() {
|
2020-04-23 21:33:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/invalid_colour_hex_3.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
2020-09-01 05:59:33 +02:00
|
|
|
.stderr(predicate::str::contains("invalid hex colour"));
|
2020-04-23 21:33:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_invalid_colour_name() {
|
2020-04-23 21:33:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/invalid_colour_name.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
2020-09-01 05:59:33 +02:00
|
|
|
.stderr(predicate::str::contains("invalid named colour"));
|
2020-04-23 21:33:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_invalid_colour_rgb() {
|
2020-04-23 21:33:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/invalid_colour_rgb.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
2020-09-01 05:59:33 +02:00
|
|
|
.stderr(predicate::str::contains("invalid RGB"));
|
2020-04-23 21:33:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_invalid_colour_rgb_2() {
|
2020-04-23 21:33:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/invalid_colour_rgb_2.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
2020-09-01 05:59:33 +02:00
|
|
|
.stderr(predicate::str::contains("invalid RGB"));
|
2020-04-23 21:33:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_invalid_colour_string() {
|
2020-04-23 21:33:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/invalid_colour_string.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
2020-09-01 05:59:33 +02:00
|
|
|
.stderr(predicate::str::contains("invalid named colour"));
|
|
|
|
}
|
|
|
|
|
2020-09-02 08:59:51 +02:00
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_lone_default_widget_count() {
|
2020-09-02 08:59:51 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/lone_default_widget_count.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
|
|
|
.stderr(predicate::str::contains("it must be used with"));
|
|
|
|
}
|
|
|
|
|
2020-09-01 09:08:38 +02:00
|
|
|
#[test]
|
2021-02-15 20:12:43 +01:00
|
|
|
fn test_invalid_default_widget_count() {
|
2020-09-01 09:08:38 +02:00
|
|
|
Command::new(get_binary_location())
|
|
|
|
.arg("-C")
|
|
|
|
.arg("./tests/invalid_configs/invalid_default_widget_count.toml")
|
|
|
|
.assert()
|
|
|
|
.failure()
|
2020-09-02 08:59:51 +02:00
|
|
|
.stderr(predicate::str::contains("invalid number"));
|
2020-09-01 09:08:38 +02:00
|
|
|
}
|