forked from OSchip/llvm-project
[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:
parent
6e9be9f7c1
commit
5fc05a0a81
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue