7
7
// ===----------------------------------------------------------------------===//
8
8
9
9
#include " hdr/fcntl_macros.h"
10
+ #include " hdr/sys_stat_macros.h"
10
11
#include " hdr/types/struct_timeval.h"
11
12
#include " src/errno/libc_errno.h"
12
13
#include " src/fcntl/open.h"
13
14
#include " src/stdio/remove.h"
14
15
#include " src/sys/stat/stat.h"
15
16
#include " src/sys/time/utimes.h"
16
17
#include " src/unistd/close.h"
18
+
19
+ #include " test/UnitTest/ErrnoCheckingTest.h"
17
20
#include " test/UnitTest/ErrnoSetterMatcher.h"
18
21
#include " test/UnitTest/Test.h"
19
22
23
+ using LlvmLibcUtimesTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
24
+
20
25
// SUCCESS: Takes a file and successfully updates
21
26
// its last access and modified times.
22
- TEST (LlvmLibcUtimesTest, ChangeTimesSpecific) {
27
+ TEST_F (LlvmLibcUtimesTest, ChangeTimesSpecific) {
23
28
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
24
29
25
30
constexpr const char *FILE_PATH = " utimes_pass.test" ;
26
31
auto TEST_FILE = libc_make_test_file_path (FILE_PATH);
27
- int fd = LIBC_NAMESPACE::open (TEST_FILE, O_WRONLY | O_CREAT);
32
+ int fd = LIBC_NAMESPACE::open (TEST_FILE, O_WRONLY | O_CREAT, S_IRWXU);
33
+ ASSERT_ERRNO_SUCCESS ();
28
34
ASSERT_GT (fd, 0 );
29
35
ASSERT_THAT (LIBC_NAMESPACE::close (fd), Succeeds (0 ));
30
36
@@ -36,11 +42,11 @@ TEST(LlvmLibcUtimesTest, ChangeTimesSpecific) {
36
42
times[1 ].tv_usec = 23456 ;
37
43
38
44
// ensure utimes succeeds
39
- ASSERT_THAT (LIBC_NAMESPACE::utimes (FILE_PATH , times), Succeeds (0 ));
45
+ ASSERT_THAT (LIBC_NAMESPACE::utimes (TEST_FILE , times), Succeeds (0 ));
40
46
41
47
// verify the times values against stat of the TEST_FILE
42
48
struct stat statbuf;
43
- ASSERT_EQ (LIBC_NAMESPACE::stat (FILE_PATH , &statbuf), 0 );
49
+ ASSERT_EQ (LIBC_NAMESPACE::stat (TEST_FILE , &statbuf), 0 );
44
50
45
51
// seconds
46
52
ASSERT_EQ (statbuf.st_atim .tv_sec , times[0 ].tv_sec );
@@ -57,13 +63,13 @@ TEST(LlvmLibcUtimesTest, ChangeTimesSpecific) {
57
63
58
64
// FAILURE: Invalid values in the timeval struct
59
65
// to check that utimes rejects it.
60
- TEST (LlvmLibcUtimesTest, InvalidMicroseconds) {
66
+ TEST_F (LlvmLibcUtimesTest, InvalidMicroseconds) {
61
67
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
62
68
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
63
69
64
70
constexpr const char *FILE_PATH = " utimes_fail.test" ;
65
71
auto TEST_FILE = libc_make_test_file_path (FILE_PATH);
66
- int fd = LIBC_NAMESPACE::open (TEST_FILE, O_WRONLY | O_CREAT);
72
+ int fd = LIBC_NAMESPACE::open (TEST_FILE, O_WRONLY | O_CREAT, S_IRWXU );
67
73
ASSERT_GT (fd, 0 );
68
74
ASSERT_THAT (LIBC_NAMESPACE::close (fd), Succeeds (0 ));
69
75
@@ -76,7 +82,7 @@ TEST(LlvmLibcUtimesTest, InvalidMicroseconds) {
76
82
times[1 ].tv_usec = 1000000 ; // invalid
77
83
78
84
// ensure utimes fails
79
- ASSERT_THAT (LIBC_NAMESPACE::utimes (FILE_PATH , times), Fails (EINVAL));
85
+ ASSERT_THAT (LIBC_NAMESPACE::utimes (TEST_FILE , times), Fails (EINVAL));
80
86
81
87
// check for failure on
82
88
// the other possible bad values
@@ -87,6 +93,6 @@ TEST(LlvmLibcUtimesTest, InvalidMicroseconds) {
87
93
times[1 ].tv_usec = 1000 ;
88
94
89
95
// ensure utimes fails once more
90
- ASSERT_THAT (LIBC_NAMESPACE::utimes (FILE_PATH , times), Fails (EINVAL));
96
+ ASSERT_THAT (LIBC_NAMESPACE::utimes (TEST_FILE , times), Fails (EINVAL));
91
97
ASSERT_THAT (LIBC_NAMESPACE::remove (TEST_FILE), Succeeds (0 ));
92
98
}
0 commit comments