bottom/tests/arg_tests.rs

156 lines
4 KiB
Rust
Raw Normal View History

2020-02-29 03:24:24 +00:00
use std::process::Command;
2019-09-17 02:39:57 +00:00
use assert_cmd::prelude::*;
2019-09-15 02:29:40 +00:00
use predicates::prelude::*;
2019-12-15 05:17:15 +00:00
// These tests are mostly here just to ensure that invalid results will be caught when passing arguments...
2020-03-03 06:02:54 +00:00
// TODO: [TEST] Allow for release testing. Do this with paths.
//======================RATES======================//
2019-09-15 02:29:40 +00:00
fn get_os_binary_loc() -> String {
2020-02-29 22:07:47 +00:00
if cfg!(target_os = "linux") {
"./target/x86_64-unknown-linux-gnu/debug/btm".to_string()
} else if cfg!(target_os = "windows") {
"./target/x86_64-pc-windows-msvc/debug/btm".to_string()
} else if cfg!(target_os = "macos") {
"./target/x86_64-apple-darwin/debug/btm".to_string()
} else {
"".to_string()
}
}
2019-09-15 02:29:40 +00:00
#[test]
fn test_small_rate() -> Result<(), Box<dyn std::error::Error>> {
2020-02-29 22:07:47 +00:00
Command::new(get_os_binary_loc())
.arg("-r")
.arg("249")
.assert()
.failure()
.stderr(predicate::str::contains(
"Please set your update rate to be at least 250 milliseconds.",
));
2020-02-29 22:07:47 +00:00
Ok(())
2019-09-15 02:29:40 +00:00
}
#[test]
fn test_large_default_time() -> Result<(), Box<dyn std::error::Error>> {
Command::new(get_os_binary_loc())
.arg("-t")
.arg("18446744073709551616")
.assert()
.failure()
.stderr(predicate::str::contains(
"Please set your default value to be at most",
));
Ok(())
}
#[test]
fn test_small_default_time() -> Result<(), Box<dyn std::error::Error>> {
Command::new(get_os_binary_loc())
.arg("-t")
.arg("900")
.assert()
.failure()
.stderr(predicate::str::contains(
"Please set your default value to be at least",
));
Ok(())
}
#[test]
fn test_large_delta_time() -> Result<(), Box<dyn std::error::Error>> {
Command::new(get_os_binary_loc())
.arg("-d")
.arg("18446744073709551616")
.assert()
.failure()
.stderr(predicate::str::contains(
"Please set your time delta to be at most",
));
Ok(())
}
#[test]
fn test_small_delta_time() -> Result<(), Box<dyn std::error::Error>> {
Command::new(get_os_binary_loc())
.arg("-d")
.arg("900")
.assert()
.failure()
.stderr(predicate::str::contains(
"Please set your time delta to be at least",
));
Ok(())
}
#[test]
fn test_large_rate() -> Result<(), Box<dyn std::error::Error>> {
2020-02-29 22:07:47 +00:00
Command::new(get_os_binary_loc())
.arg("-r")
.arg("18446744073709551616")
.assert()
.failure()
.stderr(predicate::str::contains(
"Please set your update rate to be at most unsigned INT_MAX.",
2020-02-29 22:07:47 +00:00
));
Ok(())
}
2019-09-15 02:29:40 +00:00
#[test]
fn test_negative_rate() -> Result<(), Box<dyn std::error::Error>> {
2020-02-29 22:07:47 +00:00
// This test should auto fail due to how clap works
Command::new(get_os_binary_loc())
.arg("-r")
.arg("-1000")
.assert()
.failure()
.stderr(predicate::str::contains(
"wasn't expected, or isn't valid in this context",
));
2019-09-15 02:29:40 +00:00
2020-02-29 22:07:47 +00:00
Ok(())
2019-09-15 02:29:40 +00:00
}
#[test]
fn test_invalid_rate() -> Result<(), Box<dyn std::error::Error>> {
2020-02-29 22:07:47 +00:00
Command::new(get_os_binary_loc())
.arg("-r")
.arg("100-1000")
.assert()
.failure()
.stderr(predicate::str::contains("invalid digit"));
2019-09-15 02:29:40 +00:00
2020-02-29 22:07:47 +00:00
Ok(())
2019-09-15 02:29:40 +00:00
}
2020-03-03 06:02:54 +00:00
#[test]
fn test_conflicting_temps() -> Result<(), Box<dyn std::error::Error>> {
Command::new(get_os_binary_loc())
.arg("-c")
.arg("-f")
.assert()
.failure()
.stderr(predicate::str::contains(
"cannot be used with one or more of the other specified arguments",
));
Ok(())
}
#[test]
fn test_conflicting_default_widget() -> Result<(), Box<dyn std::error::Error>> {
Command::new(get_os_binary_loc())
.arg("--cpu_default")
.arg("--disk_default")
.assert()
.failure()
.stderr(predicate::str::contains(
"cannot be used with one or more of the other specified arguments",
));
Ok(())
}