diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp index 38c8efaf0..a5b92f8e0 100644 --- a/tests/unistd_test.cpp +++ b/tests/unistd_test.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -478,3 +479,24 @@ TEST(unistd, sethostname) { // all we can do for sethostname(2). ASSERT_EQ(-1, sethostname("", -1)); } + +TEST(unistd, gethostname) { + char hostname[HOST_NAME_MAX + 1]; + + memset(hostname, 0, sizeof(hostname)); + + ASSERT_EQ(0, gethostname(hostname, HOST_NAME_MAX)); + utsname buf; + ASSERT_EQ(0, uname(&buf)); + ASSERT_EQ(0, strncmp(hostname, buf.nodename, SYS_NMLN)); + ASSERT_GT(strlen(hostname), 0U); + + errno = 0; + ASSERT_EQ(-1, gethostname(hostname, strlen(hostname))); + ASSERT_EQ(ENAMETOOLONG, errno); + + errno = 0; + ASSERT_EQ(0, gethostname(hostname, -2)); + ASSERT_EQ(0, errno); + GTEST_LOG_(INFO) << "hostname=" << hostname << "\n"; +}