1*a7d186c7SJonas Devlieghere //===-- FileTest.cpp --------------------------------------------*- C++ -*-===//
2*a7d186c7SJonas Devlieghere //
3*a7d186c7SJonas Devlieghere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*a7d186c7SJonas Devlieghere // See https://llvm.org/LICENSE.txt for license information.
5*a7d186c7SJonas Devlieghere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*a7d186c7SJonas Devlieghere //
7*a7d186c7SJonas Devlieghere //===----------------------------------------------------------------------===//
8*a7d186c7SJonas Devlieghere 
9*a7d186c7SJonas Devlieghere #include "lldb/Host/File.h"
10*a7d186c7SJonas Devlieghere #include "llvm/ADT/SmallString.h"
11*a7d186c7SJonas Devlieghere #include "llvm/Support/FileSystem.h"
12*a7d186c7SJonas Devlieghere #include "llvm/Support/FileUtilities.h"
13*a7d186c7SJonas Devlieghere #include "llvm/Support/Path.h"
14*a7d186c7SJonas Devlieghere #include "llvm/Support/Program.h"
15*a7d186c7SJonas Devlieghere #include "gtest/gtest.h"
16*a7d186c7SJonas Devlieghere 
17*a7d186c7SJonas Devlieghere using namespace lldb;
18*a7d186c7SJonas Devlieghere using namespace lldb_private;
19*a7d186c7SJonas Devlieghere 
20*a7d186c7SJonas Devlieghere TEST(File, GetWaitableHandleFileno) {
21*a7d186c7SJonas Devlieghere   const auto *Info = testing::UnitTest::GetInstance()->current_test_info();
22*a7d186c7SJonas Devlieghere 
23*a7d186c7SJonas Devlieghere   llvm::SmallString<128> name;
24*a7d186c7SJonas Devlieghere   int fd;
25*a7d186c7SJonas Devlieghere   llvm::sys::fs::createTemporaryFile(llvm::Twine(Info->test_case_name()) + "-" +
26*a7d186c7SJonas Devlieghere                                          Info->name(),
27*a7d186c7SJonas Devlieghere                                      "test", fd, name);
28*a7d186c7SJonas Devlieghere   llvm::FileRemover remover(name);
29*a7d186c7SJonas Devlieghere   ASSERT_GE(fd, 0);
30*a7d186c7SJonas Devlieghere 
31*a7d186c7SJonas Devlieghere   FILE *stream = fdopen(fd, "r");
32*a7d186c7SJonas Devlieghere   ASSERT_TRUE(stream);
33*a7d186c7SJonas Devlieghere 
34*a7d186c7SJonas Devlieghere   File file(stream, true);
35*a7d186c7SJonas Devlieghere   EXPECT_EQ(file.GetWaitableHandle(), fd);
36*a7d186c7SJonas Devlieghere }
37