1pub fn get_version_digits() -> String {
3 let semver = option_env!("CARGO_PKG_VERSION").unwrap_or("unknown");
4 match option_env!("MK_BUILD_GIT_HASH") {
5 None => semver.to_string(),
6 Some(hash) => format!("{} (rev {})", semver, hash),
7 }
8}
9
10#[cfg(test)]
11mod tests {
12 use super::*;
13 use regex::Regex;
14
15 #[test]
16 fn test_get_version_digits_no_hash() -> anyhow::Result<()> {
17 let version = get_version_digits();
20 let re = Regex::new(r"^\d+\.\d+\.\d+ \(rev [a-f0-9]+\)$")?;
21 assert!(version == "unknown" || re.find(&version).is_some());
22 Ok(())
23 }
24
25 #[test]
26 fn test_get_version_digits_format() -> anyhow::Result<()> {
27 let version: &str = &get_version_digits();
31 let re_1 = Regex::new(r"^\d+\.\d+\.\d+$")?;
32 let re_2 = Regex::new(r"^\d+\.\d+\.\d+ \(rev [a-f0-9]+\)$")?;
33 assert!(version == "unknown" || re_1.find(version).is_some() || re_2.find(version).is_some());
34
35 Ok(())
36 }
37}