diff --git a/src/uu/uname/src/uname.rs b/src/uu/uname/src/uname.rs index dda859722..abd50d1b8 100644 --- a/src/uu/uname/src/uname.rs +++ b/src/uu/uname/src/uname.rs @@ -30,12 +30,16 @@ pub mod options { pub static OS: &str = "operating-system"; } -#[cfg(target_os = "linux")] +#[cfg(all(target_os = "linux", any(target_env = "gnu", target_env = "")))] const HOST_OS: &str = "GNU/Linux"; +#[cfg(all(target_os = "linux", not(any(target_env = "gnu", target_env = ""))))] +const HOST_OS: &str = "Linux"; #[cfg(target_os = "windows")] const HOST_OS: &str = "Windows NT"; #[cfg(target_os = "freebsd")] const HOST_OS: &str = "FreeBSD"; +#[cfg(target_os = "netbsd")] +const HOST_OS: &str = "NetBSD"; #[cfg(target_os = "openbsd")] const HOST_OS: &str = "OpenBSD"; #[cfg(target_vendor = "apple")] diff --git a/tests/by-util/test_uname.rs b/tests/by-util/test_uname.rs index de3f42a6b..adcaa1072 100644 --- a/tests/by-util/test_uname.rs +++ b/tests/by-util/test_uname.rs @@ -1,5 +1,10 @@ use crate::common::util::*; +#[test] +fn test_uname() { + new_ucmd!().succeeds(); +} + #[test] fn test_uname_compatible() { new_ucmd!().arg("-a").succeeds(); @@ -45,3 +50,60 @@ fn test_uname_kernel() { #[cfg(not(target_os = "linux"))] ucmd.arg("-o").succeeds(); } + +#[test] +fn test_uname_operating_system() { + #[cfg(target_vendor = "apple")] + new_ucmd!() + .arg("--operating-system") + .succeeds() + .stdout_is("Darwin\n"); + #[cfg(target_os = "freebsd")] + new_ucmd!() + .arg("--operating-system") + .succeeds() + .stdout_is("FreeBSD\n"); + #[cfg(target_os = "fuchsia")] + new_ucmd!() + .arg("--operating-system") + .succeeds() + .stdout_is("Fuchsia\n"); + #[cfg(all(target_os = "linux", any(target_env = "gnu", target_env = "")))] + new_ucmd!() + .arg("--operating-system") + .succeeds() + .stdout_is("GNU/Linux\n"); + #[cfg(all(target_os = "linux", not(any(target_env = "gnu", target_env = ""))))] + new_ucmd!() + .arg("--operating-system") + .succeeds() + .stdout_is("Linux\n"); + #[cfg(target_os = "netbsd")] + new_ucmd!() + .arg("--operating-system") + .succeeds() + .stdout_is("NetBSD\n"); + #[cfg(target_os = "openbsd")] + new_ucmd!() + .arg("--operating-system") + .succeeds() + .stdout_is("OpenBSD\n"); + #[cfg(target_os = "redox")] + new_ucmd!() + .arg("--operating-system") + .succeeds() + .stdout_is("Redox\n"); + #[cfg(target_os = "windows")] + new_ucmd!() + .arg("--operating-system") + .succeeds() + .stdout_is("Windows NT\n"); +} + +#[test] +fn test_uname_help() { + new_ucmd!() + .arg("--help") + .succeeds() + .stdout_contains("system information"); +}