diff --git a/src/tests/api/internals/main.cpp b/src/tests/api/internals/main.cpp index c2ae9e9e..64007d34 100644 --- a/src/tests/api/internals/main.cpp +++ b/src/tests/api/internals/main.cpp @@ -66,6 +66,12 @@ TEST(ModuloOperator, shouldConformToTheCpp11Standard) { EXPECT_EQ(-2, -9 % -7); } +TEST(YamlCpp, shouldSupportMergeKeys) { + YAML::Node node = YAML::Load("{<<: {a: 1}}"); + ASSERT_TRUE(node["a"]); + EXPECT_EQ(1, node["a"].as()); +} + int main(int argc, char **argv) { // Set the locale to get encoding conversions working correctly. std::locale::global(boost::locale::generator().generate("")); diff --git a/src/tests/api/internals/metadata_list_test.h b/src/tests/api/internals/metadata_list_test.h index 73bf5938..2da0e339 100644 --- a/src/tests/api/internals/metadata_list_test.h +++ b/src/tests/api/internals/metadata_list_test.h @@ -142,6 +142,33 @@ TEST_P(MetadataListTest, loadShouldLoadGroups) { groups.find(Group("group2"))->GetAfterGroups()); } +TEST_P(MetadataListTest, loadYamlParsingShouldSupportMergeKeys) { + using std::endl; + + boost::filesystem::ofstream out(metadataPath); + out << "common:" << endl + << " - &earlier" << endl + << " name: earlier" << endl + << " after:" << endl + << " - earliest" << endl + << "groups:" << endl + << " - name: default" << endl + << " <<: *earlier" << endl; + + out.close(); + + MetadataList metadataList; + ASSERT_NO_THROW(metadataList.Load(metadataPath)); + + auto groups = metadataList.Groups(); + + EXPECT_EQ(1, groups.size()); + + EXPECT_EQ(1, groups.count(Group("default"))); + EXPECT_EQ(std::unordered_set({ "earliest" }), + groups.find(Group("default"))->GetAfterGroups()); +} + TEST_P(MetadataListTest, loadShouldThrowIfAnInvalidMetadataFileIsGiven) { MetadataList ml; for (const auto& path : invalidMetadataPaths) {