use crate::configuration::Configuration; use std::io::Result; pub struct Version; impl Version { pub fn new() -> Self { Version } } impl super::Command for Version { fn before_dependencies(&self) -> Vec> { vec![] } fn execute(&self, _: Option<&String>, _: &Configuration, _: &str) -> Result<()> { let version = env!("CARGO_PKG_VERSION"); println!("{version}"); Ok(()) } fn after_dependencies(&self) -> Vec> { vec![] } fn command(&self) -> &'static str { "version" } fn help(&self) -> &'static str { "\t\t\t\tPrints the version" } } #[cfg(test)] mod tests { use super::*; use crate::command::Command; use crate::configuration::Configuration; #[test] fn test_version_command() { let version = Version::new(); let configuration = Configuration::new().unwrap(); version .execute(None, &configuration, "") .expect("Could not call version"); } #[test] fn version_before_dependencies() { let version = Version::new(); let dependencies = version.before_dependencies(); assert_eq!(dependencies.len(), 0); } #[test] fn version_after_dependencies() { let version = Version::new(); let dependencies = version.after_dependencies(); assert_eq!(dependencies.len(), 0); } // These two tests feel pointless but I'm doing it for the coverage :p #[test] fn version_command_output() { let version = Version::new(); version.command(); } #[test] fn version_help_output() { let version = Version::new(); version.help(); } }