diff --git a/ophyd_devices/utils/static_device_test.py b/ophyd_devices/utils/static_device_test.py index bf0a474..7333fcb 100644 --- a/ophyd_devices/utils/static_device_test.py +++ b/ophyd_devices/utils/static_device_test.py @@ -17,7 +17,7 @@ try: except ImportError: device_manager = None -TestResult = namedtuple("TestResult", ["name", "success", "message"]) +TestResult = namedtuple("TestResult", ["name", "success", "message", "config_is_valid"]) class StaticDeviceAnalysisError(Exception): @@ -328,9 +328,12 @@ class StaticDeviceTest: for name, conf in self.config.items(): return_val = 0 status = False + config_is_valid = False try: return_val += self.validate_schema(name, conf) return_val += self.check_device_classes(name, conf) + if return_val == 0: + config_is_valid = True if device_manager is not None and connect: return_val += self.connect_device( name, @@ -345,7 +348,12 @@ class StaticDeviceTest: self.print_and_write(f"ERROR: {name} failed: {e}") finally: results.append( - TestResult(name=name, success=status, message="\n".join(print_and_write)) + TestResult( + name=name, + success=status, + message="\n".join(print_and_write), + config_is_valid=config_is_valid, + ) ) print_and_write.clear() return results diff --git a/tests/test_static_device_test.py b/tests/test_static_device_test.py index 6145f41..da4d502 100644 --- a/tests/test_static_device_test.py +++ b/tests/test_static_device_test.py @@ -4,7 +4,7 @@ from unittest import mock import bec_lib -from ophyd_devices.utils.static_device_test import StaticDeviceTest, launch +from ophyd_devices.utils.static_device_test import StaticDeviceTest, TestResult, launch def test_static_device_test(): @@ -42,3 +42,13 @@ def test_static_device_test_with_config_dict(): assert ret[1].name == "wrong" assert ret[1].success is False assert isinstance(ret[1].message, str) + + +def test_static_device_test_TestResults(): + result = TestResult( + name="test_device", success=True, message="Device is OK", config_is_valid=True + ) + assert result.name == "test_device" + assert result.success is True + assert result.message == "Device is OK" + assert result.config_is_valid is True