summaryrefslogtreecommitdiff
path: root/libc/test/src/sys/socket/linux/sendto_recvfrom_test.cpp
diff options
context:
space:
mode:
authorAlexey Samsonov <vonosmas@gmail.com>2025-03-19 15:33:20 -0700
committerGitHub <noreply@github.com>2025-03-19 15:33:20 -0700
commit4c36c425ec7d4decd177cedc9609154e12b98f27 (patch)
treeee8b5a5b8e63fa9e18114d5c34e632be686dce2e /libc/test/src/sys/socket/linux/sendto_recvfrom_test.cpp
parent2e13ec561c8139951e3f0815c35c758a7a3011db (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.cpp59
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));
}