diff --git a/app/schemas/test_harness_backend_version.py b/app/schemas/test_harness_backend_version.py index 619ee930..083874ef 100644 --- a/app/schemas/test_harness_backend_version.py +++ b/app/schemas/test_harness_backend_version.py @@ -21,4 +21,5 @@ class TestHarnessBackendVersion(BaseModel): version: str sha: str sdk_sha: str + sdk_docker_tag: str db_revision: str diff --git a/app/tests/version/test_read_test_harness_backend_version.py b/app/tests/version/test_read_test_harness_backend_version.py index f0474a45..456a6702 100644 --- a/app/tests/version/test_read_test_harness_backend_version.py +++ b/app/tests/version/test_read_test_harness_backend_version.py @@ -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 @@ -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() @@ -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 @@ -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) diff --git a/app/version.py b/app/version.py index 9130358d..99fdd4c3 100644 --- a/app/version.py +++ b/app/version.py @@ -15,7 +15,7 @@ # import importlib from pathlib import Path -from typing import Optional +from typing import Any, Optional from loguru import logger @@ -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() diff --git a/cspell.json b/cspell.json index e5a3985a..01eb8b80 100644 --- a/cspell.json +++ b/cspell.json @@ -112,7 +112,10 @@ "chipyaml", "webrtc", "pyproject", - "CNET" + "CNET", + "AVSM", + "PAVST", + "WEBRTCR" ], "allowCompoundWords": true, "ignorePaths": [