diff options
| author | Alexey Samsonov <vonosmas@gmail.com> | 2025-03-19 15:33:20 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-19 15:33:20 -0700 |
| commit | 4c36c425ec7d4decd177cedc9609154e12b98f27 (patch) | |
| tree | ee8b5a5b8e63fa9e18114d5c34e632be686dce2e /libc/test/src/sys/socket/linux/sendto_recvfrom_test.cpp | |
| parent | 2e13ec561c8139951e3f0815c35c758a7a3011db (diff) | |
[libc] Migrate sys/socket tests to use ErrnoCheckingTest. (#132107)
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.
Diffstat (limited to 'libc/test/src/sys/socket/linux/sendto_recvfrom_test.cpp')
| -rw-r--r-- | libc/test/src/sys/socket/linux/sendto_recvfrom_test.cpp | 59 |
1 files changed, 25 insertions, 34 deletions
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 e91b333deac5..8377260252c3 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)); } |
