1111#include " src/sys/ioctl/ioctl.h"
1212#include " src/unistd/close.h"
1313#include " src/unistd/read.h"
14+ #include " src/unistd/write.h"
15+
1416#include " test/UnitTest/ErrnoSetterMatcher.h"
17+ #include " test/UnitTest/Test.h"
1518
1619#include " hdr/sys_ioctl_macros.h"
1720
18- using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
1921using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
2022
21- TEST (LlvmLibcSysIoctlTest, TestFileFIONREAD ) {
23+ TEST (LlvmLibcSysIoctlTest, InvalidCommandAndFIONREAD ) {
2224 LIBC_NAMESPACE::libc_errno = 0 ;
2325
26+ // Setup the test file
27+ constexpr const char *TEST_FILE_NAME = " testdata/ioctl.test" ;
2428 constexpr const char TEST_MSG[] = " ioctl test" ;
2529 constexpr int TEST_MSG_SIZE = sizeof (TEST_MSG) - 1 ;
26- constexpr const char *TEST_FILE = " testdata/ioctl.test" ;
30+ auto TEST_FILE = libc_make_test_file_path (TEST_FILE_NAME);
31+ int new_test_file_fd =
32+ LIBC_NAMESPACE::open (TEST_FILE, O_CREAT | O_WRONLY, 0644 );
33+ ASSERT_THAT (
34+ (int )LIBC_NAMESPACE::write (new_test_file_fd, TEST_MSG, TEST_MSG_SIZE),
35+ Succeeds (TEST_MSG_SIZE));
36+ ASSERT_ERRNO_SUCCESS ();
37+ ASSERT_THAT (LIBC_NAMESPACE::close (new_test_file_fd), Succeeds (0 ));
38+ ASSERT_ERRNO_SUCCESS ();
39+
40+ // Reopen the file for testing
2741 int fd = LIBC_NAMESPACE::open (TEST_FILE, O_RDONLY);
2842 ASSERT_ERRNO_SUCCESS ();
2943 ASSERT_GT (fd, 0 );
@@ -49,21 +63,11 @@ TEST(LlvmLibcSysIoctlTest, TestFileFIONREAD) {
4963 ASSERT_GT (ret, -1 );
5064 ASSERT_EQ (n - READ_COUNT, n_after_reading);
5165
52- ASSERT_THAT (LIBC_NAMESPACE::close (fd), Succeeds (0 ));
53- }
54-
55- TEST (LlvmLibcSysIoctlTest, InvalidIoctlCommand) {
56- LIBC_NAMESPACE::libc_errno = 0 ;
57-
58- int fd = LIBC_NAMESPACE::open (" /dev/zero" , O_RDONLY);
59- ASSERT_GT (fd, 0 );
60- ASSERT_ERRNO_SUCCESS ();
61-
6266 // 0xDEADBEEF is just a random nonexistent command;
6367 // calling this should always fail with ENOTTY
64- int ret = LIBC_NAMESPACE::ioctl (fd, 0xDEADBEEF , NULL );
65- ASSERT_EQ (ret, -1 );
68+ ret = LIBC_NAMESPACE::ioctl (fd, 0xDEADBEEF , NULL );
6669 ASSERT_ERRNO_EQ (ENOTTY);
70+ ASSERT_EQ (ret, -1 );
6771
6872 ASSERT_THAT (LIBC_NAMESPACE::close (fd), Succeeds (0 ));
6973}
0 commit comments