diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2025-03-27 12:18:29 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2025-04-07 17:38:59 +0200 |
commit | 1c3bd480c99afafcaaf4662eef9b93d81f639c6e (patch) | |
tree | e4622735de63cf34fb23b0e9b0fbaec5c27d54ee /test/buildtool/build_engine | |
parent | 05d785ae46b6fcb898964f35a694554af33c449e (diff) | |
download | justbuild-1c3bd480c99afafcaaf4662eef9b93d81f639c6e.tar.gz |
Add built-in rules {disjoint_,}tree_overlay
Diffstat (limited to 'test/buildtool/build_engine')
-rw-r--r-- | test/buildtool/build_engine/target_map/data_targets/tree_overlay/TARGETS | 4 | ||||
-rw-r--r-- | test/buildtool/build_engine/target_map/target_map.test.cpp | 63 |
2 files changed, 67 insertions, 0 deletions
diff --git a/test/buildtool/build_engine/target_map/data_targets/tree_overlay/TARGETS b/test/buildtool/build_engine/target_map/data_targets/tree_overlay/TARGETS index 088d47de..5c5dd8bf 100644 --- a/test/buildtool/build_engine/target_map/data_targets/tree_overlay/TARGETS +++ b/test/buildtool/build_engine/target_map/data_targets/tree_overlay/TARGETS @@ -3,4 +3,8 @@ , "disjoint empty": {"type": ["tree_overlay", "disjoint overlay"]} , "disjoint one stage": {"type": ["tree_overlay", "disjoint overlay"], "deps": ["x"]} +, "built-in, one stage": + {"type": "tree_overlay", "name": "the_tree", "deps": ["x"]} +, "built-in, disjoint, one stage": + {"type": "disjoint_tree_overlay", "name": "the_tree", "deps": ["x"]} } diff --git a/test/buildtool/build_engine/target_map/target_map.test.cpp b/test/buildtool/build_engine/target_map/target_map.test.cpp index 0b51355b..308e8325 100644 --- a/test/buildtool/build_engine/target_map/target_map.test.cpp +++ b/test/buildtool/build_engine/target_map/target_map.test.cpp @@ -1201,6 +1201,69 @@ TEST_CASE("built-in rules", "[target_map]") { baz_result->Artifacts()->ToJson()["foo.txt."]["data"]["id"] == storage_config.Get().hash_function.HashBlobData("baz").HexString()); } + + SECTION("tree_overlay") { + error = false; + error_msg = "NONE"; + { + TaskSystem ts; + target_map.ConsumeAfterKeysReady( + &ts, + {BuildMaps::Target::ConfiguredTarget{ + .target = + BuildMaps::Base::EntityName{ + "", "tree_overlay", "built-in, one stage"}, + .config = empty_config}}, + [&result](auto values) { result = *values[0]; }, + [&error, &error_msg](std::string const& msg, bool /*unused*/) { + error = true; + error_msg = msg; + }); + } + CHECK(not error); + CHECK(error_msg == "NONE"); + CHECK(result->Artifacts()->ToJson()["the_tree"]["type"] == + "TREE_OVERLAY"); + CHECK(result->Trees().size() == 1); + CHECK(result->Trees()[0]->ToJson()["x"]["type"] == "LOCAL"); + CHECK(result->TreeOverlays().size() == 1); + CHECK(result->TreeOverlays()[0]->ToJson()["trees"].size() == 1); + CHECK(result->TreeOverlays()[0]->ToJson()["trees"][0]["type"] == + "TREE"); + CHECK(result->TreeOverlays()[0]->ToJson()["disjoint"] == false); + } + + SECTION("disjoint_tree_overlay") { + error = false; + error_msg = "NONE"; + { + TaskSystem ts; + target_map.ConsumeAfterKeysReady( + &ts, + {BuildMaps::Target::ConfiguredTarget{ + .target = BuildMaps::Base::EntityName{"", + "tree_overlay", + "built-in, disjoint, " + "one stage"}, + .config = empty_config}}, + [&result](auto values) { result = *values[0]; }, + [&error, &error_msg](std::string const& msg, bool /*unused*/) { + error = true; + error_msg = msg; + }); + } + CHECK(not error); + CHECK(error_msg == "NONE"); + CHECK(result->Artifacts()->ToJson()["the_tree"]["type"] == + "TREE_OVERLAY"); + CHECK(result->Trees().size() == 1); + CHECK(result->Trees()[0]->ToJson()["x"]["type"] == "LOCAL"); + CHECK(result->TreeOverlays().size() == 1); + CHECK(result->TreeOverlays()[0]->ToJson()["trees"].size() == 1); + CHECK(result->TreeOverlays()[0]->ToJson()["trees"][0]["type"] == + "TREE"); + CHECK(result->TreeOverlays()[0]->ToJson()["disjoint"] == true); + } } TEST_CASE("target reference", "[target_map]") { |