[lldb][Test] Propagate llvm::yaml error message in TestFile::fromYaml

Currently the test-suite would swallow the error message
on `llvm::yaml::convertYAML` failures.

This patch simply propagates the error string up to the caller.

Before patch:
```
[ RUN      ] DWARFASTParserClangTests.TestDefaultTemplateParamParsing
/Users/michaelbuch/Git/llvm-worktrees/playground/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.cpp:19: Failure
Value of: llvm::detail::TakeExpected(File)
Expected: succeeded
  Actual: failed  (convertYAML() failed: )
Assertion failed: (!HasError && "Cannot get value when an error exists!"), function getStorage, file Error.h, line 671.
```

After patch:
```
[ RUN      ] DWARFASTParserClangTests.TestDefaultTemplateParamParsing
/Users/michaelbuch/Git/llvm-worktrees/playground/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.cpp:19: Failure
Value of: llvm::detail::TakeExpected(File)
Expected: succeeded
  Actual: failed  (convertYAML() failed: wrote too much data somewhere, section offsets don't line up)
Assertion failed: (!HasError && "Cannot get value when an error exists!"), function getStorage, file Error.h, line 671.
```

Differential Revision: https://reviews.llvm.org/D140112
This commit is contained in:
Michael Buch 2022-12-15 16:26:20 +00:00
parent a1b4e13cff
commit c46587bb83

View File

@ -30,9 +30,11 @@ llvm::Expected<TestFile> TestFile::fromYaml(llvm::StringRef Yaml) {
std::string Buffer;
llvm::raw_string_ostream OS(Buffer);
llvm::yaml::Input YIn(Yaml);
if (!llvm::yaml::convertYAML(YIn, OS, [](const llvm::Twine &Msg) {}))
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"convertYAML() failed");
std::string ErrorMsg("convertYAML() failed: ");
if (!llvm::yaml::convertYAML(YIn, OS, [&ErrorMsg](const llvm::Twine &Msg) {
ErrorMsg += Msg.str();
}))
return llvm::createStringError(llvm::inconvertibleErrorCode(), ErrorMsg);
return TestFile(std::move(Buffer));
}