Fix power meter CLI error handling

This commit is contained in:
2026-10-01 12:36:46 +02:00
parent 640ec53330
commit ea940ad0fa
2 changed files with 17 additions and 1 deletions
+1
View File
@@ -260,6 +260,7 @@ def _parse_cli_timestamp(value: str) -> object:
def _run_power_meter(args: argparse.Namespace) -> int:
from datetime import UTC, datetime, timedelta
import time
from production_analytics.calculations.config import CalculationConfigError
from production_analytics.enlyze.exploration import ConfigurationError
from production_analytics.power_meter.config import load_power_meter_config
from production_analytics.power_meter.gateway import PowerMeterGateway
+16 -1
View File
@@ -3,7 +3,7 @@ import json
import os
import tempfile
import unittest
from contextlib import redirect_stdout
from contextlib import redirect_stderr, redirect_stdout
from pathlib import Path
from unittest.mock import patch
@@ -12,6 +12,21 @@ from production_analytics.enlyze.exploration import ExplorationResponse
class CliTests(unittest.TestCase):
def test_power_meter_config_error_returns_controlled_exit_code(self) -> None:
with tempfile.TemporaryDirectory() as temporary_directory:
missing_config = Path(temporary_directory) / "missing.yaml"
error_output = io.StringIO()
with redirect_stderr(error_output):
result = main([
"run", "power-meter", "--config", str(missing_config), "--meter", "B2",
"--start", "2026-10-01T10:00:00Z", "--end", "2026-10-01T10:10:00Z",
])
self.assertEqual(result, 2)
self.assertIn(
"Config/startup error: Cannot read power-meter configuration", error_output.getvalue()
)
@patch.dict(os.environ, {"ENLYZE_BASE_URL": "https://enlyze.example"}, clear=True)
@patch("production_analytics.cli.__main__.ExplorationClient.get")
def test_raw_prints_and_saves_sanitized_response(self, get_mock: object) -> None: