mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-08 12:21:17 +00:00
fix(src,include,test): fixed multiple cases where a bad yaml was accepted.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
This commit is contained in:

committed by
Jesse Beder

parent
47cd2725d6
commit
1f2b841949
@@ -334,6 +334,69 @@ TEST(NodeTest, LoadQuotedNull) {
|
||||
EXPECT_EQ(node.as<std::string>(), "null");
|
||||
}
|
||||
|
||||
TEST(NodeTest, LoadNonClosedQuotedString) {
|
||||
EXPECT_THROW(Load(R"("foo)"), ParserException);
|
||||
}
|
||||
|
||||
TEST(NodeTest, LoadWrongQuotedString) {
|
||||
EXPECT_THROW(Load(R"("foo" [)"), ParserException);
|
||||
EXPECT_THROW(Load(R"("foo", [)"), ParserException);
|
||||
}
|
||||
|
||||
TEST(NodeTest, LoadUnquotedQuotedStrings) {
|
||||
Node node = Load(R"(foo,"bar")");
|
||||
EXPECT_EQ(node.as<std::string>(), "foo,\"bar\"");
|
||||
|
||||
node = Load(R"(foo,bar)");
|
||||
EXPECT_EQ(node.as<std::string>(), "foo,bar");
|
||||
|
||||
node = Load(R"(foo,)");
|
||||
EXPECT_EQ(node.as<std::string>(), "foo,");
|
||||
|
||||
node = Load(R"(foo "bar")");
|
||||
EXPECT_EQ(node.as<std::string>(), "foo \"bar\"");
|
||||
}
|
||||
|
||||
TEST(NodeTest, LoadCommaSeparatedStrings) {
|
||||
EXPECT_THROW(Load(R"("foo","bar")"), ParserException);
|
||||
EXPECT_THROW(Load(R"("foo",bar)"), ParserException);
|
||||
EXPECT_THROW(Load(R"(,)"), ParserException);
|
||||
EXPECT_THROW(Load(R"("foo",)"), ParserException);
|
||||
EXPECT_THROW(Load(R"("foo","")"), ParserException);
|
||||
EXPECT_THROW(Load(R"("foo",)"), ParserException);
|
||||
EXPECT_THROW(Load(R"(,"foo")"), ParserException);
|
||||
EXPECT_THROW(Load(R"(,foo)"), ParserException);
|
||||
|
||||
const char *doc_ok = R"(
|
||||
top
|
||||
, aa
|
||||
)";
|
||||
EXPECT_NO_THROW(Load(doc_ok));
|
||||
|
||||
const char *doc_ok_2 = R"(
|
||||
top
|
||||
, "aa"
|
||||
)";
|
||||
EXPECT_NO_THROW(Load(doc_ok_2));
|
||||
|
||||
const char *doc_fail = R"(
|
||||
"top"
|
||||
, "aa"
|
||||
)";
|
||||
EXPECT_THROW(Load(doc_fail), ParserException);
|
||||
|
||||
const char *doc_fail_2 = R"(
|
||||
"top"
|
||||
, aa
|
||||
)";
|
||||
EXPECT_THROW(Load(doc_fail_2), ParserException);
|
||||
}
|
||||
|
||||
TEST(NodeTest, LoadSameLineStrings) {
|
||||
EXPECT_THROW(Load(R"("foo" "bar")"), ParserException);
|
||||
EXPECT_THROW(Load(R"("foo" bar)"), ParserException);
|
||||
}
|
||||
|
||||
TEST(NodeTest, LoadTagWithParenthesis) {
|
||||
Node node = Load("!Complex(Tag) foo");
|
||||
EXPECT_EQ(node.Tag(), "!Complex(Tag)");
|
||||
|
Reference in New Issue
Block a user