Summary: This patch factors out File as an abstract base class and moves most of its actual functionality into a subclass called NativeFile. In the next patch, I'm going to be adding subclasses of File that don't necessarily have any connection to actual OS files, so they will not inherit from NativeFile. This patch was split out as a prerequisite for https://reviews.llvm.org/D68188 Reviewers: JDevlieghere, jasonmolenda, labath Reviewed By: labath Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D68317 llvm-svn: 373564
58 lines
1.8 KiB
C++
58 lines
1.8 KiB
C++
//===-- 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);
|
|
}
|