-
Notifications
You must be signed in to change notification settings - Fork 13.1k
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
[libc] Migrate unistd tests to use ErrnoCheckingTest. #132067
Conversation
Use ErrnoCheckingTest harness added in d039af3 for all unistd tests that verify errno values. Stop explicitly setting it to zero in test code, as harness does it. It also verifies that the errno is zero at the end of each test case, so update the ASSERT_ERRNO_EQ and ASSERT_ERRNO_FAILURE macro to clear out its value after the verification (similar to how ErrnoSetterMatcher does). Update the CMake and Bazel rules for those tests. In the latter case, remove commented out tests that are currently unsupported in Bazel, since they get stale quickly.
@llvm/pr-subscribers-libc Author: Alexey Samsonov (vonosmas) ChangesUse ErrnoCheckingTest harness added in d039af3 for all unistd tests that verify errno values. Stop explicitly setting it to zero in test code, as harness does it. It also verifies that the errno is zero at the end of each test case, so update the ASSERT_ERRNO_EQ and ASSERT_ERRNO_FAILURE macro to clear out its value after the verification (similar to how ErrnoSetterMatcher does). Update the CMake and Bazel rules for those tests. In the latter case, remove commented out tests that are currently unsupported in Bazel, since they get stale quickly. Patch is 54.50 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/132067.diff 30 Files Affected:
diff --git a/libc/test/UnitTest/Test.h b/libc/test/UnitTest/Test.h
index c7729606000c4..907ae1e59e511 100644
--- a/libc/test/UnitTest/Test.h
+++ b/libc/test/UnitTest/Test.h
@@ -41,10 +41,12 @@
// they all provide.
#define ASSERT_ERRNO_EQ(VAL) \
- ASSERT_EQ(VAL, static_cast<int>(LIBC_NAMESPACE::libc_errno))
+ ASSERT_EQ(VAL, static_cast<int>(LIBC_NAMESPACE::libc_errno)); \
+ LIBC_NAMESPACE::libc_errno = 0
#define ASSERT_ERRNO_SUCCESS() \
ASSERT_EQ(0, static_cast<int>(LIBC_NAMESPACE::libc_errno))
#define ASSERT_ERRNO_FAILURE() \
- ASSERT_NE(0, static_cast<int>(LIBC_NAMESPACE::libc_errno))
+ ASSERT_NE(0, static_cast<int>(LIBC_NAMESPACE::libc_errno)); \
+ LIBC_NAMESPACE::libc_errno = 0
#endif // LLVM_LIBC_TEST_UNITTEST_TEST_H
diff --git a/libc/test/src/unistd/CMakeLists.txt b/libc/test/src/unistd/CMakeLists.txt
index c31a03d4b27a5..9aec6150af0ec 100644
--- a/libc/test/src/unistd/CMakeLists.txt
+++ b/libc/test/src/unistd/CMakeLists.txt
@@ -15,6 +15,8 @@ add_libc_unittest(
libc.src.unistd.access
libc.src.unistd.close
libc.src.unistd.unlink
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -30,6 +32,7 @@ add_libc_unittest(
libc.src.unistd.chdir
libc.src.unistd.close
libc.src.fcntl.open
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
@@ -48,6 +51,7 @@ add_libc_unittest(
libc.src.unistd.read
libc.src.unistd.unlink
libc.src.unistd.write
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
@@ -66,6 +70,7 @@ add_libc_unittest(
libc.src.unistd.read
libc.src.unistd.unlink
libc.src.unistd.write
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
@@ -84,6 +89,7 @@ add_libc_unittest(
libc.src.unistd.read
libc.src.unistd.unlink
libc.src.unistd.write
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
@@ -99,6 +105,7 @@ add_libc_unittest(
libc.src.fcntl.open
libc.src.unistd.fchdir
libc.src.unistd.close
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
@@ -118,6 +125,8 @@ add_libc_unittest(
libc.src.unistd.unlink
libc.src.unistd.write
libc.src.__support.CPP.string_view
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -136,6 +145,7 @@ add_libc_unittest(
libc.src.unistd.pwrite
libc.src.unistd.unlink
libc.src.unistd.write
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
@@ -154,6 +164,7 @@ add_libc_unittest(
libc.src.unistd.read
libc.src.unistd.write
libc.src.stdio.remove
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
@@ -170,6 +181,8 @@ add_libc_unittest(
libc.src.unistd.close
libc.src.unistd.link
libc.src.unistd.unlink
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -185,6 +198,8 @@ add_libc_unittest(
libc.src.unistd.close
libc.src.unistd.linkat
libc.src.unistd.unlink
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -200,6 +215,7 @@ add_libc_unittest(
libc.src.unistd.close
libc.src.unistd.lseek
libc.src.unistd.read
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
@@ -214,6 +230,7 @@ add_libc_unittest(
libc.src.errno.errno
libc.src.unistd.close
libc.src.unistd.pipe
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
@@ -228,6 +245,7 @@ add_libc_unittest(
libc.src.errno.errno
libc.src.unistd.close
libc.src.unistd.pipe2
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
@@ -242,6 +260,8 @@ add_libc_unittest(
libc.src.errno.errno
libc.src.sys.stat.mkdir
libc.src.unistd.rmdir
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -268,6 +288,8 @@ add_libc_unittest(
libc.src.unistd.symlink
libc.src.unistd.unlink
libc.src.__support.CPP.string_view
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -285,6 +307,8 @@ add_libc_unittest(
libc.src.unistd.symlink
libc.src.unistd.unlink
libc.src.__support.CPP.string_view
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -310,6 +334,8 @@ add_libc_unittest(
libc.src.unistd.close
libc.src.unistd.symlink
libc.src.unistd.unlink
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -325,6 +351,8 @@ add_libc_unittest(
libc.src.unistd.close
libc.src.unistd.symlinkat
libc.src.unistd.unlink
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -343,6 +371,8 @@ add_libc_unittest(
libc.src.unistd.unlink
libc.src.unistd.write
libc.src.__support.CPP.string_view
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -374,6 +404,8 @@ add_libc_unittest(
libc.src.fcntl.openat
libc.src.unistd.close
libc.src.unistd.unlinkat
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -404,6 +436,8 @@ add_libc_unittest(
getsid_test.cpp
DEPENDS
libc.src.unistd.getsid
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -427,6 +461,8 @@ add_libc_unittest(
libc.src.fcntl.open
libc.src.unistd.close
libc.src.errno.errno
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -451,6 +487,7 @@ add_libc_unittest(
libc.include.sys_syscall
libc.src.errno.errno
libc.src.unistd.__llvm_libc_syscall
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
@@ -479,6 +516,8 @@ add_libc_unittest(
libc.src.unistd.fpathconf
libc.src.fcntl.open
libc.src.unistd.close
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_unittest(
@@ -494,6 +533,8 @@ add_libc_unittest(
libc.src.unistd.pathconf
libc.src.fcntl.open
libc.src.unistd.close
+ libc.test.UnitTest.ErrnoCheckingTest
+ libc.test.UnitTest.ErrnoSetterMatcher
)
add_libc_test(
@@ -519,6 +560,7 @@ add_libc_test(
DEPENDS
libc.src.unistd.getentropy
libc.src.errno.errno
+ libc.test.UnitTest.ErrnoCheckingTest
libc.test.UnitTest.ErrnoSetterMatcher
)
diff --git a/libc/test/src/unistd/access_test.cpp b/libc/test/src/unistd/access_test.cpp
index 0643b2b992a5c..375227fe348b8 100644
--- a/libc/test/src/unistd/access_test.cpp
+++ b/libc/test/src/unistd/access_test.cpp
@@ -6,22 +6,24 @@
//
//===----------------------------------------------------------------------===//
-#include "src/errno/libc_errno.h"
#include "src/fcntl/open.h"
#include "src/unistd/access.h"
#include "src/unistd/close.h"
#include "src/unistd/unlink.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include <sys/stat.h>
#include <unistd.h>
-TEST(LlvmLibcAccessTest, CreateAndTest) {
+using LlvmLibcAccessTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
+TEST_F(LlvmLibcAccessTest, CreateAndTest) {
// The test strategy is to repeatedly create a file in different modes and
// test that it is accessable in those modes but not in others.
- LIBC_NAMESPACE::libc_errno = 0;
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
+ using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
constexpr const char *FILENAME = "access.test";
auto TEST_FILE = libc_make_test_file_path(FILENAME);
int fd = LIBC_NAMESPACE::open(TEST_FILE, O_WRONLY | O_CREAT, S_IRWXU);
@@ -29,30 +31,23 @@ TEST(LlvmLibcAccessTest, CreateAndTest) {
ASSERT_GT(fd, 0);
ASSERT_THAT(LIBC_NAMESPACE::close(fd), Succeeds(0));
- ASSERT_EQ(LIBC_NAMESPACE::access(TEST_FILE, F_OK), 0);
- ASSERT_ERRNO_SUCCESS();
- ASSERT_EQ(LIBC_NAMESPACE::access(TEST_FILE, X_OK | W_OK | R_OK), 0);
- ASSERT_ERRNO_SUCCESS();
+ ASSERT_THAT(LIBC_NAMESPACE::access(TEST_FILE, F_OK), Succeeds(0));
+ ASSERT_THAT(LIBC_NAMESPACE::access(TEST_FILE, X_OK | W_OK | R_OK),
+ Succeeds(0));
ASSERT_THAT(LIBC_NAMESPACE::unlink(TEST_FILE), Succeeds(0));
fd = LIBC_NAMESPACE::open(TEST_FILE, O_WRONLY | O_CREAT, S_IXUSR);
ASSERT_ERRNO_SUCCESS();
ASSERT_GT(fd, 0);
ASSERT_THAT(LIBC_NAMESPACE::close(fd), Succeeds(0));
- ASSERT_EQ(LIBC_NAMESPACE::access(TEST_FILE, F_OK), 0);
- ASSERT_ERRNO_SUCCESS();
- ASSERT_EQ(LIBC_NAMESPACE::access(TEST_FILE, X_OK), 0);
- ASSERT_ERRNO_SUCCESS();
- ASSERT_EQ(LIBC_NAMESPACE::access(TEST_FILE, R_OK), -1);
- ASSERT_ERRNO_EQ(EACCES);
- LIBC_NAMESPACE::libc_errno = 0;
- ASSERT_EQ(LIBC_NAMESPACE::access(TEST_FILE, W_OK), -1);
- ASSERT_ERRNO_EQ(EACCES);
- LIBC_NAMESPACE::libc_errno = 0;
+ ASSERT_THAT(LIBC_NAMESPACE::access(TEST_FILE, F_OK), Succeeds(0));
+ ASSERT_THAT(LIBC_NAMESPACE::access(TEST_FILE, X_OK), Succeeds(0));
+ ASSERT_THAT(LIBC_NAMESPACE::access(TEST_FILE, R_OK), Fails(EACCES));
+ ASSERT_THAT(LIBC_NAMESPACE::access(TEST_FILE, W_OK), Fails(EACCES));
ASSERT_THAT(LIBC_NAMESPACE::unlink(TEST_FILE), Succeeds(0));
}
-TEST(LlvmLibcAccessTest, AccessNonExistentFile) {
+TEST_F(LlvmLibcAccessTest, AccessNonExistentFile) {
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
ASSERT_THAT(LIBC_NAMESPACE::access("testdata/non-existent-file", F_OK),
Fails(ENOENT));
diff --git a/libc/test/src/unistd/chdir_test.cpp b/libc/test/src/unistd/chdir_test.cpp
index e1bdcd77119f7..ac5217bbd2461 100644
--- a/libc/test/src/unistd/chdir_test.cpp
+++ b/libc/test/src/unistd/chdir_test.cpp
@@ -6,16 +6,18 @@
//
//===----------------------------------------------------------------------===//
-#include "src/errno/libc_errno.h"
#include "src/fcntl/open.h"
#include "src/unistd/chdir.h"
#include "src/unistd/close.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include "hdr/fcntl_macros.h"
-TEST(LlvmLibcChdirTest, ChangeAndOpen) {
+using LlvmLibcChdirTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
+TEST_F(LlvmLibcChdirTest, ChangeAndOpen) {
// The idea of this test is that we will first open an existing test file
// without changing the directory to make sure it exists. Next, we change
// directory and open the same file to make sure that the "chdir" operation
@@ -27,7 +29,6 @@ TEST(LlvmLibcChdirTest, ChangeAndOpen) {
auto TEST_FILE = libc_make_test_file_path(FILENAME2);
constexpr const char *FILENAME3 = "chdir.test";
auto TEST_FILE_BASE = libc_make_test_file_path(FILENAME3);
- LIBC_NAMESPACE::libc_errno = 0;
int fd = LIBC_NAMESPACE::open(TEST_FILE, O_PATH);
ASSERT_GT(fd, 0);
@@ -41,9 +42,7 @@ TEST(LlvmLibcChdirTest, ChangeAndOpen) {
ASSERT_THAT(LIBC_NAMESPACE::close(fd), Succeeds(0));
}
-TEST(LlvmLibcChdirTest, ChangeToNonExistentDir) {
- LIBC_NAMESPACE::libc_errno = 0;
+TEST_F(LlvmLibcChdirTest, ChangeToNonExistentDir) {
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
ASSERT_THAT(LIBC_NAMESPACE::chdir("non-existent-dir"), Fails(ENOENT));
- LIBC_NAMESPACE::libc_errno = 0;
}
diff --git a/libc/test/src/unistd/dup2_test.cpp b/libc/test/src/unistd/dup2_test.cpp
index 2b2b3f3eef9a8..f6d546def33ec 100644
--- a/libc/test/src/unistd/dup2_test.cpp
+++ b/libc/test/src/unistd/dup2_test.cpp
@@ -6,21 +6,22 @@
//
//===----------------------------------------------------------------------===//
-#include "src/errno/libc_errno.h"
#include "src/fcntl/open.h"
#include "src/unistd/close.h"
#include "src/unistd/dup2.h"
#include "src/unistd/read.h"
#include "src/unistd/unlink.h"
#include "src/unistd/write.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include <sys/stat.h>
-TEST(LlvmLibcdupTest, ReadAndWriteViaDup) {
+using LlvmLibcdupTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
+TEST_F(LlvmLibcdupTest, ReadAndWriteViaDup) {
constexpr int DUPFD = 0xD0;
- LIBC_NAMESPACE::libc_errno = 0;
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
constexpr const char *FILENAME = "dup2.test";
auto TEST_FILE = libc_make_test_file_path(FILENAME);
@@ -59,7 +60,7 @@ TEST(LlvmLibcdupTest, ReadAndWriteViaDup) {
ASSERT_THAT(LIBC_NAMESPACE::unlink(TEST_FILE), Succeeds(0));
}
-TEST(LlvmLibcdupTest, DupBadFD) {
+TEST_F(LlvmLibcdupTest, DupBadFD) {
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
ASSERT_THAT(LIBC_NAMESPACE::dup2(-1, 123), Fails(EBADF));
}
diff --git a/libc/test/src/unistd/dup3_test.cpp b/libc/test/src/unistd/dup3_test.cpp
index 7b1c8e0e25190..598940b1c456d 100644
--- a/libc/test/src/unistd/dup3_test.cpp
+++ b/libc/test/src/unistd/dup3_test.cpp
@@ -6,26 +6,27 @@
//
//===----------------------------------------------------------------------===//
-#include "src/errno/libc_errno.h"
#include "src/fcntl/open.h"
#include "src/unistd/close.h"
#include "src/unistd/dup3.h"
#include "src/unistd/read.h"
#include "src/unistd/unlink.h"
#include "src/unistd/write.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include <sys/stat.h>
+using LlvmLibcdupTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
// The tests here are exactly the same as those of dup2. We only test the
// plumbing of the dup3 syscall and not the dup3 functionality itself as it is
// a simple syscall wrapper. Testing dup3 functionality is beyond the scope of
// this test.
-TEST(LlvmLibcdupTest, ReadAndWriteViaDup) {
+TEST_F(LlvmLibcdupTest, ReadAndWriteViaDup) {
constexpr int DUPFD = 0xD0;
- LIBC_NAMESPACE::libc_errno = 0;
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
constexpr const char *FILENAME = "dup3.test";
@@ -65,7 +66,7 @@ TEST(LlvmLibcdupTest, ReadAndWriteViaDup) {
ASSERT_THAT(LIBC_NAMESPACE::unlink(TEST_FILE), Succeeds(0));
}
-TEST(LlvmLibcdupTest, DupBadFD) {
+TEST_F(LlvmLibcdupTest, DupBadFD) {
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
ASSERT_THAT(LIBC_NAMESPACE::dup3(-1, 123, 0), Fails(EBADF));
}
diff --git a/libc/test/src/unistd/dup_test.cpp b/libc/test/src/unistd/dup_test.cpp
index c7bf877142102..8e0b662c3961b 100644
--- a/libc/test/src/unistd/dup_test.cpp
+++ b/libc/test/src/unistd/dup_test.cpp
@@ -6,20 +6,21 @@
//
//===----------------------------------------------------------------------===//
-#include "src/errno/libc_errno.h"
#include "src/fcntl/open.h"
#include "src/unistd/close.h"
#include "src/unistd/dup.h"
#include "src/unistd/read.h"
#include "src/unistd/unlink.h"
#include "src/unistd/write.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include <sys/stat.h>
-TEST(LlvmLibcdupTest, ReadAndWriteViaDup) {
- LIBC_NAMESPACE::libc_errno = 0;
+using LlvmLibcdupTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
+TEST_F(LlvmLibcdupTest, ReadAndWriteViaDup) {
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
constexpr const char *FILENAME = "dup.test";
auto TEST_FILE = libc_make_test_file_path(FILENAME);
@@ -55,7 +56,7 @@ TEST(LlvmLibcdupTest, ReadAndWriteViaDup) {
ASSERT_THAT(LIBC_NAMESPACE::unlink(TEST_FILE), Succeeds(0));
}
-TEST(LlvmLibcdupTest, DupBadFD) {
+TEST_F(LlvmLibcdupTest, DupBadFD) {
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
ASSERT_THAT(LIBC_NAMESPACE::dup(-1), Fails(EBADF));
}
diff --git a/libc/test/src/unistd/fchdir_test.cpp b/libc/test/src/unistd/fchdir_test.cpp
index 0e39fde17c67b..add56484a8e85 100644
--- a/libc/test/src/unistd/fchdir_test.cpp
+++ b/libc/test/src/unistd/fchdir_test.cpp
@@ -6,16 +6,18 @@
//
//===----------------------------------------------------------------------===//
-#include "src/errno/libc_errno.h"
#include "src/fcntl/open.h"
#include "src/unistd/close.h"
#include "src/unistd/fchdir.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include "hdr/fcntl_macros.h"
-TEST(LlvmLibcChdirTest, ChangeAndOpen) {
+using LlvmLibcChdirTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
+
+TEST_F(LlvmLibcChdirTest, ChangeAndOpen) {
// The idea of this test is that we will first open an existing test file
// without changing the directory to make sure it exists. Next, we change
// directory and open the same file to make sure that the "fchdir" operation
@@ -27,7 +29,6 @@ TEST(LlvmLibcChdirTest, ChangeAndOpen) {
auto TEST_FILE = libc_make_test_file_path(FILENAME2);
constexpr const char *FILENAME3 = "fchdir.test";
auto TEST_FILE_BASE = libc_make_test_file_path(FILENAME3);
- LIBC_NAMESPACE::libc_errno = 0;
int dir_fd = LIBC_NAMESPACE::open(TEST_DIR, O_DIRECTORY);
ASSERT_GT(dir_fd, 0);
@@ -45,10 +46,7 @@ TEST(LlvmLibcChdirTest, ChangeAndOpen) {
ASSERT_THAT(LIBC_NAMESPACE::close(dir_fd), Succeeds(0));
}
-TEST(LlvmLibcChdirTest, ChangeToNonExistentDir) {
- using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
- LIBC_NAMESPACE::libc_errno = 0;
+TEST_F(LlvmLibcChdirTest, ChangeToNonExistentDir) {
ASSERT_EQ(LIBC_NAMESPACE::fchdir(0), -1);
ASSERT_ERRNO_FAILURE();
- LIBC_NAMESPACE::libc_errno = 0;
}
diff --git a/libc/test/src/unistd/fpathconf_test.cpp b/libc/test/src/unistd/fpathconf_test.cpp
index fe63e5e085973..3cba7ec5c66a8 100644
--- a/libc/test/src/unistd/fpathconf_test.cpp
+++ b/libc/test/src/unistd/fpathconf_test.cpp
@@ -12,19 +12,24 @@
#include "src/fcntl/open.h"
#include "src/unistd/close.h"
#include "src/unistd/fpathconf.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher;
+using LlvmLibcFpathconfTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
-TEST(LlvmLibcPipeTest, SmokeTest) {
+TEST_F(LlvmLibcFpathconfTest, SmokeTest) {
constexpr const char *FILENAME = "fpathconf.test";
auto TEST_FILE = libc_make_test_file_path(FILENAME);
int fd = LIBC_NAMESPACE::open(TEST_FILE, O_WRONLY | O_CREAT, S_IRWXU);
+ ASSERT_ERRNO_SUCCESS();
+ ASSERT_GT(fd, 0);
+
EXPECT_EQ(LIBC_NAMESPACE::fpathconf(fd, _PC_SYNC_IO), -1l);
EXPECT_EQ(LIBC_NAMESPACE::fpathconf(fd, _PC_PATH_MAX),
static_cast<long>(_POSIX_PATH_MAX));
- LIBC_NAMESPACE::close(fd);
+ ASSERT_THAT(LIBC_NAMESPACE::close(fd), Succeeds(0));
}
// TODO: Functionality tests
diff --git a/libc/test/src/unistd/ftruncate_test.cpp b/libc/test/src/unistd/ftruncate_test.cpp
index 2fe4002692a87..c50a07f15f1e0 100644
--- a/libc/test/src/unistd/ftruncate_test.cpp
+++ b/libc/test/src/unistd/ftruncate_test.cpp
@@ -7,21 +7,22 @@
//===----------------------------------------------------------------------===//
#include "src/__support/CPP/string_view.h"
-#include "src/errno/libc_errno.h"
#include "src/fcntl/open.h"
#include "src/unistd/close.h"
#include "src/unistd/ftruncate.h"
#include "src/unistd/read.h"
#include "src/unistd/unlink.h"
#include "src/unistd/write.h"
+#include "test/UnitTest/ErrnoCheckingTest.h"
#include "test/UnitTest/ErrnoSetterMatcher.h"
#include "test/UnitTest/Test.h"
#include <sys/stat.h>
namespace cpp = LIBC_NAMESPACE::cpp;
+using LlvmLibcFtruncateTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
-TEST(LlvmLibcFtruncateTest, CreateAndTruncate) {
+TEST_F(LlvmLibcFtruncateTest, CreateAndTruncate) {
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succe...
[truncated]
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
Use ErrnoCheckingTest harness added in d039af3 for all unistd tests that verify errno values. Stop explicitly setting it to zero in test code, as harness does it.
It also verifies that the errno is zero at the end of each test case, so update the ASSERT_ERRNO_EQ and ASSERT_ERRNO_FAILURE macro to clear out its value after the verification (similar to how ErrnoSetterMatcher does).
Update the CMake and Bazel rules for those tests. In the latter case, remove commented out tests that are currently unsupported in Bazel, since they get stale quickly.