bottom/tests/integration/invalid_config_tests.rs
Clement Tsang dd66ae774c
refactor: simplify some config -> constraints code (#1383)
* refactor: simplify some config -> constraints code

* iteratively progress...

* update bcr; this might need testing since I removed some old proc code

* widget side

* fix battery

* fix widget tests with bandaid for now

The issue was that the calculations assume a certain ratio for CPU
legends.

* add some tests

* bump up

* fix proc drawing issues

So with the proc widget in certain places, there would be a panic during
constraint determination.

Looks like back when I wrote this I made some gross assumptions about
certain things. In particular, the problem here was that the search
added an additional "one" height, so that needs to be accounted for
after we removed the "doubling" code.

* tests

* fix tests

* reorganize tests

* clippy

* fix cross tests not working

* fix builds for android
2024-01-15 04:19:18 -05:00

133 lines
3.6 KiB
Rust

//! These tests are for testing some invalid config-file-specific options.
use assert_cmd::prelude::*;
use predicates::prelude::*;
use crate::util::btm_command;
#[test]
fn test_toml_mismatch_type() {
btm_command(&["-C", "./tests/invalid_configs/toml_mismatch_type.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("invalid type"));
}
#[test]
fn test_empty_layout() {
btm_command(&["-C", "./tests/invalid_configs/empty_layout.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("at least one widget"));
}
#[test]
fn test_invalid_layout_widget_type() {
btm_command(&[
"-C",
"./tests/invalid_configs/invalid_layout_widget_type.toml",
])
.assert()
.failure()
.stderr(predicate::str::contains("invalid widget name"));
}
/// 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() {
btm_command(&["-C", "./tests/invalid_configs/duplicate_temp_type.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("duplicate key"));
}
/// Checks for if a hex is valid
#[test]
fn test_invalid_colour_hex() {
btm_command(&["-C", "./tests/invalid_configs/invalid_colour_hex.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("invalid hex color"));
}
/// Checks for if a hex is too long
#[test]
fn test_invalid_colour_hex_2() {
btm_command(&["-C", "./tests/invalid_configs/invalid_colour_hex_2.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("invalid hex color"));
}
/// Checks unicode hex because the way we originally did it could cause char
/// boundary errors!
#[test]
fn test_invalid_colour_hex_3() {
btm_command(&["-C", "./tests/invalid_configs/invalid_colour_hex_3.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("invalid hex color"));
}
#[test]
fn test_invalid_colour_name() {
btm_command(&["-C", "./tests/invalid_configs/invalid_colour_name.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("invalid named color"));
}
#[test]
fn test_invalid_colour_rgb() {
btm_command(&["-C", "./tests/invalid_configs/invalid_colour_rgb.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("invalid RGB"));
}
#[test]
fn test_invalid_colour_rgb_2() {
btm_command(&["-C", "./tests/invalid_configs/invalid_colour_rgb_2.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("invalid RGB"));
}
#[test]
fn test_invalid_colour_string() {
btm_command(&["-C", "./tests/invalid_configs/invalid_colour_string.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("invalid named color"));
}
#[test]
fn test_lone_default_widget_count() {
btm_command(&[
"-C",
"./tests/invalid_configs/lone_default_widget_count.toml",
])
.assert()
.failure()
.stderr(predicate::str::contains("it must be used with"));
}
#[test]
fn test_invalid_default_widget_count() {
btm_command(&[
"-C",
"./tests/invalid_configs/invalid_default_widget_count.toml",
])
.assert()
.failure()
.stderr(predicate::str::contains("number too large"));
}
#[test]
fn test_invalid_process_column() {
btm_command(&["-C", "./tests/invalid_configs/invalid_process_column.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("doesn't match"));
}