Files
bottom/tests/integration/invalid_config_tests.rs
Clement Tsang d08036f69a refactor: refactor some fields and code to use "colour" spelling (#2058)
<!-- Please use this template (unless you have a very good reason not
to). PRs that do not use the template may be closed. -->

## Description

_A description of the change, what it does, and why it was made. If
relevant (e.g. UI changes), **please also provide
screenshots/recordings**:_

Rename a bunch of code/struct field names to use "colour". Note this
should have no functional change to config settings as I was already
aliasing "colour" for "color" settings, this just flips it internally.

As for why, I'm Canadian, I grew up spelling it this way, sorry.

## Issue

_If applicable, what issue does this address?_

Closes: #<issue-number>

## Testing

_If relevant, please state how this was tested (including steps):_

_If this change affects the program, please also indicate which
platforms were tested:_

- [ ] _Windows_
- [ ] _macOS (specify version below)_
- [x] _Linux (specify distro below)_
- [ ] _Other (specify below)_

## Checklist

_Ensure **all** of these are met:_

- [x] _If this PR adds or changes a dependency, please justify this in
the description_
- [x] _If this is a code change, areas your change affects have been
linted using (`cargo fmt`)_
- [x] _If this is a code change, your changes pass `cargo clippy --all
-- -D warnings`_
- [x] _If this is a code change, new tests were added if relevant_
- [x] _If this is a code change, your changes pass `cargo test`_
- [x] _The change has been tested to work (see above) and doesn't appear
to break other things_
- [x] _Documentation has been updated if needed (`README.md`, help menu,
docs, configs, etc.)_
- [x] _There are no merge conflicts_
- [x] _You have reviewed your changes first_
- [x] _The pull request passes the provided CI pipeline_

## Other

_Anything else that maintainers should know about this PR:_
2026-05-08 01:34:02 -04:00

172 lines
4.4 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 colour"));
}
/// 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 colour"));
}
/// 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 colour"));
}
#[test]
fn test_invalid_colour_name() {
btm_command(&["-C", "./tests/invalid_configs/invalid_colour_name.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("invalid named colour"));
}
#[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 colour"));
}
#[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("integer number overflowed"));
}
#[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"));
}
#[test]
fn test_invalid_disk_column() {
btm_command(&["-C", "./tests/invalid_configs/invalid_disk_column.toml"])
.assert()
.failure()
.stderr(predicate::str::contains("doesn't match"));
}
#[test]
fn test_invalid_temp_disk_default_sorts() {
btm_command(&[
"-C",
"./tests/invalid_configs/invalid_temp_default_sort.toml",
])
.assert()
.failure()
.stderr(predicate::str::contains("doesn't match"));
btm_command(&[
"-C",
"./tests/invalid_configs/invalid_disk_default_sort.toml",
])
.assert()
.failure()
.stderr(predicate::str::contains("doesn't match"));
}
#[test]
fn test_invalid_proc_default_sort() {
btm_command(&[
"-C",
"./tests/invalid_configs/invalid_proc_default_sort.toml",
])
.assert()
.failure()
.stderr(predicate::str::contains("doesn't match"));
}