From 84d31f54a35ad4a2145e3feefe0e97b6b8ab84c8 Mon Sep 17 00:00:00 2001 From: Mika Date: Fri, 3 Apr 2026 10:57:06 +0000 Subject: [PATCH] Add artifact.data_logger/tests/test_core.py --- artifact.data_logger/tests/test_core.py | 66 +++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 artifact.data_logger/tests/test_core.py diff --git a/artifact.data_logger/tests/test_core.py b/artifact.data_logger/tests/test_core.py new file mode 100644 index 0000000..bd6a017 --- /dev/null +++ b/artifact.data_logger/tests/test_core.py @@ -0,0 +1,66 @@ +import json +import io +import sys +import pytest +from rich.console import Console + +import artifact_data_logger.core as core + + +@pytest.fixture +def valid_metrics(): + return { + "setup_fingerprint": "fp_12345", + "policy_hash": "ph_abcdef", + "epoch_ms": 1710000000000, + "near_expiry_unpinned": 0.05, + } + + +def test_log_metrics_stdout_output(valid_metrics, capsys): + run_id = "aux2_040" + core.log_metrics(run_id, valid_metrics) + captured = capsys.readouterr() + output = captured.out.strip() + assert run_id in output + for key, value in valid_metrics.items(): + assert str(value) in output + + +def test_invalid_metrics_type_raises(): + with pytest.raises((TypeError, KeyError, AssertionError)): + core.log_metrics("runX", {"setup_fingerprint": 123}) + + +def test_missing_field_raises(valid_metrics): + bad_metrics = valid_metrics.copy() + bad_metrics.pop("policy_hash") + with pytest.raises((KeyError, AssertionError)): + core.log_metrics("runY", bad_metrics) + + +def test_epoch_ms_numeric(valid_metrics, capsys): + valid_metrics["epoch_ms"] = 999999 + core.log_metrics("runZ", valid_metrics) + out = capsys.readouterr().out + assert "999999" in out + assert "policy_hash" in out + + +def test_near_expiry_float_range(valid_metrics): + valid_metrics["near_expiry_unpinned"] = 1.0 + assert 0.0 <= valid_metrics["near_expiry_unpinned"] <= 1.0 + core.log_metrics("runR", valid_metrics) + + +@pytest.mark.parametrize("field,value", [ + ("setup_fingerprint", None), + ("policy_hash", None), + ("epoch_ms", "notint"), + ("near_expiry_unpinned", -0.1), +]) +def test_invalid_field_values_raise(valid_metrics, field, value): + bad_metrics = valid_metrics.copy() + bad_metrics[field] = value + with pytest.raises(Exception): + core.log_metrics("runW", bad_metrics)