Expand Up
@@ -14,20 +14,31 @@
using namespace llvm ;
template <size_t N> void parseGood (const char (&Buf)[N]) {
remarks::Parser Parser (remarks::Format::YAML, {Buf, N - 1 });
Expected<const remarks::Remark *> Remark = Parser.getNext ();
Expected<std::unique_ptr<remarks::Parser>> MaybeParser =
remarks::createRemarkParser (remarks::Format::YAML, {Buf, N - 1 });
EXPECT_FALSE (errorToBool (MaybeParser.takeError ()));
EXPECT_TRUE (*MaybeParser != nullptr );
remarks::Parser &Parser = **MaybeParser;
Expected<std::unique_ptr<remarks::Remark>> Remark = Parser.next ();
EXPECT_FALSE (errorToBool (Remark.takeError ())); // Check for parsing errors.
EXPECT_TRUE (*Remark != nullptr ); // At least one remark.
Remark = Parser.getNext ();
EXPECT_FALSE (errorToBool (Remark.takeError ())); // Check for parsing errors.
EXPECT_TRUE (*Remark == nullptr ); // Check that there are no more remarks.
Remark = Parser.next ();
Error E = Remark.takeError ();
EXPECT_TRUE (E.isA <remarks::EndOfFileError>());
EXPECT_TRUE (errorToBool (std::move (E))); // Check for parsing errors.
}
template <size_t N>
bool parseExpectError (const char (&Buf)[N], const char *Error) {
remarks::Parser Parser (remarks::Format::YAML, {Buf, N - 1 });
Expected<const remarks::Remark *> Remark = Parser.getNext ();
EXPECT_FALSE (Remark); // Expect an error here.
Expected<std::unique_ptr<remarks::Parser>> MaybeParser =
remarks::createRemarkParser (remarks::Format::YAML, {Buf, N - 1 });
EXPECT_FALSE (errorToBool (MaybeParser.takeError ()));
EXPECT_TRUE (*MaybeParser != nullptr );
remarks::Parser &Parser = **MaybeParser;
Expected<std::unique_ptr<remarks::Remark>> Remark = Parser.next ();
EXPECT_FALSE (Remark); // Check for parsing errors.
std::string ErrorStr;
raw_string_ostream Stream (ErrorStr);
Expand All
@@ -42,7 +53,7 @@ TEST(YAMLRemarks, ParsingEmpty) {
TEST (YAMLRemarks, ParsingNotYAML) {
EXPECT_TRUE (
parseExpectError (" \x01\x02\x03\x04\x05\x06 " , " not a valid YAML file. " ));
parseExpectError (" \x01\x02\x03\x04\x05\x06 " , " Got empty plain scalar " ));
}
TEST (YAMLRemarks, ParsingGood) {
Expand Down
Expand Up
@@ -309,17 +320,6 @@ TEST(YAMLRemarks, ParsingWrongArgs) {
" " ,
" only one string entry is allowed per argument." ));
// No arg value.
EXPECT_TRUE (parseExpectError (" \n "
" --- !Missed\n "
" Pass: inline\n "
" Name: NoDefinition\n "
" Function: foo\n "
" Args:\n "
" - Callee: ''\n "
" - DebugLoc: { File: a, Line: 1, Column: 2 }\n "
" " ,
" argument value is missing." ));
// No arg value.
EXPECT_TRUE (parseExpectError (" \n "
" --- !Missed\n "
" Pass: inline\n "
Expand Down
Expand Up
@@ -354,12 +354,18 @@ TEST(YAMLRemarks, Contents) {
" - String: ' because its definition is unavailable'\n "
" \n " ;
remarks::Parser Parser (remarks::Format::YAML, Buf);
Expected<const remarks::Remark *> RemarkOrErr = Parser.getNext ();
EXPECT_FALSE (errorToBool (RemarkOrErr.takeError ()));
EXPECT_TRUE (*RemarkOrErr != nullptr );
Expected<std::unique_ptr<remarks::Parser>> MaybeParser =
remarks::createRemarkParser (remarks::Format::YAML, Buf);
EXPECT_FALSE (errorToBool (MaybeParser.takeError ()));
EXPECT_TRUE (*MaybeParser != nullptr );
remarks::Parser &Parser = **MaybeParser;
Expected<std::unique_ptr<remarks::Remark>> MaybeRemark = Parser.next ();
EXPECT_FALSE (
errorToBool (MaybeRemark.takeError ())); // Check for parsing errors.
EXPECT_TRUE (*MaybeRemark != nullptr ); // At least one remark.
const remarks::Remark &Remark = **RemarkOrErr ;
const remarks::Remark &Remark = **MaybeRemark ;
EXPECT_EQ (Remark.RemarkType , remarks::Type::Missed);
EXPECT_EQ (checkStr (Remark.PassName , 6 ), " inline" );
EXPECT_EQ (checkStr (Remark.RemarkName , 12 ), " NoDefinition" );
Expand Down
Expand Up
@@ -408,9 +414,10 @@ TEST(YAMLRemarks, Contents) {
++ArgID;
}
RemarkOrErr = Parser.getNext ();
EXPECT_FALSE (errorToBool (RemarkOrErr.takeError ()));
EXPECT_EQ (*RemarkOrErr, nullptr );
MaybeRemark = Parser.next ();
Error E = MaybeRemark.takeError ();
EXPECT_TRUE (E.isA <remarks::EndOfFileError>());
EXPECT_TRUE (errorToBool (std::move (E))); // Check for parsing errors.
}
static inline StringRef checkStr (LLVMRemarkStringRef Str,
Expand Down
Expand Up
@@ -487,6 +494,8 @@ TEST(YAMLRemarks, ContentsCAPI) {
++ArgID;
} while ((Arg = LLVMRemarkEntryGetNextArg (Arg, Remark)));
LLVMRemarkEntryDispose (Remark);
EXPECT_EQ (LLVMRemarkParserGetNext (Parser), nullptr );
EXPECT_FALSE (LLVMRemarkParserHasError (Parser));
Expand Down
Expand Up
@@ -516,12 +525,18 @@ TEST(YAMLRemarks, ContentsStrTab) {
115 );
remarks::ParsedStringTable StrTab (StrTabBuf);
remarks::Parser Parser (remarks::Format::YAML, Buf, StrTab);
Expected<const remarks::Remark *> RemarkOrErr = Parser.getNext ();
EXPECT_FALSE (errorToBool (RemarkOrErr.takeError ()));
EXPECT_TRUE (*RemarkOrErr != nullptr );
const remarks::Remark &Remark = **RemarkOrErr;
Expected<std::unique_ptr<remarks::Parser>> MaybeParser =
remarks::createRemarkParser (remarks::Format::YAML, Buf, &StrTab);
EXPECT_FALSE (errorToBool (MaybeParser.takeError ()));
EXPECT_TRUE (*MaybeParser != nullptr );
remarks::Parser &Parser = **MaybeParser;
Expected<std::unique_ptr<remarks::Remark>> MaybeRemark = Parser.next ();
EXPECT_FALSE (
errorToBool (MaybeRemark.takeError ())); // Check for parsing errors.
EXPECT_TRUE (*MaybeRemark != nullptr ); // At least one remark.
const remarks::Remark &Remark = **MaybeRemark;
EXPECT_EQ (Remark.RemarkType , remarks::Type::Missed);
EXPECT_EQ (checkStr (Remark.PassName , 6 ), " inline" );
EXPECT_EQ (checkStr (Remark.RemarkName , 12 ), " NoDefinition" );
Expand Down
Expand Up
@@ -570,9 +585,10 @@ TEST(YAMLRemarks, ContentsStrTab) {
++ArgID;
}
RemarkOrErr = Parser.getNext ();
EXPECT_FALSE (errorToBool (RemarkOrErr.takeError ()));
EXPECT_EQ (*RemarkOrErr, nullptr );
MaybeRemark = Parser.next ();
Error E = MaybeRemark.takeError ();
EXPECT_TRUE (E.isA <remarks::EndOfFileError>());
EXPECT_TRUE (errorToBool (std::move (E))); // Check for parsing errors.
}
TEST (YAMLRemarks, ParsingBadStringTableIndex) {
Expand All
@@ -584,13 +600,18 @@ TEST(YAMLRemarks, ParsingBadStringTableIndex) {
StringRef StrTabBuf = StringRef (" inline" );
remarks::ParsedStringTable StrTab (StrTabBuf);
remarks::Parser Parser (remarks::Format::YAML, Buf, StrTab);
Expected<const remarks::Remark *> Remark = Parser.getNext ();
EXPECT_FALSE (Remark); // Expect an error here.
Expected<std::unique_ptr<remarks::Parser>> MaybeParser =
remarks::createRemarkParser (remarks::Format::YAML, Buf, &StrTab);
EXPECT_FALSE (errorToBool (MaybeParser.takeError ()));
EXPECT_TRUE (*MaybeParser != nullptr );
remarks::Parser &Parser = **MaybeParser;
Expected<std::unique_ptr<remarks::Remark>> MaybeRemark = Parser.next ();
EXPECT_FALSE (MaybeRemark); // Expect an error here.
std::string ErrorStr;
raw_string_ostream Stream (ErrorStr);
handleAllErrors (Remark .takeError (),
handleAllErrors (MaybeRemark .takeError (),
[&](const ErrorInfoBase &EIB) { EIB.log (Stream); });
EXPECT_TRUE (
StringRef (Stream.str ())
Expand Down