Skip to content
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
1 change: 1 addition & 0 deletions app/schemas/test_harness_backend_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,5 @@ class TestHarnessBackendVersion(BaseModel):
version: str
sha: str
sdk_sha: str
sdk_docker_tag: str
db_revision: str
72 changes: 62 additions & 10 deletions app/tests/version/test_read_test_harness_backend_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,23 @@
import pytest

from app import utils_db
from app.version import read_matter_sdk_sha, read_test_harness_backend_version
from app.schemas.test_harness_backend_version import TestHarnessBackendVersion
from app.version import (
_get_matter_settings,
read_matter_sdk_docker_tag,
read_matter_sdk_sha,
read_test_harness_backend_version,
)


def _assert_sdk_info(backend_version: TestHarnessBackendVersion) -> None:
matter_sdk_sha = read_matter_sdk_sha()
if matter_sdk_sha is not None:
assert backend_version.sdk_sha == matter_sdk_sha

matter_sdk_docker_tag = read_matter_sdk_docker_tag()
if matter_sdk_docker_tag is not None:
assert backend_version.sdk_docker_tag == matter_sdk_docker_tag


@pytest.mark.serial
Expand Down Expand Up @@ -49,9 +65,7 @@ def test_read_test_harness_backend_version() -> None:
assert backend_version.version == expected_version_value
assert backend_version.sha == expected_sha_value
assert backend_version.db_revision == expected_db_revision
matter_sdk_sha = read_matter_sdk_sha()
if matter_sdk_sha is not None:
assert backend_version.sdk_sha == matter_sdk_sha
_assert_sdk_info(backend_version)

mock_utils.assert_called_once()

Expand Down Expand Up @@ -82,9 +96,7 @@ def test_read_test_harness_backend_version_with_empty_files() -> None:
assert backend_version.version == expected_version_value
assert backend_version.sha == expected_sha_value
assert backend_version.db_revision == expected_db_revision
matter_sdk_sha = read_matter_sdk_sha()
if matter_sdk_sha is not None:
assert backend_version.sdk_sha == matter_sdk_sha
_assert_sdk_info(backend_version)


@pytest.mark.serial
Expand Down Expand Up @@ -112,6 +124,46 @@ def test_read_test_harness_backend_version_with_missing_files() -> None:
assert backend_version.version == expected_version_value
assert backend_version.sha == expected_sha_value
assert backend_version.db_revision == expected_db_revision
matter_sdk_sha = read_matter_sdk_sha()
if matter_sdk_sha is not None:
assert backend_version.sdk_sha == matter_sdk_sha
_assert_sdk_info(backend_version)


@pytest.mark.serial
def test_get_matter_settings() -> None:
"""Test _get_matter_settings returns matter_settings when module exists."""
matter_settings = _get_matter_settings()
if matter_settings is not None:
# If the module is available, verify it has the expected attributes
assert hasattr(matter_settings, "SDK_SHA")
assert hasattr(matter_settings, "SDK_DOCKER_TAG")


@pytest.mark.serial
def test_read_matter_sdk_sha() -> None:
"""Test read_matter_sdk_sha returns shortened SHA."""
sdk_sha = read_matter_sdk_sha()
if sdk_sha is not None:
# SHA should be shortened to 7 characters
assert len(sdk_sha) == 7
# Verify it matches the expected format
assert isinstance(sdk_sha, str)


@pytest.mark.serial
def test_read_matter_sdk_docker_tag() -> None:
"""Test read_matter_sdk_docker_tag returns docker tag."""
sdk_docker_tag = read_matter_sdk_docker_tag()
if sdk_docker_tag is not None:
# Docker tag should be a non-empty string
assert isinstance(sdk_docker_tag, str)
assert len(sdk_docker_tag) > 0


@pytest.mark.serial
def test_read_matter_sdk_sha_and_docker_tag_consistency() -> None:
"""Test that SDK SHA and Docker Tag are both available or both None."""
sdk_sha = read_matter_sdk_sha()
sdk_docker_tag = read_matter_sdk_docker_tag()

# Both should be None or both should have values
# (they come from the same module)
assert (sdk_sha is None) == (sdk_docker_tag is None)
34 changes: 30 additions & 4 deletions app/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#
import importlib
from pathlib import Path
from typing import Optional
from typing import Any, Optional

from loguru import logger

Expand All @@ -40,28 +40,54 @@ def read_test_harness_backend_version() -> TestHarnessBackendVersion:
sha_value = utils.read_information_from_file(SHA_FILEPATH)
db_revision = utils_db.get_db_revision()
sdk_sha_value = read_matter_sdk_sha() or ""
sdk_docker_tag_value = read_matter_sdk_docker_tag() or ""

logger.info(f"Test Engine version is {version_value}")
logger.info(f"Test Engine SHA is {sha_value}")
logger.info(f"Test Engine SDK SHA is {sdk_sha_value}")
logger.info(f"Test Engine SDK Docker Tag is {sdk_docker_tag_value}")

return TestHarnessBackendVersion(
version=version_value,
sha=sha_value,
sdk_sha=sdk_sha_value,
sdk_docker_tag=sdk_docker_tag_value,
db_revision=db_revision,
)


def read_matter_sdk_sha() -> Optional[str]:
def _get_matter_settings() -> Optional[Any]:
"""
Retrieve short SDK SHA from settings (The information is kept in config.py file)
Helper function to import and return matter_settings module.
Returns None if the module is not found.
"""
if importlib.find_loader(MATTER_CONFIG_MODULE) is None:
return None

matter_config_module = importlib.import_module(MATTER_CONFIG_MODULE)
return matter_config_module.matter_settings.SDK_SHA[:7]
return matter_config_module.matter_settings


def read_matter_sdk_sha() -> Optional[str]:
"""
Retrieve short SDK SHA from settings (The information is kept in config.py file)
"""
matter_settings = _get_matter_settings()
if matter_settings is None:
return None

return matter_settings.SDK_SHA[:7]


def read_matter_sdk_docker_tag() -> Optional[str]:
"""
Retrieve SDK Docker Tag from settings (The information is kept in config.py file)
"""
matter_settings = _get_matter_settings()
if matter_settings is None:
return None

return matter_settings.SDK_DOCKER_TAG


version_information = read_test_harness_backend_version()
5 changes: 4 additions & 1 deletion cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,10 @@
"chipyaml",
"webrtc",
"pyproject",
"CNET"
"CNET",
"AVSM",
"PAVST",
"WEBRTCR"
],
"allowCompoundWords": true,
"ignorePaths": [
Expand Down
Loading