unity-mcp/tests/test_telemetry_server.py

63 lines
1.9 KiB
Python

import importlib
import sys
from pathlib import Path
import pytest
# Allow importing telemetry from Server
SERVER_DIR = Path(__file__).resolve().parents[1] / "Server"
sys.path.insert(0, str(SERVER_DIR))
@pytest.fixture(autouse=True)
def _cwd(monkeypatch):
# Ensure telemetry package can locate pyproject.toml via cwd-relative lookup
src_dir = Path(__file__).resolve().parents[1] / "MCPForUnity" / "UnityMcpServer~" / "src"
if not src_dir.exists():
# Fallback to UnityMcpBridge layout if MCPForUnity path not present
fallback = Path(__file__).resolve().parents[1] / "UnityMcpBridge" / "UnityMcpServer~" / "src"
if fallback.exists():
src_dir = fallback
monkeypatch.chdir(src_dir)
def test_telemetry_basic():
from telemetry import (
get_telemetry,
record_telemetry,
record_milestone,
RecordType,
MilestoneType,
is_telemetry_enabled,
)
assert isinstance(is_telemetry_enabled(), bool)
record_telemetry(RecordType.VERSION, {"version": "3.0.2", "test_run": True})
first = record_milestone(MilestoneType.FIRST_STARTUP, {"test_mode": True})
assert isinstance(first, bool)
assert get_telemetry() is not None
def test_telemetry_disabled(monkeypatch):
monkeypatch.setenv("DISABLE_TELEMETRY", "true")
import telemetry
importlib.reload(telemetry)
from telemetry import is_telemetry_enabled, record_telemetry, RecordType
assert is_telemetry_enabled() is False
record_telemetry(RecordType.USAGE, {"test": "ignored"})
# restore module state for later tests
monkeypatch.delenv("DISABLE_TELEMETRY", raising=False)
importlib.reload(telemetry)
def test_data_storage():
from telemetry import get_telemetry
coll = get_telemetry()
cfg = coll.config
assert cfg.data_dir is not None
assert cfg.uuid_file is not None
assert cfg.milestones_file is not None