mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-10 18:07:06 +01:00
github.com/kuhyx/phone-focus-mode The two halves go as one repo: focus_policy parses phone_focus_mode's config.sh into the typed policy that focus-owner consumes, and nothing else references it. 77 commits of history, plus the two Python suites from linux_configuration/tests/ and the six mutation fixtures from meta/scripts/fixtures/, all of which named phone_focus_mode paths. Running the suites -- not reading them -- turned up a real defect the extraction would otherwise have inherited. config.sh sources the untracked config_secrets.sh, and ctl_libs_harness.sh never pinned HOME_LAT/HOME_LON, so the distance assertions were checking against whatever real coordinates that file happened to hold. The suite passed on this machine and could not run anywhere else, and a real home location was load-bearing in a pass/fail condition. The harness now pins a pair 4300 m south of the coordinate its own case seeds, and config.sh sources the secrets file only when it exists. 136/136 pass with no secrets file present. Before making the repo public I scanned the whole history for the known home coordinates and for any committed config_secrets.sh: zero hits, and the file was never tracked. The new repo also gained a .gitignore, since none came across in the filter-repo pass. test_magisk_service.sh hangs. It hangs identically in the pre-extraction baseline worktree and appears in no CI list here, so the new repo's CI skips it with that reason rather than pretending it passes. check_python_location.sh loses its phone_focus_mode exception now that the directory is gone; every tracked .py still passes it. The .gitignore rules for config_secrets.sh and the keystore STAY -- the working copy is still on this machine and still holds a real location. Depth 262 -> 248. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PJrqKERAo5QUeEHWS5Asgp
88 lines
2.6 KiB
Python
88 lines
2.6 KiB
Python
"""Pytest bootstrap: make non-package script dirs importable for these tests.
|
|
|
|
Several helper modules live in standalone script directories (outside
|
|
``python_pkg/``) and are invoked as ``python <file>.py`` rather than imported as
|
|
packages. To unit-test them they must be importable by bare module name, so each
|
|
directory is placed on ``sys.path`` before the tests import them.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
import sys
|
|
from typing import TYPE_CHECKING
|
|
|
|
import pytest
|
|
|
|
if TYPE_CHECKING:
|
|
from collections.abc import Callable
|
|
|
|
# Repo root is two levels up from this file (linux_configuration/tests/conftest.py).
|
|
_REPO_ROOT = Path(__file__).resolve().parents[2]
|
|
|
|
# Each standalone script directory whose Python modules these tests import.
|
|
_SCRIPT_DIRS = (
|
|
_REPO_ROOT / "meta" / "scripts", # validate_evidence, validate_contract
|
|
_REPO_ROOT
|
|
/ "linux_configuration"
|
|
/ "scripts"
|
|
/ "single_use"
|
|
/ "utils", # fast_count
|
|
_REPO_ROOT
|
|
/ "linux_configuration"
|
|
/ "scripts"
|
|
/ "single_use"
|
|
/ "misc"
|
|
/ "testsAndMisc-bash"
|
|
/ "tools", # transcribe_fw and its helpers
|
|
)
|
|
|
|
for _script_dir in _SCRIPT_DIRS:
|
|
if str(_script_dir) not in sys.path:
|
|
sys.path.insert(0, str(_script_dir))
|
|
|
|
|
|
@pytest.fixture
|
|
def fake_whisper() -> type[FakeWhisper]:
|
|
"""The faster_whisper double, as a fixture (conftest is not importable)."""
|
|
return FakeWhisper
|
|
|
|
|
|
@pytest.fixture
|
|
def importer() -> Callable[[dict[str, object]], object]:
|
|
"""The ``_try_import`` double factory, as a fixture."""
|
|
return fake_importer
|
|
|
|
|
|
class FakeWhisper:
|
|
"""Stand-in for faster_whisper, recording how a model was constructed.
|
|
|
|
``WhisperModel`` is upstream's CamelCase name, so it is exposed through
|
|
``__getattr__`` rather than defined as a method: defining it would mean
|
|
naming a non-PEP8 identifier here just to satisfy a third-party API.
|
|
"""
|
|
|
|
def __init__(self, error: Exception | None = None) -> None:
|
|
self.calls: list[dict[str, object]] = []
|
|
self._error = error
|
|
|
|
def _construct(self, name: str, **kwargs: object) -> object:
|
|
if self._error is not None:
|
|
raise self._error
|
|
self.calls.append({"name": name, **kwargs})
|
|
return object()
|
|
|
|
def __getattr__(self, attr: str) -> object:
|
|
if attr == "WhisperModel":
|
|
return self._construct
|
|
raise AttributeError(attr)
|
|
|
|
|
|
def fake_importer(available: dict[str, object]) -> object:
|
|
"""Return a ``_try_import`` double resolving only the named modules."""
|
|
|
|
def _try(name: str) -> object | None:
|
|
return available.get(name)
|
|
|
|
return _try
|