Index: lldb/trunk/source/Host/common/File.cpp =================================================================== --- lldb/trunk/source/Host/common/File.cpp +++ lldb/trunk/source/Host/common/File.cpp @@ -91,7 +91,7 @@ return kInvalidDescriptor; } -IOObject::WaitableHandle File::GetWaitableHandle() { return m_descriptor; } +IOObject::WaitableHandle File::GetWaitableHandle() { return GetDescriptor(); } void File::SetDescriptor(int fd, bool transfer_ownership) { if (IsValid()) Index: lldb/trunk/unittests/Host/CMakeLists.txt =================================================================== --- lldb/trunk/unittests/Host/CMakeLists.txt +++ lldb/trunk/unittests/Host/CMakeLists.txt @@ -2,6 +2,7 @@ ConnectionFileDescriptorTest.cpp FileActionTest.cpp FileSystemTest.cpp + FileTest.cpp HostInfoTest.cpp HostTest.cpp MainLoopTest.cpp Index: lldb/trunk/unittests/Host/FileTest.cpp =================================================================== --- lldb/trunk/unittests/Host/FileTest.cpp +++ lldb/trunk/unittests/Host/FileTest.cpp @@ -0,0 +1,36 @@ +//===-- 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); + + File file(stream, true); + EXPECT_EQ(file.GetWaitableHandle(), fd); +}