Allow AUX feature (#73197)
* Allow AUX feature
* Inject set of features
diff --git a/src/python_testing/TC_DeviceConformance.py b/src/python_testing/TC_DeviceConformance.py
index 7e34e83..4a2a5a3 100644
--- a/src/python_testing/TC_DeviceConformance.py
+++ b/src/python_testing/TC_DeviceConformance.py
@@ -56,10 +56,13 @@
# quiet: true
# === END CI TEST ARGUMENTS ===
+from matter.clusters import Objects as Clusters
+from matter.testing.conformance import optional
from matter.testing.decorators import async_test_body
# TODO: Enable 10.5 in CI once the door lock OTA requestor problem is sorted.
from matter.testing.device_conformance_tests import DeviceConformanceTests
from matter.testing.runner import TestStep, default_matter_test_main
+from matter.testing.spec_parsing import XmlFeature
class TC_DeviceConformance(DeviceConformanceTests):
@@ -69,6 +72,25 @@
super().setup_class()
await self.setup_class_helper()
+ def _inject_unsupported_described_conformance(self):
+ # TODO: Remove allow_unsupported_described_conformance after 1.6.1 once <describedConform /> is supported in spec parsing
+ allow_unsupported_described_conformance = self.user_params.get(
+ "allow_unsupported_described_conformance", True)
+ if not allow_unsupported_described_conformance:
+ return
+
+ # Curated list of cluster features using <describedConform /> that are currently unhandled in spec parsing
+ described_conformance_ignore_features = {
+ Clusters.AccessControl.id: {
+ 0x04: XmlFeature(code="AUX", name="AuxiliaryAuthentication", conformance=optional()),
+ }
+ }
+ for cluster_id, features in described_conformance_ignore_features.items():
+ if cluster_id in self.xml_clusters:
+ for mask, feature in features.items():
+ if mask not in self.xml_clusters[cluster_id].features:
+ self.xml_clusters[cluster_id].features[mask] = feature
+
def test_TC_IDM_10_2(self):
# TODO: Turn this off after TE2
# https://github.com/project-chip/connectedhomeip/issues/34615
@@ -76,6 +98,7 @@
"ignore_in_progress_test_event_only_disallowed_for_certification", True)
allow_provisional_test_event_only_disallowed_for_certification = self.user_params.get(
"allow_provisional_test_event_only_disallowed_for_certification", False)
+ self._inject_unsupported_described_conformance()
success, problems = self.check_conformance(ignore_in_progress_test_event_only_disallowed_for_certification,
self.is_pics_sdk_ci_only,
allow_provisional_test_event_only_disallowed_for_certification)