Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
"""Tests for shared-metrics configuration discovery and setup."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
|
||||
from hermes_cli.config import DEFAULT_CONFIG
|
||||
from hermes_cli.setup import setup_telemetry
|
||||
from hermes_cli.subcommands.setup import build_setup_parser
|
||||
|
||||
|
||||
def test_shared_metrics_are_registered_disabled_by_default():
|
||||
assert DEFAULT_CONFIG["telemetry"]["shared_metrics"]["enabled"] is False
|
||||
|
||||
|
||||
def test_setup_telemetry_enables_shared_metrics(monkeypatch):
|
||||
config = {}
|
||||
monkeypatch.setattr(
|
||||
"hermes_cli.setup.prompt_yes_no",
|
||||
lambda _question, default: not default,
|
||||
)
|
||||
|
||||
setup_telemetry(config)
|
||||
|
||||
assert config["telemetry"]["shared_metrics"]["enabled"] is True
|
||||
|
||||
|
||||
def test_disabling_collection_closes_the_send_consent_window(monkeypatch, tmp_path):
|
||||
"""`hermes tools` -> disable shared metrics must withdraw send consent.
|
||||
|
||||
The not-enabled branch returned early without recording anything, so the
|
||||
consent window stayed open and re-enabling later would release every
|
||||
package collected in between.
|
||||
"""
|
||||
from hermes_cli.observability.shared_metrics import SharedMetricsStore
|
||||
from hermes_cli.observability.shared_metrics_sender import (
|
||||
reconcile_send_consent,
|
||||
)
|
||||
from hermes_cli.sqlite_util import write_txn
|
||||
|
||||
store = SharedMetricsStore(
|
||||
database_path=tmp_path / "m.db", outbox_directory=tmp_path / "o"
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"hermes_cli.observability.shared_metrics.SharedMetricsStore",
|
||||
lambda *a, **k: store,
|
||||
)
|
||||
|
||||
# The user had consented; now they turn collection off entirely.
|
||||
monkeypatch.setattr(
|
||||
"hermes_cli.setup.prompt_yes_no", lambda _question, default: False
|
||||
)
|
||||
config = {"telemetry": {"shared_metrics": {"enabled": True, "send": True}}}
|
||||
# Consent was granted earlier, so a window is open — that is precisely
|
||||
# the state whose closure must be recorded.
|
||||
with store._connection() as connection:
|
||||
with write_txn(connection):
|
||||
reconcile_send_consent(connection, True)
|
||||
|
||||
setup_telemetry(config)
|
||||
|
||||
assert config["telemetry"]["shared_metrics"]["enabled"] is False
|
||||
assert config["telemetry"]["shared_metrics"]["send"] is False
|
||||
with store._connection() as connection:
|
||||
open_windows = connection.execute(
|
||||
"SELECT COUNT(*) FROM send_consent_windows WHERE closed_at IS NULL"
|
||||
).fetchone()[0]
|
||||
assert open_windows == 0, (
|
||||
"disabling collection left the send consent window open"
|
||||
)
|
||||
|
||||
|
||||
def test_setup_parser_accepts_telemetry_section():
|
||||
parser = argparse.ArgumentParser()
|
||||
subparsers = parser.add_subparsers(dest="command")
|
||||
handler = object()
|
||||
build_setup_parser(subparsers, cmd_setup=handler)
|
||||
|
||||
args = parser.parse_args(["setup", "telemetry"])
|
||||
|
||||
assert args.section == "telemetry"
|
||||
assert args.func is handler
|
||||
Reference in New Issue
Block a user