mirror of
https://github.com/ClementTsang/bottom
synced 2024-11-21 19:53:05 +00:00
other: add another test to validate default config (#1553)
* update changelog * add another lib test to make sure valid integration configs are actually valid * only test these on default config * clippy * add extra CI fail check * fix windows
This commit is contained in:
parent
cf47cb9fae
commit
96ed26d87a
5 changed files with 42 additions and 9 deletions
8
.github/workflows/ci.yml
vendored
8
.github/workflows/ci.yml
vendored
|
@ -267,16 +267,16 @@ jobs:
|
||||||
completion:
|
completion:
|
||||||
name: "CI Pass Check"
|
name: "CI Pass Check"
|
||||||
needs: [supported, other-check]
|
needs: [supported, other-check]
|
||||||
if: ${{ success() || failure() }}
|
if: ${{ always() }}
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
steps:
|
steps:
|
||||||
- name: CI Passed
|
- name: CI Passed
|
||||||
if: ${{ (needs.supported.result == 'success' && needs.other-check.result == 'success') || (needs.supported.result == 'skipped' && needs.other-check.result == 'skipped') }}
|
if: ${{ (needs.supported.result == 'success' && needs.other-check.result == 'success') || (needs.supported.result == 'skipped' && needs.other-check.result == 'skipped') }}
|
||||||
run: |
|
run: |
|
||||||
echo "CI workflow completed successfully.";
|
echo "CI workflow completed successfully or was skipped.";
|
||||||
|
|
||||||
- name: CI Failed
|
- name: CI Failed
|
||||||
if: ${{ needs.supported.result == 'failure' && needs.other-check.result == 'failure' }}
|
if: ${{ needs.supported.result == 'failure' && needs.other-check.result == 'failure' || (needs.supported.result == 'cancelled' && needs.other-check.result == 'cancelled') }}
|
||||||
run: |
|
run: |
|
||||||
echo "CI workflow failed at some point.";
|
echo "CI workflow failed or was cancelled at some point.";
|
||||||
exit 1;
|
exit 1;
|
||||||
|
|
|
@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [0.11.0]/[0.10.3] - Unreleased
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- [#1551](https://github.com/ClementTsang/bottom/pull/1551): Fix missing parent section names in default config.
|
||||||
|
- [#1552](https://github.com/ClementTsang/bottom/pull/1552): Fix typo in default config.
|
||||||
|
|
||||||
## [0.10.2] - 2024-08-05
|
## [0.10.2] - 2024-08-05
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
|
@ -486,10 +486,6 @@ pub const CONFIG_TOP_HEAD: &str = r##"# This is bottom's config file.
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use regex::Regex;
|
|
||||||
|
|
||||||
use crate::options::Config;
|
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -524,7 +520,12 @@ mod test {
|
||||||
|
|
||||||
/// Checks that the default config is valid.
|
/// Checks that the default config is valid.
|
||||||
#[test]
|
#[test]
|
||||||
|
#[cfg(feature = "default")]
|
||||||
fn check_default_config() {
|
fn check_default_config() {
|
||||||
|
use regex::Regex;
|
||||||
|
|
||||||
|
use crate::options::Config;
|
||||||
|
|
||||||
let default_config = Regex::new(r"(?m)^#([a-zA-Z\[])")
|
let default_config = Regex::new(r"(?m)^#([a-zA-Z\[])")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.replace_all(CONFIG_TEXT, "$1");
|
.replace_all(CONFIG_TEXT, "$1");
|
||||||
|
|
|
@ -56,3 +56,28 @@ impl From<u64> for StringOrNum {
|
||||||
StringOrNum::Num(value)
|
StringOrNum::Num(value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
|
||||||
|
// Test all valid configs in the integration test folder and ensure they are accepted.
|
||||||
|
// We need this separated as only test library code sets `serde(deny_unknown_fields)`.
|
||||||
|
#[test]
|
||||||
|
#[cfg(feature = "default")]
|
||||||
|
fn test_integration_valid_configs() {
|
||||||
|
use super::Config;
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
for config_path in fs::read_dir("./tests/valid_configs").unwrap() {
|
||||||
|
let config_path = config_path.unwrap();
|
||||||
|
let config_path_str = config_path.path().display().to_string();
|
||||||
|
let config_str = fs::read_to_string(config_path.path()).unwrap();
|
||||||
|
|
||||||
|
toml_edit::de::from_str::<Config>(&config_str)
|
||||||
|
.unwrap_or_else(|_| panic!("incorrectly rejected '{config_path_str}'"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// I didn't do an invalid config test as a lot of them _are_ valid Config when parsed,
|
||||||
|
// but fail other checks.
|
||||||
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ pub(crate) struct MemoryStyle {
|
||||||
pub(crate) ram_color: Option<ColorStr>,
|
pub(crate) ram_color: Option<ColorStr>,
|
||||||
|
|
||||||
/// The colour of the cache label and graph line. Does not do anything on Windows.
|
/// The colour of the cache label and graph line. Does not do anything on Windows.
|
||||||
#[cfg(not(target_os = "windows"))]
|
#[cfg_attr(target_os = "windows", allow(dead_code))]
|
||||||
#[serde(alias = "cache_colour")]
|
#[serde(alias = "cache_colour")]
|
||||||
pub(crate) cache_color: Option<ColorStr>,
|
pub(crate) cache_color: Option<ColorStr>,
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue