use std::io; use crate::common::{self, TestCommand}; /* Note: tests in this crate cannot rely on the actual time displayed by the module, since that is dependent on the time inside the test environment, which we cannot control. However, we *can* test certain things here, such as the fact that the module should not display when disabled, should display *something* when enabled, and should have the correct prefixes and suffixes in a given config */ #[test] fn config_enabled() -> io::Result<()> { let output = common::render_module("time") .use_config(toml::toml! { [time] disabled = false }) .output()?; let actual = String::from_utf8(output.stdout).unwrap(); // We can't test what it actually is...but we can assert it's not blank assert!(!actual.is_empty()); Ok(()) } #[test] fn config_blank() -> io::Result<()> { let output = common::render_module("time").output()?; let actual = String::from_utf8(output.stdout).unwrap(); let expected = ""; assert_eq!(expected, actual); Ok(()) } #[test] fn config_check_prefix_and_suffix() -> io::Result<()> { let output = common::render_module("time") .use_config(toml::toml! { [time] disabled = false format = "[%T]" }) .output()?; let actual = String::from_utf8(output.stdout).unwrap(); // This is the prefix with "at ", the color code, then the prefix char [ let col_prefix = format!("at {}{}[", '\u{1b}', "[1;33m"); // This is the suffix with suffix char ']', then color codes, then a space let col_suffix = format!("]{}{} ", '\u{1b}', "[0m"); assert!(actual.starts_with(&col_prefix)); assert!(actual.ends_with(&col_suffix)); Ok(()) }