Fix test framework running against real devices (#1235)

This commit is contained in:
Steven B.
2024-11-11 17:41:31 +00:00
committed by GitHub
parent 32671da9e9
commit 71ae06fa83
18 changed files with 158 additions and 43 deletions

View File

@@ -104,8 +104,10 @@ def filter_fixtures(
data_root_filter: str | None = None,
protocol_filter: set[str] | None = None,
model_filter: set[str] | None = None,
model_startswith_filter: str | None = None,
component_filter: str | ComponentFilter | None = None,
device_type_filter: Iterable[DeviceType] | None = None,
fixture_list: list[FixtureInfo] = FIXTURE_DATA,
):
"""Filter the fixtures based on supplied parameters.
@@ -127,12 +129,15 @@ def filter_fixtures(
and (model := model_filter_list[0])
and len(model.split("_")) == 3
):
# return exact match
# filter string includes hw and fw, return exact match
return fixture_data.name == f"{model}.json"
file_model_region = fixture_data.name.split("_")[0]
file_model = file_model_region.split("(")[0]
return file_model in model_filter
def _model_startswith_match(fixture_data: FixtureInfo, starts_with: str):
return fixture_data.name.startswith(starts_with)
def _component_match(
fixture_data: FixtureInfo, component_filter: str | ComponentFilter
):
@@ -175,13 +180,17 @@ def filter_fixtures(
filtered = []
if protocol_filter is None:
protocol_filter = {"IOT", "SMART"}
for fixture_data in FIXTURE_DATA:
for fixture_data in fixture_list:
if data_root_filter and data_root_filter not in fixture_data.data:
continue
if fixture_data.protocol not in protocol_filter:
continue
if model_filter is not None and not _model_match(fixture_data, model_filter):
continue
if model_startswith_filter is not None and not _model_startswith_match(
fixture_data, model_startswith_filter
):
continue
if component_filter and not _component_match(fixture_data, component_filter):
continue
if device_type_filter and not _device_type_match(
@@ -191,8 +200,9 @@ def filter_fixtures(
filtered.append(fixture_data)
print(f"# {desc}")
for value in filtered:
print(f"\t{value.name}")
if desc:
print(f"# {desc}")
for value in filtered:
print(f"\t{value.name}")
filtered.sort()
return filtered