diff options
author | Elliott Hughes <enh@google.com> | 2020-02-21 23:21:28 -0800 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2020-02-23 11:36:53 -0800 |
commit | 733cedd1c4696ea74dab34d629ef7ac28ecc2200 (patch) | |
tree | 6f24227b01f5bfea254d364bd90ee5a1067d4408 /tests/sys_stat_test.cpp | |
parent | fcbdba22ab1c84825bd1e4cd18f8298c87991a5b (diff) |
Add a libc wrapper for statx(2).
Bug: http://b/127675384
Bug: http://b/146676114
Test: treehugger
Change-Id: I844edc12f62717e579870a040cf03dfe60dc280b
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); |