Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[matter_yamltests] Be stricter about the response key for command tar… #27989

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
13 changes: 8 additions & 5 deletions scripts/py_matter_yamltests/matter_yamltests/yaml_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@

from typing import Tuple, Union

from .errors import (TestStepError, TestStepGroupResponseError, TestStepInvalidTypeError, TestStepKeyError,
TestStepNodeIdAndGroupIdError, TestStepResponseVariableError, TestStepValueAndValuesError,
from .errors import (TestStepError, TestStepGroupEndPointError, TestStepGroupResponseError, 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:
bzbarsky-apple marked this conversation as resolved.
Show resolved Hide resolved
raise TestStepGroupEndPointError(content)

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