blob: c6ad9e2f380d7760d5dd8389dcbcfbea9c25fdd5 [file]
# Copyright 2020 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
"""Test API for enviroment."""
from __future__ import annotations
from collections.abc import Mapping, Sequence
from recipe_engine import recipe_test_api
from PB.recipe_modules.pigweed.environment import options as env_options
class EnvironmentTestApi(recipe_test_api.RecipeTestApi):
"""Test API for Enviroment."""
def properties(
self,
*,
name: str = 'environment_options',
config_file: str = 'config_file.json',
relative_pigweed_root: str = 'pigweed',
skip_submodule_check: bool = False,
additional_variables: Mapping[str, str] | None = None,
additional_cipd_files: Sequence[str] | None = None,
allow_doctor_to_fail: bool = False,
) -> recipe_test_api.StepTestData:
opts = env_options.Options()
opts.config_file = config_file
opts.relative_pigweed_root = relative_pigweed_root
opts.skip_submodule_check = skip_submodule_check
for key, value in (additional_variables or {}).items():
opts.additional_variables[key] = str(value)
opts.additional_cipd_files.extend(additional_cipd_files or ())
opts.allow_doctor_to_fail = allow_doctor_to_fail
return self.m.properties(**{name: opts})
def override_clang(
self,
cas_digest: str | None = None,
cipd_version: str | None = None,
) -> recipe_test_api.StepTestData:
assert bool(cas_digest) != bool(cipd_version), (
'exactly one of cas_digest or cipd_version is required'
)
tc = {}
if cas_digest:
tc['cas_digest'] = cas_digest
if cipd_version:
tc['cipd_version'] = cipd_version
props = {
'$fuchsia/checkout': {'clang_toolchain': tc},
}
return self.m.properties(**props)