[unittest][DebugInfo/DWARF] Check that dwarfgen::Generator is created

If Generator::create() returns an error, tests should fail gracefully
and report the cause, for example:

[ RUN      ] DebugLineBasicFixture.ParserSkipsCorrectly
.../llvm/unittests/DebugInfo/DWARF/DWARFDebugLineTest.cpp:47: Failure
Value of: llvm::detail::TakeExpected(ExpectedGenerator)
Expected: succeeded
  Actual: failed  (no asm backend for target nvptx64-nvidia-cuda)

Differential Revision: https://reviews.llvm.org/D116106
This commit is contained in:
Igor Kudrin 2021-12-22 18:52:36 +07:00
parent 6e9be9f7c1
commit 5fc05a0a81
1 changed files with 13 additions and 9 deletions

View File

@ -36,16 +36,21 @@ struct CommonFixture {
EXPECT_FALSE(Unrecoverable);
}
bool setupGenerator(uint16_t Version = 4, uint8_t AddrSize = 8) {
// Note: ASSERT_THAT_EXPECTED cannot be used in a non-void function, so
// setupGenerator() is split into two.
void setupGeneratorImpl(uint16_t Version, uint8_t AddrSize) {
AddressSize = AddrSize;
Triple T =
getDefaultTargetTripleForAddrSize(AddressSize == 0 ? 8 : AddressSize);
Triple T = getDefaultTargetTripleForAddrSize(AddressSize ? AddressSize : 8);
if (!isConfigurationSupported(T))
return false;
return;
auto ExpectedGenerator = Generator::create(T, Version);
if (ExpectedGenerator)
Gen.reset(ExpectedGenerator->release());
return true;
ASSERT_THAT_EXPECTED(ExpectedGenerator, Succeeded());
Gen = std::move(*ExpectedGenerator);
}
bool setupGenerator(uint16_t Version = 4, uint8_t AddrSize = 8) {
setupGeneratorImpl(Version, AddrSize);
return Gen != nullptr;
}
void generate() {
@ -60,8 +65,7 @@ struct CommonFixture {
}
std::unique_ptr<DWARFContext> createContext() {
if (!Gen)
return nullptr;
assert(Gen != nullptr && "Generator is not set up");
StringRef FileBytes = Gen->generate();
MemoryBufferRef FileBuffer(FileBytes, "dwarf");
auto Obj = object::ObjectFile::createObjectFile(FileBuffer);