-
Notifications
You must be signed in to change notification settings - Fork 15.2k
[libc] Migrate sys/socket tests to use ErrnoCheckingTest. #132107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Also use ErrnoSetterMatcher to verify the function return values and verify/clear out errno values. Fix the bug in ErrnoSetterMatcher error reporting machinery to properly convert errno values into errno names to make error messages easier to debug.
|
@llvm/pr-subscribers-libc Author: Alexey Samsonov (vonosmas) ChangesAlso use ErrnoSetterMatcher to verify the function return values and verify/clear out errno values. Fix the bug in ErrnoSetterMatcher error reporting machinery to properly convert errno values into errno names to make error messages easier to debug. Full diff: https://github.com/llvm/llvm-project/pull/132107.diff 9 Files Affected:
diff --git a/libc/test/UnitTest/ErrnoSetterMatcher.h b/libc/test/UnitTest/ErrnoSetterMatcher.h
index a895c5044b0ad..937e2ffeafd11 100644
--- a/libc/test/UnitTest/ErrnoSetterMatcher.h
+++ b/libc/test/UnitTest/ErrnoSetterMatcher.h
@@ -101,9 +101,13 @@ template <typename T> class ErrnoSetterMatcher : public Matcher<T> {
if constexpr (!ignore_errno()) {
if (!errno_cmp.compare(actual_errno)) {
- tlog << "Expected errno to be " << errno_cmp.str() << " \""
- << get_error_string(errno_cmp.expected) << "\" but got \""
- << get_error_string(actual_errno) << "\".\n";
+ auto expected_str = try_get_errno_name(errno_cmp.expected);
+ auto actual_str = try_get_errno_name(actual_errno);
+ tlog << "Expected errno to be " << errno_cmp.str() << " "
+ << (expected_str ? *expected_str : "<unknown>")
+ << "(" << errno_cmp.expected << ") but got "
+ << (actual_str? *actual_str : "<unknown>")
+ << "(" << actual_errno << ").\n";
}
}
}
diff --git a/libc/test/src/sys/socket/linux/CMakeLists.txt b/libc/test/src/sys/socket/linux/CMakeLists.txt
index 9149b78631f29..de67040122138 100644
--- a/libc/test/src/sys/socket/linux/CMakeLists.txt
+++ b/libc/test/src/sys/socket/linux/CMakeLists.txt
@@ -11,6 +11,8 @@ add_libc_unittest(
libc.src.errno.errno
libc.src.sys.socket.socket
libc.src.unistd.close
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -26,6 +28,8 @@ add_libc_unittest(
libc.src.sys.socket.bind
libc.src.stdio.remove
libc.src.unistd.close
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -39,6 +43,8 @@ add_libc_unittest(
libc.src.errno.errno
libc.src.sys.socket.socketpair
libc.src.unistd.close
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -54,6 +60,8 @@ add_libc_unittest(
libc.src.sys.socket.send
libc.src.sys.socket.recv
libc.src.unistd.close
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -69,6 +77,8 @@ add_libc_unittest(
libc.src.sys.socket.sendto
libc.src.sys.socket.recvfrom
libc.src.unistd.close
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -84,4 +94,6 @@ add_libc_unittest(
libc.src.sys.socket.sendmsg
libc.src.sys.socket.recvmsg
libc.src.unistd.close
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
diff --git a/libc/test/src/sys/socket/linux/bind_test.cpp b/libc/test/src/sys/socket/linux/bind_test.cpp
index e70cbd578290b..60cd7c0df10f2 100644
--- a/libc/test/src/sys/socket/linux/bind_test.cpp
+++ b/libc/test/src/sys/socket/linux/bind_test.cpp
@@ -12,12 +12,16 @@
#include "src/stdio/remove.h"
#include "src/unistd/close.h"
-#include "src/errno/libc_errno.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
+#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include <sys/socket.h> // For AF_UNIX and SOCK_DGRAM
-TEST(LlvmLibcSocketTest, BindLocalSocket) {
+using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
+using LlvmLibcBindTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
+TEST_F(LlvmLibcBindTest, BindLocalSocket) {
const char *FILENAME = "bind_file.test";
auto SOCK_PATH = libc_make_test_file_path(FILENAME);
@@ -41,14 +45,10 @@ TEST(LlvmLibcSocketTest, BindLocalSocket) {
ASSERT_LT(
i, static_cast<unsigned int>(sizeof(sockaddr_un) - sizeof(sa_family_t)));
- int result =
+ ASSERT_THAT(
LIBC_NAMESPACE::bind(sock, reinterpret_cast<struct sockaddr *>(&my_addr),
- sizeof(struct sockaddr_un));
-
- ASSERT_EQ(result, 0);
- ASSERT_ERRNO_SUCCESS();
-
- LIBC_NAMESPACE::close(sock);
-
- LIBC_NAMESPACE::remove(SOCK_PATH);
+ sizeof(struct sockaddr_un)),
+ Succeeds(0));
+ ASSERT_THAT(LIBC_NAMESPACE::close(sock), Succeeds(0));
+ ASSERT_THAT(LIBC_NAMESPACE::remove(SOCK_PATH), Succeeds(0));
}
diff --git a/libc/test/src/sys/socket/linux/send_recv_test.cpp b/libc/test/src/sys/socket/linux/send_recv_test.cpp
index a5d4880d934cc..46f73a29d6f7a 100644
--- a/libc/test/src/sys/socket/linux/send_recv_test.cpp
+++ b/libc/test/src/sys/socket/linux/send_recv_test.cpp
@@ -12,62 +12,51 @@
#include "src/unistd/close.h"
-#include "src/errno/libc_errno.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
+#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include <sys/socket.h> // For AF_UNIX and SOCK_DGRAM
-TEST(LlvmLibcSendRecvTest, SucceedsWithSocketPair) {
+using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
+using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
+using LlvmLibcSendRecvTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
+TEST_F(LlvmLibcSendRecvTest, SucceedsWithSocketPair) {
const char TEST_MESSAGE[] = "connection successful";
const size_t MESSAGE_LEN = sizeof(TEST_MESSAGE);
int sockpair[2] = {0, 0};
- int result = LIBC_NAMESPACE::socketpair(AF_UNIX, SOCK_STREAM, 0, sockpair);
- ASSERT_EQ(result, 0);
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::socketpair(AF_UNIX, SOCK_STREAM, 0, sockpair),
+ Succeeds(0));
- ssize_t send_result =
- LIBC_NAMESPACE::send(sockpair[0], TEST_MESSAGE, MESSAGE_LEN, 0);
- EXPECT_EQ(send_result, static_cast<ssize_t>(MESSAGE_LEN));
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::send(sockpair[0], TEST_MESSAGE, MESSAGE_LEN, 0),
+ Succeeds(static_cast<ssize_t>(MESSAGE_LEN)));
char buffer[256];
- ssize_t recv_result =
- LIBC_NAMESPACE::recv(sockpair[1], buffer, sizeof(buffer), 0);
- ASSERT_EQ(recv_result, static_cast<ssize_t>(MESSAGE_LEN));
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::recv(sockpair[1], buffer, sizeof(buffer), 0),
+ Succeeds(static_cast<ssize_t>(MESSAGE_LEN)));
ASSERT_STREQ(buffer, TEST_MESSAGE);
// close both ends of the socket
- result = LIBC_NAMESPACE::close(sockpair[0]);
- ASSERT_EQ(result, 0);
- ASSERT_ERRNO_SUCCESS();
-
- result = LIBC_NAMESPACE::close(sockpair[1]);
- ASSERT_EQ(result, 0);
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::close(sockpair[0]), Succeeds(0));
+ ASSERT_THAT(LIBC_NAMESPACE::close(sockpair[1]), Succeeds(0));
}
-TEST(LlvmLibcSendRecvTest, SendFails) {
+TEST_F(LlvmLibcSendRecvTest, SendFails) {
const char TEST_MESSAGE[] = "connection terminated";
const size_t MESSAGE_LEN = sizeof(TEST_MESSAGE);
- ssize_t send_result = LIBC_NAMESPACE::send(-1, TEST_MESSAGE, MESSAGE_LEN, 0);
- EXPECT_EQ(send_result, ssize_t(-1));
- ASSERT_ERRNO_FAILURE();
-
- LIBC_NAMESPACE::libc_errno = 0; // reset errno to avoid test ordering issues.
+ ASSERT_THAT(LIBC_NAMESPACE::send(-1, TEST_MESSAGE, MESSAGE_LEN, 0),
+ Fails(EBADF));
}
-TEST(LlvmLibcSendRecvTest, RecvFails) {
+TEST_F(LlvmLibcSendRecvTest, RecvFails) {
char buffer[256];
- ssize_t recv_result = LIBC_NAMESPACE::recv(-1, buffer, sizeof(buffer), 0);
- ASSERT_EQ(recv_result, ssize_t(-1));
- ASSERT_ERRNO_FAILURE();
-
- LIBC_NAMESPACE::libc_errno = 0; // reset errno to avoid test ordering issues.
+ ASSERT_THAT(LIBC_NAMESPACE::recv(-1, buffer, sizeof(buffer), 0),
+ Fails(EBADF));
}
diff --git a/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp b/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp
index abcb0a3e6e506..7ed94b20c564a 100644
--- a/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp
+++ b/libc/test/src/sys/socket/linux/sendmsg_recvmsg_test.cpp
@@ -12,20 +12,24 @@
#include "src/unistd/close.h"
-#include "src/errno/libc_errno.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
+#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include <sys/socket.h> // For AF_UNIX and SOCK_DGRAM
-TEST(LlvmLibcSendMsgRecvMsgTest, SucceedsWithSocketPair) {
+using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
+using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
+using LlvmLibcSendMsgRecvMsgTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
+TEST_F(LlvmLibcSendMsgRecvMsgTest, SucceedsWithSocketPair) {
const char TEST_MESSAGE[] = "connection successful";
const size_t MESSAGE_LEN = sizeof(TEST_MESSAGE);
int sockpair[2] = {0, 0};
- int result = LIBC_NAMESPACE::socketpair(AF_UNIX, SOCK_STREAM, 0, sockpair);
- ASSERT_EQ(result, 0);
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::socketpair(AF_UNIX, SOCK_STREAM, 0, sockpair),
+ Succeeds(0));
iovec send_msg_text;
send_msg_text.iov_base =
@@ -41,9 +45,8 @@ TEST(LlvmLibcSendMsgRecvMsgTest, SucceedsWithSocketPair) {
send_message.msg_controllen = 0;
send_message.msg_flags = 0;
- ssize_t send_result = LIBC_NAMESPACE::sendmsg(sockpair[0], &send_message, 0);
- EXPECT_EQ(send_result, static_cast<ssize_t>(MESSAGE_LEN));
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::sendmsg(sockpair[0], &send_message, 0),
+ Succeeds(static_cast<ssize_t>(MESSAGE_LEN)));
char buffer[256];
@@ -60,23 +63,17 @@ TEST(LlvmLibcSendMsgRecvMsgTest, SucceedsWithSocketPair) {
recv_message.msg_controllen = 0;
recv_message.msg_flags = 0;
- ssize_t recv_result = LIBC_NAMESPACE::recvmsg(sockpair[1], &recv_message, 0);
- ASSERT_EQ(recv_result, static_cast<ssize_t>(MESSAGE_LEN));
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::recvmsg(sockpair[1], &recv_message, 0),
+ Succeeds(static_cast<ssize_t>(MESSAGE_LEN)));
ASSERT_STREQ(buffer, TEST_MESSAGE);
// close both ends of the socket
- result = LIBC_NAMESPACE::close(sockpair[0]);
- ASSERT_EQ(result, 0);
- ASSERT_ERRNO_SUCCESS();
-
- result = LIBC_NAMESPACE::close(sockpair[1]);
- ASSERT_EQ(result, 0);
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::close(sockpair[0]), Succeeds(0));
+ ASSERT_THAT(LIBC_NAMESPACE::close(sockpair[1]), Succeeds(0));
}
-TEST(LlvmLibcSendMsgRecvMsgTest, SendFails) {
+TEST_F(LlvmLibcSendMsgRecvMsgTest, SendFails) {
const char TEST_MESSAGE[] = "connection terminated";
const size_t MESSAGE_LEN = sizeof(TEST_MESSAGE);
@@ -94,14 +91,10 @@ TEST(LlvmLibcSendMsgRecvMsgTest, SendFails) {
send_message.msg_controllen = 0;
send_message.msg_flags = 0;
- ssize_t send_result = LIBC_NAMESPACE::sendmsg(-1, &send_message, 0);
- EXPECT_EQ(send_result, ssize_t(-1));
- ASSERT_ERRNO_FAILURE();
-
- LIBC_NAMESPACE::libc_errno = 0; // reset errno to avoid test ordering issues.
+ ASSERT_THAT(LIBC_NAMESPACE::sendmsg(-1, &send_message, 0), Fails(EBADF));
}
-TEST(LlvmLibcSendMsgRecvMsgTest, RecvFails) {
+TEST_F(LlvmLibcSendMsgRecvMsgTest, RecvFails) {
char buffer[256];
iovec recv_msg_text;
@@ -117,9 +110,5 @@ TEST(LlvmLibcSendMsgRecvMsgTest, RecvFails) {
recv_message.msg_controllen = 0;
recv_message.msg_flags = 0;
- ssize_t recv_result = LIBC_NAMESPACE::recvmsg(-1, &recv_message, 0);
- ASSERT_EQ(recv_result, ssize_t(-1));
- ASSERT_ERRNO_FAILURE();
-
- LIBC_NAMESPACE::libc_errno = 0; // reset errno to avoid test ordering issues.
+ ASSERT_THAT(LIBC_NAMESPACE::recvmsg(-1, &recv_message, 0), Fails(EBADF));
}
diff --git a/libc/test/src/sys/socket/linux/sendto_recvfrom_test.cpp b/libc/test/src/sys/socket/linux/sendto_recvfrom_test.cpp
index e91b333deac58..8377260252c37 100644
--- a/libc/test/src/sys/socket/linux/sendto_recvfrom_test.cpp
+++ b/libc/test/src/sys/socket/linux/sendto_recvfrom_test.cpp
@@ -12,64 +12,55 @@
#include "src/unistd/close.h"
-#include "src/errno/libc_errno.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
+#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include <sys/socket.h> // For AF_UNIX and SOCK_DGRAM
-TEST(LlvmLibcSendToRecvFromTest, SucceedsWithSocketPair) {
+using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
+using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
+using LlvmLibcSendToRecvFromTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
+TEST_F(LlvmLibcSendToRecvFromTest, SucceedsWithSocketPair) {
const char TEST_MESSAGE[] = "connection successful";
const size_t MESSAGE_LEN = sizeof(TEST_MESSAGE);
int sockpair[2] = {0, 0};
- int result = LIBC_NAMESPACE::socketpair(AF_UNIX, SOCK_STREAM, 0, sockpair);
- ASSERT_EQ(result, 0);
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::socketpair(AF_UNIX, SOCK_STREAM, 0, sockpair),
+ Succeeds(0));
- ssize_t send_result = LIBC_NAMESPACE::sendto(sockpair[0], TEST_MESSAGE,
- MESSAGE_LEN, 0, nullptr, 0);
- EXPECT_EQ(send_result, static_cast<ssize_t>(MESSAGE_LEN));
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::sendto(sockpair[0], TEST_MESSAGE, MESSAGE_LEN, 0,
+ nullptr, 0),
+ Succeeds(static_cast<ssize_t>(MESSAGE_LEN)));
char buffer[256];
- ssize_t recv_result = LIBC_NAMESPACE::recvfrom(sockpair[1], buffer,
- sizeof(buffer), 0, nullptr, 0);
- ASSERT_EQ(recv_result, static_cast<ssize_t>(MESSAGE_LEN));
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::recvfrom(sockpair[1], buffer, sizeof(buffer), 0,
+ nullptr, 0),
+ Succeeds(static_cast<ssize_t>(MESSAGE_LEN)));
ASSERT_STREQ(buffer, TEST_MESSAGE);
// close both ends of the socket
- result = LIBC_NAMESPACE::close(sockpair[0]);
- ASSERT_EQ(result, 0);
- ASSERT_ERRNO_SUCCESS();
-
- result = LIBC_NAMESPACE::close(sockpair[1]);
- ASSERT_EQ(result, 0);
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::close(sockpair[0]), Succeeds(0));
+ ASSERT_THAT(LIBC_NAMESPACE::close(sockpair[1]), Succeeds(0));
}
-TEST(LlvmLibcSendToRecvFromTest, SendToFails) {
+TEST_F(LlvmLibcSendToRecvFromTest, SendToFails) {
const char TEST_MESSAGE[] = "connection terminated";
const size_t MESSAGE_LEN = sizeof(TEST_MESSAGE);
- ssize_t send_result =
- LIBC_NAMESPACE::sendto(-1, TEST_MESSAGE, MESSAGE_LEN, 0, nullptr, 0);
- EXPECT_EQ(send_result, ssize_t(-1));
- ASSERT_ERRNO_FAILURE();
-
- LIBC_NAMESPACE::libc_errno = 0; // reset errno to avoid test ordering issues.
+ ASSERT_THAT(
+ LIBC_NAMESPACE::sendto(-1, TEST_MESSAGE, MESSAGE_LEN, 0, nullptr, 0),
+ Fails(EBADF));
}
-TEST(LlvmLibcSendToRecvFromTest, RecvFromFails) {
+TEST_F(LlvmLibcSendToRecvFromTest, RecvFromFails) {
char buffer[256];
- ssize_t recv_result =
- LIBC_NAMESPACE::recvfrom(-1, buffer, sizeof(buffer), 0, nullptr, 0);
- ASSERT_EQ(recv_result, ssize_t(-1));
- ASSERT_ERRNO_FAILURE();
-
- LIBC_NAMESPACE::libc_errno = 0; // reset errno to avoid test ordering issues.
+ ASSERT_THAT(
+ LIBC_NAMESPACE::recvfrom(-1, buffer, sizeof(buffer), 0, nullptr, 0),
+ Fails(EBADF));
}
diff --git a/libc/test/src/sys/socket/linux/socket_test.cpp b/libc/test/src/sys/socket/linux/socket_test.cpp
index d1197fa3ef7c6..9f16be97e926a 100644
--- a/libc/test/src/sys/socket/linux/socket_test.cpp
+++ b/libc/test/src/sys/socket/linux/socket_test.cpp
@@ -10,15 +10,19 @@
#include "src/unistd/close.h"
-#include "src/errno/libc_errno.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
+#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include <sys/socket.h> // For AF_UNIX and SOCK_DGRAM
-TEST(LlvmLibcSocketTest, LocalSocket) {
+using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
+using LlvmLibcSocketTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
+TEST_F(LlvmLibcSocketTest, LocalSocket) {
int sock = LIBC_NAMESPACE::socket(AF_UNIX, SOCK_DGRAM, 0);
ASSERT_GE(sock, 0);
ASSERT_ERRNO_SUCCESS();
- LIBC_NAMESPACE::close(sock);
+ ASSERT_THAT(LIBC_NAMESPACE::close(sock), Succeeds(0));
}
diff --git a/libc/test/src/sys/socket/linux/socketpair_test.cpp b/libc/test/src/sys/socket/linux/socketpair_test.cpp
index 9393ddd5c19d8..94b7412f8c061 100644
--- a/libc/test/src/sys/socket/linux/socketpair_test.cpp
+++ b/libc/test/src/sys/socket/linux/socketpair_test.cpp
@@ -10,28 +10,29 @@
#include "src/unistd/close.h"
-#include "src/errno/libc_errno.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
+#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include <sys/socket.h> // For AF_UNIX and SOCK_DGRAM
-TEST(LlvmLibcSocketPairTest, LocalSocket) {
+using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
+using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
+using LlvmLibcSocketPairTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
+TEST_F(LlvmLibcSocketPairTest, LocalSocket) {
int sockpair[2] = {-1, -1};
- int result = LIBC_NAMESPACE::socketpair(AF_UNIX, SOCK_DGRAM, 0, sockpair);
- ASSERT_EQ(result, 0);
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::socketpair(AF_UNIX, SOCK_DGRAM, 0, sockpair),
+ Succeeds(0));
ASSERT_GE(sockpair[0], 0);
ASSERT_GE(sockpair[1], 0);
- LIBC_NAMESPACE::close(sockpair[0]);
- LIBC_NAMESPACE::close(sockpair[1]);
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::close(sockpair[0]), Succeeds(0));
+ ASSERT_THAT(LIBC_NAMESPACE::close(sockpair[1]), Succeeds(0));
}
-TEST(LlvmLibcSocketPairTest, SocketFails) {
+TEST_F(LlvmLibcSocketPairTest, SocketFails) {
int sockpair[2] = {-1, -1};
- int result = LIBC_NAMESPACE::socketpair(-1, -1, -1, sockpair);
- ASSERT_EQ(result, -1);
- ASSERT_ERRNO_FAILURE();
+ ASSERT_THAT(LIBC_NAMESPACE::socketpair(-1, -1, -1, sockpair), Fails(EINVAL));
}
diff --git a/utils/bazel/llvm-project-overlay/libc/test/src/sys/socket/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/test/src/sys/socket/BUILD.bazel
index f7bce45d07da6..ac7f48d0aeebb 100644
--- a/utils/bazel/llvm-project-overlay/libc/test/src/sys/socket/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/test/src/sys/socket/BUILD.bazel
@@ -17,6 +17,9 @@ libc_test(
"//libc:socket",
"//libc:close",
],
+ deps = [
+ "//libc/test/UnitTest:errno_test_helpers",
+ ],
)
libc_test(
@@ -26,6 +29,9 @@ libc_test(
"//libc:socketpair",
"//libc:close",
],
+ deps = [
+ "//libc/test/UnitTest:errno_test_helpers",
+ ],
)
libc_test(
@@ -37,6 +43,9 @@ libc_test(
"//libc:recv",
"//libc:close",
],
+ deps = [
+ "//libc/test/UnitTest:errno_test_helpers",
+ ],
)
libc_test(
@@ -48,6 +57,9 @@ libc_test(
"//libc:recvfrom",
"//libc:close",
],
+ deps = [
+ "//libc/test/UnitTest:errno_test_helpers",
+ ],
)
libc_test(
@@ -59,4 +71,7 @@ libc_test(
"//libc:recvmsg",
"//libc:close",
],
+ deps = [
+ "//libc/test/UnitTest:errno_test_helpers",
+ ],
)
|
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/196/builds/6218 Here is the relevant piece of the build log for the reference |
Also use ErrnoSetterMatcher to verify the function return values and verify/clear out errno values. Fix the bug in ErrnoSetterMatcher error reporting machinery to properly convert errno values into errno names to make error messages easier to debug.