mirror of
https://github.com/python-kasa/python-kasa.git
synced 2025-08-07 19:24:01 +00:00
Fix test framework running against real devices (#1235)
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user