[libcxx-commits] [libcxx] 8ace9ea - [libc++][lit][AIX] Enable test case last_write_time.pass.cpp for AIX

Xing Xue via libcxx-commits libcxx-commits at lists.llvm.org
Fri Sep 16 13:09:35 PDT 2022


Author: Xing Xue
Date: 2022-09-16T16:08:40-04:00
New Revision: 8ace9ea258c9ddc2e1e1c50cabde328ea10e34cf

URL: https://github.com/llvm/llvm-project/commit/8ace9ea258c9ddc2e1e1c50cabde328ea10e34cf
DIFF: https://github.com/llvm/llvm-project/commit/8ace9ea258c9ddc2e1e1c50cabde328ea10e34cf.diff

LOG: [libc++][lit][AIX] Enable test case last_write_time.pass.cpp for AIX

Summary:
This patch enables libc++ LIT test case last_write_time.pass.cpp for AIX. Because system call utimensat() of AIX which is used in the libc++ implementation of last_write_time() does not accept the times parameter with a negative tv_sec or tv_nsec field, testing of setting file time to before epoch time is excluded for AIX.

Reviewed by: ldionne, libc++

Differential Revision: https://reviews.llvm.org/D133124

Added: 
    

Modified: 
    libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp

Removed: 
    


################################################################################
diff  --git a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp
index 71acbc0e5e205..cfff7c2009243 100644
--- a/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp
+++ b/libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp
@@ -8,8 +8,6 @@
 
 // UNSUPPORTED: c++03
 
-// XFAIL: LIBCXX-AIX-FIXME
-
 // The string reported on errors changed, which makes those tests fail when run
 // against already-released libc++'s.
 // XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx{{10.15|11.0}}
@@ -93,6 +91,9 @@ static int stat(const char *path, StatT *buf) {
 static int lstat(const char *path, StatT *buf) {
   return stat_file(path, buf, FILE_FLAG_OPEN_REPARSE_POINT);
 }
+#elif defined(_AIX)
+using TimeSpec = st_timespec_t;
+using StatT = struct stat;
 #else
 using TimeSpec = timespec;
 using StatT = struct stat;
@@ -475,6 +476,7 @@ TEST_CASE(set_last_write_time_dynamic_env_test)
     const file_time_type past_time = now - Minutes(3) - Sec(42) - SubSec(17);
     const file_time_type before_epoch_time =
         epoch_time - Minutes(3) - Sec(42) - SubSec(17);
+    (void)before_epoch_time;
     // FreeBSD has a bug in their utimes implementation where the time is not update
     // when the number of seconds is '-1'.
 #if defined(__FreeBSD__) || defined(__NetBSD__)
@@ -482,6 +484,7 @@ TEST_CASE(set_last_write_time_dynamic_env_test)
         epoch_time - Sec(2) - SubSec(17);
 #else
     const file_time_type just_before_epoch_time = epoch_time - SubSec(17);
+    (void)just_before_epoch_time;
 #endif
 
     struct TestCase {
@@ -494,12 +497,19 @@ TEST_CASE(set_last_write_time_dynamic_env_test)
         {"file, future_time", file, future_time},
         {"dir, future_time", dir, future_time},
         {"file, past_time", file, past_time},
-        {"dir, past_time", dir, past_time},
+        {"dir, past_time", dir, past_time}
+        // Exclude file time types of before epoch time from testing on AIX
+        // because AIX system call utimensat() does not accept the times
+        // parameter having a negative tv_sec or tv_nsec field.
+#if !defined(_AIX)
+        ,
         {"file, before_epoch_time", file, before_epoch_time},
         {"dir, before_epoch_time", dir, before_epoch_time},
         {"file, just_before_epoch_time", file, just_before_epoch_time},
         {"dir, just_before_epoch_time", dir, just_before_epoch_time}
+#endif
     };
+
     for (const auto& TC : cases) {
         const auto old_times = GetTimes(TC.p);
         file_time_type old_time;


        


More information about the libcxx-commits mailing list