| //===-- FileTest.cpp ------------------------------------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "lldb/Host/File.h" |
| #include "llvm/ADT/SmallString.h" |
| #include "llvm/Support/FileSystem.h" |
| #include "llvm/Support/FileUtilities.h" |
| #include "llvm/Support/Path.h" |
| #include "llvm/Support/Program.h" |
| #include "gtest/gtest.h" |
| |
| using namespace lldb; |
| using namespace lldb_private; |
| |
| TEST(File, GetWaitableHandleFileno) { |
| const auto *Info = testing::UnitTest::GetInstance()->current_test_info(); |
| |
| llvm::SmallString<128> name; |
| int fd; |
| llvm::sys::fs::createTemporaryFile(llvm::Twine(Info->test_case_name()) + "-" + |
| Info->name(), |
| "test", fd, name); |
| llvm::FileRemover remover(name); |
| ASSERT_GE(fd, 0); |
| |
| FILE *stream = fdopen(fd, "r"); |
| ASSERT_TRUE(stream); |
| |
| NativeFile file(stream, true); |
| EXPECT_EQ(file.GetWaitableHandle(), fd); |
| } |
| |
| TEST(File, GetStreamFromDescriptor) { |
| const auto *Info = testing::UnitTest::GetInstance()->current_test_info(); |
| llvm::SmallString<128> name; |
| int fd; |
| llvm::sys::fs::createTemporaryFile(llvm::Twine(Info->test_case_name()) + "-" + |
| Info->name(), |
| "test", fd, name); |
| |
| llvm::FileRemover remover(name); |
| ASSERT_GE(fd, 0); |
| |
| NativeFile file(fd, File::eOpenOptionWriteOnly, true); |
| ASSERT_TRUE(file.IsValid()); |
| |
| FILE *stream = file.GetStream(); |
| ASSERT_TRUE(stream != NULL); |
| |
| EXPECT_EQ(file.GetDescriptor(), fd); |
| EXPECT_EQ(file.GetWaitableHandle(), fd); |
| } |