| //===-- FileTest.cpp --------------------------------------------*- C++ -*-===// | |
| // | |
| // 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); | |
| } |