1 //===- TestUtilities.h ------------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_UNITTESTS_TESTINGSUPPORT_TESTUTILITIES_H 10 #define LLDB_UNITTESTS_TESTINGSUPPORT_TESTUTILITIES_H 11 12 #include "lldb/Core/ModuleSpec.h" 13 #include "lldb/Utility/DataBuffer.h" 14 #include "llvm/ADT/SmallString.h" 15 #include "llvm/ADT/Twine.h" 16 #include "llvm/Support/Error.h" 17 #include "llvm/Support/FileUtilities.h" 18 #include <string> 19 20 #define ASSERT_NO_ERROR(x) \ 21 if (std::error_code ASSERT_NO_ERROR_ec = x) { \ 22 llvm::SmallString<128> MessageStorage; \ 23 llvm::raw_svector_ostream Message(MessageStorage); \ 24 Message << #x ": did not return errc::success.\n" \ 25 << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n" \ 26 << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n"; \ 27 GTEST_FATAL_FAILURE_(MessageStorage.c_str()); \ 28 } else { \ 29 } 30 31 namespace lldb_private { 32 std::string GetInputFilePath(const llvm::Twine &name); 33 34 class TestFile { 35 public: 36 static llvm::Expected<TestFile> fromYaml(llvm::StringRef Yaml); 37 static llvm::Expected<TestFile> fromYamlFile(const llvm::Twine &Name); 38 moduleSpec()39 ModuleSpec moduleSpec() { 40 return ModuleSpec(FileSpec(), UUID(), dataBuffer()); 41 } 42 43 private: TestFile(std::string && Buffer)44 TestFile(std::string &&Buffer) : Buffer(std::move(Buffer)) {} 45 dataBuffer()46 lldb::DataBufferSP dataBuffer() { 47 auto *Data = reinterpret_cast<const uint8_t *>(Buffer.data()); 48 return std::make_shared<DataBufferUnowned>(const_cast<uint8_t *>(Data), 49 Buffer.size()); 50 } 51 52 std::string Buffer; 53 }; 54 } 55 56 #endif 57