Skip to content

Commit 511c635

Browse files
committed
[libc] Add invalid tests and use ErrnoCheckingTest
1 parent ce4c93f commit 511c635

File tree

5 files changed

+31
-7
lines changed

5 files changed

+31
-7
lines changed

libc/include/sys/time.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ types:
66
- type_name: struct_timeval
77
- type_name: struct_itimerval
88
enums: []
9+
objects: []
910
functions:
1011
- name: utimes
1112
return_type: int
@@ -29,4 +30,3 @@ functions:
2930
arguments:
3031
- type: int
3132
- type: struct itimerval *
32-
objects: []

libc/src/sys/time/linux/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ add_entrypoint_object(
1212
libc.include.sys_syscall
1313
libc.include.fcntl
1414
libc.src.__support.OSUtil.osutil
15+
libc.src.errno.errno
1516
)
1617

1718
add_entrypoint_object(

libc/test/src/sys/time/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,14 @@ add_libc_unittest(
2727
SRCS
2828
setitimer_test.cpp
2929
DEPENDS
30+
libc.include.signal
3031
libc.src.sys.time.setitimer
32+
libc.src.signal.sigaction
33+
libc.src.signal.sigemptyset
3134
libc.src.__support.common
3235
libc.src.errno.errno
36+
libc.test.UnitTest.ErrnoCheckingTest
3337
libc.test.UnitTest.ErrnoSetterMatcher
34-
libc.include.signal
3538
)
3639

3740
add_libc_unittest(
@@ -44,5 +47,6 @@ add_libc_unittest(
4447
libc.src.sys.time.getitimer
4548
libc.src.__support.common
4649
libc.src.errno.errno
50+
libc.test.UnitTest.ErrnoCheckingTest
4751
libc.test.UnitTest.ErrnoSetterMatcher
4852
)

libc/test/src/sys/time/getitimer_test.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@
99

1010
#include "hdr/types/struct_itimerval.h"
1111
#include "src/sys/time/getitimer.h"
12+
#include "test/UnitTest/ErrnoCheckingTest.h"
1213
#include "test/UnitTest/ErrnoSetterMatcher.h"
1314
#include "test/UnitTest/Test.h"
14-
#include <sys/time.h>
1515

1616
using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher;
17+
using LlvmLibcSysTimeGetitimerTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
1718

18-
TEST(LlvmLibcSysTimeGetitimerTest, SmokeTest) {
19+
TEST_F(LlvmLibcSysTimeGetitimerTest, SmokeTest) {
1920
struct itimerval timer;
2021
timer.it_value.tv_sec = -1;
2122
timer.it_value.tv_usec = -1;
@@ -30,3 +31,11 @@ TEST(LlvmLibcSysTimeGetitimerTest, SmokeTest) {
3031
ASSERT_TRUE(timer.it_interval.tv_sec == 0);
3132
ASSERT_TRUE(timer.it_interval.tv_usec == 0);
3233
}
34+
35+
TEST_F(LlvmLibcSysTimeGetitimerTest, InvalidRetTest) {
36+
struct itimerval timer;
37+
38+
// out of range timer type (which)
39+
ASSERT_THAT(LIBC_NAMESPACE::getitimer(99, &timer),
40+
returns(NE(0)).with_errno(NE(0)));
41+
}

libc/test/src/sys/time/setitimer_test.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,21 @@
88
//===----------------------------------------------------------------------===//
99

1010
#include "hdr/types/struct_itimerval.h"
11+
#include "hdr/types/struct_sigaction.h"
12+
#include "src/signal/sigemptyset.h"
1113
#include "src/sys/time/setitimer.h"
14+
#include "test/UnitTest/ErrnoCheckingTest.h"
1215
#include "test/UnitTest/ErrnoSetterMatcher.h"
1316
#include "test/UnitTest/Test.h"
1417

15-
#include <signal.h>
16-
1718
using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher;
19+
using LlvmLibcSysTimeSetitimerTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest;
1820

1921
static bool timer_fired(false);
2022

2123
extern "C" void handle_sigalrm(int) { timer_fired = true; }
2224

23-
TEST(LlvmLibcSysTimeSetitimerTest, SmokeTest) {
25+
TEST_F(LlvmLibcSysTimeSetitimerTest, SmokeTest) {
2426
LIBC_NAMESPACE::libc_errno = 0;
2527
struct sigaction sa;
2628
sa.sa_handler = handle_sigalrm;
@@ -44,3 +46,11 @@ TEST(LlvmLibcSysTimeSetitimerTest, SmokeTest) {
4446

4547
ASSERT_TRUE(timer_fired);
4648
}
49+
50+
TEST_F(LlvmLibcSysTimeSetitimerTest, InvalidRetTest) {
51+
struct itimerval timer;
52+
53+
// out of range timer type (which)
54+
ASSERT_THAT(LIBC_NAMESPACE::setitimer(99, &timer, nullptr),
55+
returns(NE(0)).with_errno(NE(0)));
56+
}

0 commit comments

Comments
 (0)