fix(jobs): Handle zero jobs with zero thresholds (#2613)

* Handle zero jobs with negative thresholds

* Allow for zero threshold only

* Log when threshold is less than zero

* Address comments

* Add docs
This commit is contained in:
Anthony Huang 2021-04-20 09:30:22 -07:00 committed by GitHub
parent e56e755b66
commit 3f2d6cc068
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 3 deletions

View File

@ -1453,7 +1453,8 @@ symbol = "🌟 "
The `jobs` module shows the current number of jobs running.
The module will be shown only if there are background jobs running.
The module will show the number of jobs running if there is more than 1 job, or
more than the `threshold` config value, if it exists.
more than the `threshold` config value, if it exists. If `threshold` is set to 0,
then the module will also show when there are 0 jobs running.
::: warning

View File

@ -15,11 +15,20 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
.trim()
.parse::<i64>()
.ok()?;
if num_of_jobs == 0 {
if config.threshold < 0 {
log::warn!(
"threshold in [jobs] ({}) was less than zero",
config.threshold
);
return None;
}
let module_number = if num_of_jobs > config.threshold {
if num_of_jobs == 0 && config.threshold > 0 {
return None;
}
let module_number = if num_of_jobs > config.threshold || config.threshold == 0 {
num_of_jobs.to_string()
} else {
"".to_string()
@ -109,4 +118,32 @@ mod test {
let expected = Some(format!("{} ", Color::Blue.bold().paint("✦3")));
assert_eq!(expected, actual);
}
#[test]
fn config_0_job_0() {
let actual = ModuleRenderer::new("jobs")
.config(toml::toml! {
[jobs]
threshold = 0
})
.jobs(0)
.collect();
let expected = Some(format!("{} ", Color::Blue.bold().paint("✦0")));
assert_eq!(expected, actual);
}
#[test]
fn config_0_job_1() {
let actual = ModuleRenderer::new("jobs")
.config(toml::toml! {
[jobs]
threshold = 0
})
.jobs(1)
.collect();
let expected = Some(format!("{} ", Color::Blue.bold().paint("✦1")));
assert_eq!(expected, actual);
}
}