summaryrefslogtreecommitdiffstats
path: root/vendor/os_info/src/uname.rs
blob: f4417e882a5a1f2c4c0a801b4ca7dc1831f39f18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use std::process::Command;

use log::error;

pub fn uname() -> Option<String> {
    Command::new("uname")
        .arg("-r")
        .output()
        .map_err(|e| {
            error!("Failed to invoke 'uname': {:?}", e);
        })
        .ok()
        .and_then(|out| {
            if out.status.success() {
                Some(String::from_utf8_lossy(&out.stdout).trim_end().to_owned())
            } else {
                log::error!("'uname' invocation error: {:?}", out);
                None
            }
        })
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn uname_nonempty() {
        let val = uname().expect("uname failed");
        assert!(!val.is_empty());
    }
}