bug: accept process column aliases advertised by the config schema (#2131)

This commit is contained in:
Umberto Puddu
2026-07-07 21:34:01 -05:00
committed by GitHub
parent 9fc30ac2ff
commit bebc199a3c
3 changed files with 37 additions and 4 deletions
+7 -1
View File
@@ -20,11 +20,17 @@ That said, these are more guidelines rather than hard rules, though the project
---
## Unreleased
### Bug Fixes
- [#2131](https://github.com/ClementTsang/bottom/pull/2131): Fix the config not accepting `Memory`, `Memory%`, `Total Read`, and `Total Write` process column aliases that the config schema advertised.
## 0.14.3 - 2026-07-01
### Other
- [#2119](https://github.com/ClementTsang/bottom/pull/2119): Workaround change for draw behaviour that caused Kitty with `cursor_trail` to occasionally use more CPU.
- [#2119](https://github.com/ClementTsang/bottom/pull/2119): Add workaround for draw behaviour that caused Kitty with `cursor_trail` to occasionally use more CPU.
## 0.14.2 - 2026-06-27
+27
View File
@@ -175,4 +175,31 @@ mod test {
vec![ProcWidgetColumn::WritePerSecond; 3]
);
}
/// The generated JSON schema advertises additional column name aliases
/// (via `ProcColumn::get_schema_names`) that the deserializer must also
/// accept, otherwise valid configs are rejected at runtime.
#[test]
fn valid_process_column_config_schema_aliases() {
let config = r#"columns = ["Memory", "Memory%"]"#;
let generated: ProcessesConfig = toml_edit::de::from_str(config).unwrap();
assert_eq!(
to_columns(generated.columns),
vec![ProcWidgetColumn::Mem; 2]
);
let config = r#"columns = ["Total Read"]"#;
let generated: ProcessesConfig = toml_edit::de::from_str(config).unwrap();
assert_eq!(
to_columns(generated.columns),
vec![ProcWidgetColumn::TotalRead]
);
let config = r#"columns = ["Total Write"]"#;
let generated: ProcessesConfig = toml_edit::de::from_str(config).unwrap();
assert_eq!(
to_columns(generated.columns),
vec![ProcWidgetColumn::TotalWrite]
);
}
}
+3 -3
View File
@@ -207,7 +207,7 @@ impl ProcColumn {
pub fn parse_column_name(name: &str) -> Option<Self> {
match name.to_lowercase().as_str() {
"cpu%" => Some(ProcColumn::CpuPercent),
"mem" | "mem%" => Some(ProcColumn::MemPercent),
"mem" | "mem%" | "memory" | "memory%" => Some(ProcColumn::MemPercent),
"virt" | "virtual" | "virtmem" | "virtual memory" => Some(ProcColumn::VirtualMem),
"pid" => Some(ProcColumn::Pid),
"count" => Some(ProcColumn::Count),
@@ -215,8 +215,8 @@ impl ProcColumn {
"command" => Some(ProcColumn::Command),
"read" | "r/s" | "rps" => Some(ProcColumn::ReadPerSecond),
"write" | "w/s" | "wps" => Some(ProcColumn::WritePerSecond),
"tread" | "t.read" => Some(ProcColumn::TotalRead),
"twrite" | "t.write" => Some(ProcColumn::TotalWrite),
"tread" | "t.read" | "total read" => Some(ProcColumn::TotalRead),
"twrite" | "t.write" | "total write" => Some(ProcColumn::TotalWrite),
"state" => Some(ProcColumn::State),
"user" => Some(ProcColumn::User),
"time" => Some(ProcColumn::Time),