summaryrefslogtreecommitdiff
path: root/test/buildtool/build_engine
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2025-03-27 12:18:29 +0100
committerKlaus Aehlig <klaus.aehlig@huawei.com>2025-04-07 17:38:59 +0200
commit1c3bd480c99afafcaaf4662eef9b93d81f639c6e (patch)
treee4622735de63cf34fb23b0e9b0fbaec5c27d54ee /test/buildtool/build_engine
parent05d785ae46b6fcb898964f35a694554af33c449e (diff)
downloadjustbuild-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/TARGETS4
-rw-r--r--test/buildtool/build_engine/target_map/target_map.test.cpp63
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]") {