Skip to content

Commit

Permalink
[matter_yamltests] Be stricter about the response key for command tar…
Browse files Browse the repository at this point in the history
…getting group and disallow the use of the endpoint key
  • Loading branch information
vivien-apple committed Jul 17, 2023
1 parent 9ac1480 commit e57d79b
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
11 changes: 11 additions & 0 deletions scripts/py_matter_yamltests/matter_yamltests/errors.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,17 @@ def __init__(self, content):
self.tag_key_with_error(content, 'response')


class TestStepGroupEndPointError(TestStepError):
"""Raise when a test step targeting a group of nodes targets an endpoint."""

def __init__(self, content):
message = 'Group command should not target an endpoint'
super().__init__(message)

self.tag_key_with_error(content, 'groupId')
self.tag_key_with_error(content, 'endpoint')


class TestStepVerificationStandaloneError(TestStepError):
"""Raise when a test step with a verification key is enabled and not interactive."""

Expand Down
11 changes: 7 additions & 4 deletions scripts/py_matter_yamltests/matter_yamltests/yaml_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

from typing import Tuple, Union

from .errors import (TestStepError, TestStepGroupResponseError, TestStepInvalidTypeError, TestStepKeyError,
from .errors import (TestStepError, TestStepGroupResponseError, TestStepGroupEndPointError, TestStepInvalidTypeError, TestStepKeyError,
TestStepNodeIdAndGroupIdError, TestStepResponseVariableError, TestStepValueAndValuesError,
TestStepVerificationStandaloneError, TestStepWaitResponseError)
from .fixes import add_yaml_support_for_scientific_notation_without_dot
Expand Down Expand Up @@ -115,6 +115,7 @@ def __check_test_step(self, config: dict, content):
self.__check(content, schema)
self.__rule_node_id_and_group_id_are_mutually_exclusive(content)
self.__rule_group_step_should_not_expect_a_response(content)
self.__rule_group_step_should_not_target_an_endpoint(content)
self.__rule_step_with_verification_should_be_disabled_or_interactive(
content)
self.__rule_wait_should_not_expect_a_response(content)
Expand Down Expand Up @@ -233,9 +234,11 @@ def __rule_node_id_and_group_id_are_mutually_exclusive(self, content):

def __rule_group_step_should_not_expect_a_response(self, content):
if 'groupId' in content and 'response' in content:
response = content.get('response')
if 'value' in response or 'values' in response:
raise TestStepGroupResponseError(content)
raise TestStepGroupResponseError(content)

def __rule_group_step_should_not_target_an_endpoint(self, content):
if 'groupId' in content and 'endpoint' in content:
raise TestStepGroupEndPointError(content)

def __rule_step_with_verification_should_be_disabled_or_interactive(self, content):
if 'verification' in content:
Expand Down

0 comments on commit e57d79b

Please sign in to comment.