//===-- 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::eOpenOptionWrite, true); ASSERT_TRUE(file.IsValid()); FILE *stream = file.GetStream(); ASSERT_TRUE(stream != NULL); EXPECT_EQ(file.GetDescriptor(), fd); EXPECT_EQ(file.GetWaitableHandle(), fd); }