From a9ad0892ddee86bbc7653bc6b43b660bc591c12a Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Wed, 19 Mar 2025 14:42:41 -0700 Subject: [PATCH 1/2] [libc] Migrate sys/socket tests to use ErrnoCheckingTest. 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. --- libc/test/UnitTest/ErrnoSetterMatcher.h | 10 +++- libc/test/src/sys/socket/linux/CMakeLists.txt | 12 ++++ libc/test/src/sys/socket/linux/bind_test.cpp | 22 +++---- .../src/sys/socket/linux/send_recv_test.cpp | 53 +++++++---------- .../sys/socket/linux/sendmsg_recvmsg_test.cpp | 49 ++++++--------- .../sys/socket/linux/sendto_recvfrom_test.cpp | 59 ++++++++----------- .../test/src/sys/socket/linux/socket_test.cpp | 10 +++- .../src/sys/socket/linux/socketpair_test.cpp | 25 ++++---- .../libc/test/src/sys/socket/BUILD.bazel | 15 +++++ 9 files changed, 130 insertions(+), 125 deletions(-) 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 class ErrnoSetterMatcher : public Matcher { 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 : "") + << "(" << errno_cmp.expected << ") but got " + << (actual_str? *actual_str : "") + << "(" << 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 // 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(sizeof(sockaddr_un) - sizeof(sa_family_t))); - int result = + ASSERT_THAT( LIBC_NAMESPACE::bind(sock, reinterpret_cast(&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 // 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(MESSAGE_LEN)); - ASSERT_ERRNO_SUCCESS(); + ASSERT_THAT(LIBC_NAMESPACE::send(sockpair[0], TEST_MESSAGE, MESSAGE_LEN, 0), + Succeeds(static_cast(MESSAGE_LEN))); char buffer[256]; - ssize_t recv_result = - LIBC_NAMESPACE::recv(sockpair[1], buffer, sizeof(buffer), 0); - ASSERT_EQ(recv_result, static_cast(MESSAGE_LEN)); - ASSERT_ERRNO_SUCCESS(); + ASSERT_THAT(LIBC_NAMESPACE::recv(sockpair[1], buffer, sizeof(buffer), 0), + Succeeds(static_cast(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 // 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(MESSAGE_LEN)); - ASSERT_ERRNO_SUCCESS(); + ASSERT_THAT(LIBC_NAMESPACE::sendmsg(sockpair[0], &send_message, 0), + Succeeds(static_cast(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(MESSAGE_LEN)); - ASSERT_ERRNO_SUCCESS(); + ASSERT_THAT(LIBC_NAMESPACE::recvmsg(sockpair[1], &recv_message, 0), + Succeeds(static_cast(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 // 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(MESSAGE_LEN)); - ASSERT_ERRNO_SUCCESS(); + ASSERT_THAT(LIBC_NAMESPACE::sendto(sockpair[0], TEST_MESSAGE, MESSAGE_LEN, 0, + nullptr, 0), + Succeeds(static_cast(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(MESSAGE_LEN)); - ASSERT_ERRNO_SUCCESS(); + ASSERT_THAT(LIBC_NAMESPACE::recvfrom(sockpair[1], buffer, sizeof(buffer), 0, + nullptr, 0), + Succeeds(static_cast(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 // 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 // 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", + ], ) From 1f4e52e1ab137740eb59c3529ce73696d3017952 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Wed, 19 Mar 2025 14:58:42 -0700 Subject: [PATCH 2/2] clang-format --- libc/test/UnitTest/ErrnoSetterMatcher.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libc/test/UnitTest/ErrnoSetterMatcher.h b/libc/test/UnitTest/ErrnoSetterMatcher.h index 937e2ffeafd11..c6eadd25858ea 100644 --- a/libc/test/UnitTest/ErrnoSetterMatcher.h +++ b/libc/test/UnitTest/ErrnoSetterMatcher.h @@ -104,10 +104,10 @@ template class ErrnoSetterMatcher : public Matcher { 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 : "") - << "(" << errno_cmp.expected << ") but got " - << (actual_str? *actual_str : "") - << "(" << actual_errno << ").\n"; + << (expected_str ? *expected_str : "") << "(" + << errno_cmp.expected << ") but got " + << (actual_str ? *actual_str : "") << "(" << actual_errno + << ").\n"; } } }