diff options
author | Elliott Hughes <enh@google.com> | 2020-02-25 16:37:09 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-02-25 16:37:09 +0000 |
commit | 33318f51972de2a7973efb7d9d2f00de567d2e3c (patch) | |
tree | 73449053c31e0966e79426588380bc351edd4f19 /tests/sys_stat_test.cpp | |
parent | 521dab3b365cd87284fdb0e3534069902b31d875 (diff) | |
parent | 733cedd1c4696ea74dab34d629ef7ac28ecc2200 (diff) |
Merge "Add a libc wrapper for statx(2)."
Diffstat (limited to 'tests/sys_stat_test.cpp')
-rw-r--r-- | tests/sys_stat_test.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/sys_stat_test.cpp b/tests/sys_stat_test.cpp index 97bf58026..71591c0c2 100644 --- a/tests/sys_stat_test.cpp +++ b/tests/sys_stat_test.cpp @@ -22,6 +22,14 @@ #include <android-base/file.h> #include <gtest/gtest.h> +#if defined(__BIONIC__) +#define HAVE_STATX +#elif defined(__GLIBC_PREREQ) +#if __GLIBC_PREREQ(2, 28) +#define HAVE_STATX +#endif +#endif + TEST(sys_stat, futimens) { FILE* fp = tmpfile(); ASSERT_TRUE(fp != nullptr); @@ -95,6 +103,24 @@ TEST(sys_stat, stat64_lstat64_fstat64) { close(fd); } +TEST(sys_stat, statx) { +#if defined(HAVE_STATX) + struct statx sx; + int rc = statx(AT_FDCWD, "/proc/version", AT_STATX_SYNC_AS_STAT, STATX_ALL, &sx); + if (rc == -1 && errno == ENOSYS) { + GTEST_SKIP() << "statx returned ENOSYS"; + return; + } + ASSERT_EQ(0, rc); + struct stat64 sb; + ASSERT_EQ(0, stat64("/proc/version", &sb)); + EXPECT_EQ(sb.st_ino, sx.stx_ino); + EXPECT_EQ(sb.st_mode, sx.stx_mode); +#else + GTEST_SKIP() << "statx not available"; +#endif +} + TEST(sys_stat, fchmodat_EFAULT_file) { ASSERT_EQ(-1, fchmodat(AT_FDCWD, (char *) 0x1, 0751, 0)); ASSERT_EQ(EFAULT, errno); |