mirror of
https://github.com/yusufipk/dikte.git
synced 2026-09-11 10:56:10 +00:00
doctor judged the local provider by the API key it does not use, so a fully local machine always saw a red mark, and it crashed outright with local cleanup picked; both lines now ask readiness. config list printed the Groq key in plaintext while masking the other two. The one subprocess decoded with the locale codepage gets its UTF-8 back, so a Turkish filename cannot hang a file transcription, and a redirected stdout on Windows replaces what it cannot encode instead of failing after the work succeeded. meeting-cancel stops advertising a --wait the server never honoured. "you" and "bye" leave the hallucination list: people dictate them. The minutes stage failing no longer burns the transcription checkpoint, and an untouched meeting-length dial no longer rewrites a value the command line set in seconds. A prompt box compared against the wrong language's default after a switch no longer fossilizes the old default as a custom prompt. The 67 strings of the local-model box, the whole first-run screen of the shipped default, get their Turkish. The hub cache moves to the platform's cache directory instead of ~/.cache on every system; the old directory is a few orphaned kilobytes with a six-hour shelf life. The last NO_WINDOW spellings collapse into the constant paths already carries, one windowed-executable lookup, one session-file reader, one install-record reader, one download progress signal carrying its destination, and the KDE conflict scan loses the branch its other branch already covered. Co-Authored-By: Claude Fable 5 <[email protected]>
38 lines
1.6 KiB
Python
38 lines
1.6 KiB
Python
"""Test-wide safety net, applied before anything under test is imported.
|
|
|
|
Every module resolves its paths at import time from the XDG variables, so those
|
|
are redirected here: a test that forgets to ask for a throwaway directory writes
|
|
into a temporary one instead of into the real ~/.config/dikte. The Qt platform
|
|
is pinned for the same reason, so that a machine with no display and a CI runner
|
|
behave the way a desktop does.
|
|
"""
|
|
|
|
import atexit
|
|
import os
|
|
import shutil
|
|
import tempfile
|
|
|
|
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
|
|
|
|
_SANDBOX = tempfile.mkdtemp(prefix="dikte-tests-")
|
|
os.environ["XDG_CONFIG_HOME"] = os.path.join(_SANDBOX, "config")
|
|
os.environ["XDG_DATA_HOME"] = os.path.join(_SANDBOX, "data")
|
|
os.environ["XDG_CACHE_HOME"] = os.path.join(_SANDBOX, "cache")
|
|
# Home goes with them: the shortcut file, the applications directory and every
|
|
# macOS path start from it rather than from an XDG variable, and a test run is
|
|
# not allowed to touch the real one.
|
|
os.environ["HOME"] = os.path.join(_SANDBOX, "home")
|
|
os.makedirs(os.environ["HOME"], exist_ok=True)
|
|
atexit.register(shutil.rmtree, _SANDBOX, True)
|
|
|
|
# A key sitting in the environment would otherwise reach the code that falls
|
|
# back to it, and the tests for "there is no key" would pass only on a machine
|
|
# without one.
|
|
for _var in ("OPENAI_API_KEY", "GROQ_API_KEY", "OPENROUTER_API_KEY"):
|
|
os.environ.pop(_var, None)
|
|
|
|
# The interface language leaks through module-level state, so the tests fix it
|
|
# rather than inherit whatever the developer's locale says.
|
|
for _var in ("LC_ALL", "LC_MESSAGES", "LANG"):
|
|
os.environ.pop(_var, None)
|