feat+test: pytest suite + Now Playing + World Clock + Daily Quote packs (154 commands)

Adds first formal test suite for Python fork — 42 tests covering memory_store,
profiles_store, scheduler_store, macros_store, llm_backend. All pass.

Tests (tests/, ~290 lines)
  conftest.py — `isolated_state` fixture: rewires _PATH/_PROFILES_DIR etc to
                a per-test tmp_path so concurrent runs don't touch real data.
  test_memory_store.py     — 9 tests: remember/recall/forget round-trip,
                              search by key/value, limit/empty query,
                              persistence across reload, build_llm_context
  test_profiles_store.py   — 7 tests: seeded defaults, set_active persistence,
                              allows_command logic (default/work/driving)
  test_scheduler_store.py  — 12 tests: parser (daily/at/every/in, ru units,
                              bad input), add/remove/clear/remove_by_text,
                              _next_fire for each schedule kind
  test_macros_store.py     — 8 tests: is_macro_control filter, start/save
                              round-trip, control-phrase filtering, list_names
                              sorted, replay unknown raises
  test_llm_backend.py      — 6 tests: parse_backend aliases (ru + en),
                              persist round-trip, auto-detect logic

Run: cd /c/Jarvis/python && python -m pytest tests/

Three new fun packs (commands.yaml: 151 → 154)

now_playing — Windows Media Session API via PowerShell
              "что играет" / "что за песня" / "какой трек"
              Works with Spotify, YouTube, Foobar, Yandex Music, anything
              that exposes SMTC (Win10 1803+).

world_clock — worldtimeapi.org (free, no key)
              "сколько времени в Токио" / "время в Лондоне"
              21 Russian + world cities pre-mapped to IANA timezones.

daily_quote — zenquotes.io (free, no key) + LLM translation
              "цитата дня" / "вдохнови меня"
              Fetches English quote, translates to Russian via active LLM
              (Groq or Ollama), speaks "text — author."

Pack count: 151 → 154. Tests: 42 pytest + ast.parse + yaml.safe_load.
This commit is contained in:
Bossiara13 2026-05-16 00:56:02 +03:00
parent 8d3da4ea06
commit 4e62049a98
10 changed files with 637 additions and 0 deletions

View file

@ -1307,3 +1307,31 @@ llm_status:
- ты сейчас где работаешь
- что за модель
action: {type: llm_status}
now_playing:
phrases:
- что играет
- что сейчас играет
- что за музыка
- что за песня
- какой трек
- какая песня
- что слушаю
action: {type: now_playing}
world_clock:
phrases:
- сколько времени в
- который час в
- сколько часов в
- время в
action: {type: world_clock}
daily_quote:
phrases:
- цитата дня
- мотивирующая цитата
- скажи цитату
- вдохнови меня
- цитата
action: {type: daily_quote}