summaryrefslogtreecommitdiff
path: root/test/buildtool/build_engine/target_map/target_map.test.cpp
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-11-24 11:31:42 +0100
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-11-27 15:03:20 +0100
commitcf04253130030bc28866d10aa1f8fe1353643d42 (patch)
treeef7049624771866455105a8dab7b001840139701 /test/buildtool/build_engine/target_map/target_map.test.cpp
parentbc09302c2772c979c45ecc716c36e4a70bb484ac (diff)
downloadjustbuild-cf04253130030bc28866d10aa1f8fe1353643d42.tar.gz
Refactoring RepositoryConfig
With the introduction of 'just serve', export targets can now be built also independently from one another based on their corresponding minimal repository configuration, as stored in the target cache key. In this context, this commit changes the RepositoryConfig usage from one global (static) instance to pointers passed as necessary throughout the code.
Diffstat (limited to 'test/buildtool/build_engine/target_map/target_map.test.cpp')
-rw-r--r--test/buildtool/build_engine/target_map/target_map.test.cpp215
1 files changed, 132 insertions, 83 deletions
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 d9144dfb..14701f6c 100644
--- a/test/buildtool/build_engine/target_map/target_map.test.cpp
+++ b/test/buildtool/build_engine/target_map/target_map.test.cpp
@@ -44,7 +44,7 @@ auto CreateSymlinks() -> bool {
return true;
}
-void SetupConfig() {
+auto SetupConfig() -> RepositoryConfig {
// manually create locally test symlinks in data_src, but only once
[[maybe_unused]] static auto done = CreateSymlinks();
// create the file roots
@@ -57,31 +57,38 @@ void SetupConfig() {
"data_rules"}},
FileRoot{std::filesystem::path{"test/buildtool/build_engine/target_map/"
"data_expr"}}};
- RepositoryConfig::Instance().Reset();
- RepositoryConfig::Instance().SetInfo("", std::move(info));
+ RepositoryConfig repo_config{};
+ repo_config.SetInfo("", std::move(info));
+ return repo_config;
}
} // namespace
TEST_CASE("simple targets") {
- SetupConfig();
- auto directory_entries = BuildMaps::Base::CreateDirectoryEntriesMap();
- auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries);
- auto targets_file_map = BuildMaps::Base::CreateTargetsFileMap(0);
- auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(0);
+ auto repo_config = SetupConfig();
+ auto directory_entries =
+ BuildMaps::Base::CreateDirectoryEntriesMap(&repo_config);
+ auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries,
+ &repo_config);
+ auto targets_file_map =
+ BuildMaps::Base::CreateTargetsFileMap(&repo_config, 0);
+ auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(&repo_config, 0);
static auto expressions_file_map =
- BuildMaps::Base::CreateExpressionFileMap(0);
- auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map);
- auto rule_map = BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map);
+ BuildMaps::Base::CreateExpressionFileMap(&repo_config, 0);
+ auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map,
+ &repo_config);
+ auto rule_map =
+ BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map, &repo_config);
BuildMaps::Target::ResultTargetMap result_map{0};
auto absent_target_map =
- BuildMaps::Target::CreateAbsentTargetMap(&result_map, 0);
+ BuildMaps::Target::CreateAbsentTargetMap(&result_map, &repo_config, 0);
auto target_map = BuildMaps::Target::CreateTargetMap(&source,
&targets_file_map,
&rule_map,
&directory_entries,
&absent_target_map,
- &result_map);
+ &result_map,
+ &repo_config);
AnalysedTargetPtr result;
bool error{false};
@@ -403,24 +410,30 @@ TEST_CASE("simple targets") {
}
TEST_CASE("configuration deduplication") {
- SetupConfig();
- auto directory_entries = BuildMaps::Base::CreateDirectoryEntriesMap();
- auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries);
- auto targets_file_map = BuildMaps::Base::CreateTargetsFileMap(0);
- auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(0);
+ auto repo_config = SetupConfig();
+ auto directory_entries =
+ BuildMaps::Base::CreateDirectoryEntriesMap(&repo_config);
+ auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries,
+ &repo_config);
+ auto targets_file_map =
+ BuildMaps::Base::CreateTargetsFileMap(&repo_config, 0);
+ auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(&repo_config, 0);
static auto expressions_file_map =
- BuildMaps::Base::CreateExpressionFileMap(0);
- auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map);
- auto rule_map = BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map);
+ BuildMaps::Base::CreateExpressionFileMap(&repo_config, 0);
+ auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map,
+ &repo_config);
+ auto rule_map =
+ BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map, &repo_config);
BuildMaps::Target::ResultTargetMap result_map{0};
auto absent_target_map =
- BuildMaps::Target::CreateAbsentTargetMap(&result_map, 0);
+ BuildMaps::Target::CreateAbsentTargetMap(&result_map, &repo_config, 0);
auto target_map = BuildMaps::Target::CreateTargetMap(&source,
&targets_file_map,
&rule_map,
&directory_entries,
&absent_target_map,
- &result_map);
+ &result_map,
+ &repo_config);
std::vector<AnalysedTargetPtr> result;
bool error{false};
@@ -464,24 +477,30 @@ TEST_CASE("configuration deduplication") {
}
TEST_CASE("generator functions in string arguments") {
- SetupConfig();
- auto directory_entries = BuildMaps::Base::CreateDirectoryEntriesMap();
- auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries);
- auto targets_file_map = BuildMaps::Base::CreateTargetsFileMap(0);
- auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(0);
+ auto repo_config = SetupConfig();
+ auto directory_entries =
+ BuildMaps::Base::CreateDirectoryEntriesMap(&repo_config);
+ auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries,
+ &repo_config);
+ auto targets_file_map =
+ BuildMaps::Base::CreateTargetsFileMap(&repo_config, 0);
+ auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(&repo_config, 0);
static auto expressions_file_map =
- BuildMaps::Base::CreateExpressionFileMap(0);
- auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map);
- auto rule_map = BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map);
+ BuildMaps::Base::CreateExpressionFileMap(&repo_config, 0);
+ auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map,
+ &repo_config);
+ auto rule_map =
+ BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map, &repo_config);
BuildMaps::Target::ResultTargetMap result_map{0};
auto absent_target_map =
- BuildMaps::Target::CreateAbsentTargetMap(&result_map, 0);
+ BuildMaps::Target::CreateAbsentTargetMap(&result_map, &repo_config, 0);
auto target_map = BuildMaps::Target::CreateTargetMap(&source,
&targets_file_map,
&rule_map,
&directory_entries,
&absent_target_map,
- &result_map);
+ &result_map,
+ &repo_config);
AnalysedTargetPtr result;
bool error{false};
@@ -538,24 +557,30 @@ TEST_CASE("generator functions in string arguments") {
}
TEST_CASE("built-in rules") {
- SetupConfig();
- auto directory_entries = BuildMaps::Base::CreateDirectoryEntriesMap();
- auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries);
- auto targets_file_map = BuildMaps::Base::CreateTargetsFileMap(0);
- auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(0);
+ auto repo_config = SetupConfig();
+ auto directory_entries =
+ BuildMaps::Base::CreateDirectoryEntriesMap(&repo_config);
+ auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries,
+ &repo_config);
+ auto targets_file_map =
+ BuildMaps::Base::CreateTargetsFileMap(&repo_config, 0);
+ auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(&repo_config, 0);
static auto expressions_file_map =
- BuildMaps::Base::CreateExpressionFileMap(0);
- auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map);
- auto rule_map = BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map);
+ BuildMaps::Base::CreateExpressionFileMap(&repo_config, 0);
+ auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map,
+ &repo_config);
+ auto rule_map =
+ BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map, &repo_config);
BuildMaps::Target::ResultTargetMap result_map{0};
auto absent_target_map =
- BuildMaps::Target::CreateAbsentTargetMap(&result_map, 0);
+ BuildMaps::Target::CreateAbsentTargetMap(&result_map, &repo_config, 0);
auto target_map = BuildMaps::Target::CreateTargetMap(&source,
&targets_file_map,
&rule_map,
&directory_entries,
&absent_target_map,
- &result_map);
+ &result_map,
+ &repo_config);
AnalysedTargetPtr result;
bool error{false};
std::string error_msg;
@@ -722,24 +747,30 @@ TEST_CASE("built-in rules") {
}
TEST_CASE("target reference") {
- SetupConfig();
- auto directory_entries = BuildMaps::Base::CreateDirectoryEntriesMap();
- auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries);
- auto targets_file_map = BuildMaps::Base::CreateTargetsFileMap(0);
- auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(0);
+ auto repo_config = SetupConfig();
+ auto directory_entries =
+ BuildMaps::Base::CreateDirectoryEntriesMap(&repo_config);
+ auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries,
+ &repo_config);
+ auto targets_file_map =
+ BuildMaps::Base::CreateTargetsFileMap(&repo_config, 0);
+ auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(&repo_config, 0);
static auto expressions_file_map =
- BuildMaps::Base::CreateExpressionFileMap(0);
- auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map);
- auto rule_map = BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map);
+ BuildMaps::Base::CreateExpressionFileMap(&repo_config, 0);
+ auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map,
+ &repo_config);
+ auto rule_map =
+ BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map, &repo_config);
BuildMaps::Target::ResultTargetMap result_map{0};
auto absent_target_map =
- BuildMaps::Target::CreateAbsentTargetMap(&result_map, 0);
+ BuildMaps::Target::CreateAbsentTargetMap(&result_map, &repo_config, 0);
auto target_map = BuildMaps::Target::CreateTargetMap(&source,
&targets_file_map,
&rule_map,
&directory_entries,
&absent_target_map,
- &result_map);
+ &result_map,
+ &repo_config);
AnalysedTargetPtr result;
bool error{false};
@@ -839,24 +870,30 @@ TEST_CASE("target reference") {
}
TEST_CASE("trees") {
- SetupConfig();
- auto directory_entries = BuildMaps::Base::CreateDirectoryEntriesMap();
- auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries);
- auto targets_file_map = BuildMaps::Base::CreateTargetsFileMap(0);
- auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(0);
+ auto repo_config = SetupConfig();
+ auto directory_entries =
+ BuildMaps::Base::CreateDirectoryEntriesMap(&repo_config);
+ auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries,
+ &repo_config);
+ auto targets_file_map =
+ BuildMaps::Base::CreateTargetsFileMap(&repo_config, 0);
+ auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(&repo_config, 0);
static auto expressions_file_map =
- BuildMaps::Base::CreateExpressionFileMap(0);
- auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map);
- auto rule_map = BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map);
+ BuildMaps::Base::CreateExpressionFileMap(&repo_config, 0);
+ auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map,
+ &repo_config);
+ auto rule_map =
+ BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map, &repo_config);
BuildMaps::Target::ResultTargetMap result_map{0};
auto absent_target_map =
- BuildMaps::Target::CreateAbsentTargetMap(&result_map, 0);
+ BuildMaps::Target::CreateAbsentTargetMap(&result_map, &repo_config, 0);
auto target_map = BuildMaps::Target::CreateTargetMap(&source,
&targets_file_map,
&rule_map,
&directory_entries,
&absent_target_map,
- &result_map);
+ &result_map,
+ &repo_config);
AnalysedTargetPtr result;
bool error{false};
@@ -920,24 +957,30 @@ TEST_CASE("trees") {
}
TEST_CASE("RESULT error reporting") {
- SetupConfig();
- auto directory_entries = BuildMaps::Base::CreateDirectoryEntriesMap();
- auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries);
- auto targets_file_map = BuildMaps::Base::CreateTargetsFileMap(0);
- auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(0);
+ auto repo_config = SetupConfig();
+ auto directory_entries =
+ BuildMaps::Base::CreateDirectoryEntriesMap(&repo_config);
+ auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries,
+ &repo_config);
+ auto targets_file_map =
+ BuildMaps::Base::CreateTargetsFileMap(&repo_config, 0);
+ auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(&repo_config, 0);
static auto expressions_file_map =
- BuildMaps::Base::CreateExpressionFileMap(0);
- auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map);
- auto rule_map = BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map);
+ BuildMaps::Base::CreateExpressionFileMap(&repo_config, 0);
+ auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map,
+ &repo_config);
+ auto rule_map =
+ BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map, &repo_config);
BuildMaps::Target::ResultTargetMap result_map{0};
auto absent_target_map =
- BuildMaps::Target::CreateAbsentTargetMap(&result_map, 0);
+ BuildMaps::Target::CreateAbsentTargetMap(&result_map, &repo_config, 0);
auto target_map = BuildMaps::Target::CreateTargetMap(&source,
&targets_file_map,
&rule_map,
&directory_entries,
&absent_target_map,
- &result_map);
+ &result_map,
+ &repo_config);
AnalysedTargetPtr result;
bool error{false};
@@ -1060,24 +1103,30 @@ TEST_CASE("RESULT error reporting") {
}
TEST_CASE("wrong arguments") {
- SetupConfig();
- auto directory_entries = BuildMaps::Base::CreateDirectoryEntriesMap();
- auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries);
- auto targets_file_map = BuildMaps::Base::CreateTargetsFileMap(0);
- auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(0);
+ auto repo_config = SetupConfig();
+ auto directory_entries =
+ BuildMaps::Base::CreateDirectoryEntriesMap(&repo_config);
+ auto source = BuildMaps::Base::CreateSourceTargetMap(&directory_entries,
+ &repo_config);
+ auto targets_file_map =
+ BuildMaps::Base::CreateTargetsFileMap(&repo_config, 0);
+ auto rule_file_map = BuildMaps::Base::CreateRuleFileMap(&repo_config, 0);
static auto expressions_file_map =
- BuildMaps::Base::CreateExpressionFileMap(0);
- auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map);
- auto rule_map = BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map);
+ BuildMaps::Base::CreateExpressionFileMap(&repo_config, 0);
+ auto expr_map = BuildMaps::Base::CreateExpressionMap(&expressions_file_map,
+ &repo_config);
+ auto rule_map =
+ BuildMaps::Base::CreateRuleMap(&rule_file_map, &expr_map, &repo_config);
BuildMaps::Target::ResultTargetMap result_map{0};
auto absent_target_map =
- BuildMaps::Target::CreateAbsentTargetMap(&result_map, 0);
+ BuildMaps::Target::CreateAbsentTargetMap(&result_map, &repo_config, 0);
auto target_map = BuildMaps::Target::CreateTargetMap(&source,
&targets_file_map,
&rule_map,
&directory_entries,
&absent_target_map,
- &result_map);
+ &result_map,
+ &repo_config);
AnalysedTargetPtr result;
bool error{false};