add BuildContext class and fix enabled features
Add a BuildContext class to simplify parsing the build context dict, and
fix the parsing of enabledBuildFeatures, which was being parsed as a
list of strings when it's actually a list of dicts like:
[{'name': '<feature_name>'}]
Test: atest build_test_suites_test
Bug: 361605425
Change-Id: I6424c444daf1582e92313c39f43207cb274aa78f
diff --git a/ci/build_test_suites_test.py b/ci/build_test_suites_test.py
index 463bdd0..f3ff6f4 100644
--- a/ci/build_test_suites_test.py
+++ b/ci/build_test_suites_test.py
@@ -32,6 +32,7 @@
from typing import Callable
import unittest
from unittest import mock
+from build_context import BuildContext
import build_test_suites
import ci_test_lib
import optimized_targets
@@ -282,7 +283,7 @@
build_planner = self.create_build_planner(
build_targets=build_targets,
build_context=self.create_build_context(
- enabled_build_features={self.get_target_flag('target_1')}
+ enabled_build_features=[{'name': self.get_target_flag('target_1')}]
),
)
@@ -297,7 +298,7 @@
build_planner = self.create_build_planner(
build_targets=build_targets,
build_context=self.create_build_context(
- enabled_build_features={self.get_target_flag('target_1')},
+ enabled_build_features=[{'name': self.get_target_flag('target_1')}]
),
packaging_outputs=packaging_outputs,
)
@@ -337,7 +338,7 @@
build_targets={build_target},
build_context=self.create_build_context(
test_context=self.get_test_context(build_target),
- enabled_build_features={'test_target_unused_exclusion'},
+ enabled_build_features=[{'name': 'test_target_unused_exclusion'}],
),
)
@@ -356,7 +357,7 @@
build_targets={build_target},
build_context=self.create_build_context(
test_context=test_context,
- enabled_build_features={'test_target_unused_exclusion'},
+ enabled_build_features=[{'name': 'test_target_unused_exclusion'}],
),
)
@@ -372,7 +373,7 @@
build_targets={build_target},
build_context=self.create_build_context(
test_context=test_context,
- enabled_build_features={'test_target_unused_exclusion'},
+ enabled_build_features=[{'name': 'test_target_unused_exclusion'}],
),
)
@@ -391,7 +392,7 @@
build_targets={build_target},
build_context=self.create_build_context(
test_context=test_context,
- enabled_build_features={'test_target_unused_exclusion'},
+ enabled_build_features=[{'name': 'test_target_unused_exclusion'}],
),
)
@@ -402,7 +403,7 @@
def create_build_planner(
self,
build_targets: set[str],
- build_context: dict[str, any] = None,
+ build_context: BuildContext = None,
args: argparse.Namespace = None,
target_optimizations: dict[
str, optimized_targets.OptimizedBuildTarget
@@ -426,15 +427,17 @@
def create_build_context(
self,
optimized_build_enabled: bool = True,
- enabled_build_features: set[str] = set(),
+ enabled_build_features: list[dict[str, str]] = [],
test_context: dict[str, any] = {},
- ) -> dict[str, any]:
- build_context = {}
- build_context['enabledBuildFeatures'] = enabled_build_features
+ ) -> BuildContext:
+ build_context_dict = {}
+ build_context_dict['enabledBuildFeatures'] = enabled_build_features
if optimized_build_enabled:
- build_context['enabledBuildFeatures'].add('optimized_build')
- build_context['testContext'] = test_context
- return build_context
+ build_context_dict['enabledBuildFeatures'].append(
+ {'name': 'optimized_build'}
+ )
+ build_context_dict['testContext'] = test_context
+ return BuildContext(build_context_dict)
def create_args(
self, extra_build_targets: set[str] = set()
@@ -445,7 +448,7 @@
def create_target_optimizations(
self,
- build_context: dict[str, any],
+ build_context: BuildContext,
build_targets: set[str],
packaging_outputs: set[str] = set(),
):