diff --git a/lldb/source/Host/common/File.cpp b/lldb/source/Host/common/File.cpp --- a/lldb/source/Host/common/File.cpp +++ b/lldb/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()) diff --git a/lldb/unittests/Host/CMakeLists.txt b/lldb/unittests/Host/CMakeLists.txt --- a/lldb/unittests/Host/CMakeLists.txt +++ b/lldb/unittests/Host/CMakeLists.txt @@ -11,6 +11,7 @@ SocketTest.cpp SocketTestUtilities.cpp TaskPoolTest.cpp + FileTest.cpp ) if (CMAKE_SYSTEM_NAME MATCHES "Linux|Android") diff --git a/lldb/unittests/Host/FileTest.cpp b/lldb/unittests/Host/FileTest.cpp new file mode 100644 --- /dev/null +++ b/lldb/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); + EXPECT_GE(fd, 0); + + FILE *stream = fdopen(fd, "r"); + EXPECT_TRUE(stream); + + File file(stream, true); + EXPECT_EQ(file.GetWaitableHandle(), fd); +}