diff --git a/TODO.md b/TODO.md index a240ca9..e051a61 100644 --- a/TODO.md +++ b/TODO.md @@ -1,30 +1,34 @@ # TODO -## proxy-client: список NO_PROXY дублируется на Windows +## proxy-client: тест синхронности NO_PROXY не работает на Windows Источник истины — `DEFAULT_NO_PROXY_EXTRA` в `proxy-client/.local/bin/proxy-client`. На Linux он расходится автоматически: `shell.bash` в `proxy_on()` вызывает `proxy-client env` и экспортирует то, что -вернули. На Windows автоматики нет — список продублирован литералом в пяти -файлах: +вернули. На Windows автоматики нет, список продублирован литералом в пяти +местах — и это дублирование уже под охраной `tests/test_proxy_env_sync.py`, +который сверяет каждую копию с эталоном, вычисленным из самого `proxy-client`. -- `chezmoi/dot_config/powershell/profile.ps1` -- `chezmoi/dot_local/bin/start-claude-proxy.ps1` -- `chezmoi/dot_local/bin/start-codex-proxy.ps1` -- `chezmoi/dot_codex/dot_env` (в двух регистрах) -- `vscode/.vscode-server/server-env-setup` +Проблема в том, что охрана не срабатывает на той платформе, где копии и живут. +На Windows тест грузит `proxy-client` через `runpy.run_path`, тот первой +строкой делает `import fcntl`, и проверка падает с ошибкой: -Связь держится комментарием «список обязан совпадать», а не проверкой: -`tests/test_proxy_launchers.sh` гоняет механику на подставных значениях -(`proxy.test`, `.example.test`) и синхронность копий с источником не утверждает. -Рассинхрон проходит молча и всплывает как оборванное соединение. +``` +test_copies_match_proxy_client ... ERROR (ModuleNotFoundError: fcntl) +test_windows_bypass_lists_match_each_other ... ok +``` + +По той же причине на Windows не запускается `tests/test_proxy_client.py` +целиком. То есть рассинхрон windows-копий поймает только прогон на Linux. Что сделать: -- тест, сравнивающий литералы в пяти файлах с выдачей `proxy-client env` — - закрывает класс целиком, а не отдельный домен; +- дать тесту читать `DEFAULT_NO_PROXY_EXTRA` без исполнения модуля (разбором + исходника или вынесением константы в отдельный файл), чтобы проверка шла и + на Windows; - решить, должен ли `no_proxy_extra` из машинного конфига **дополнять** `DEFAULT_NO_PROXY_EXTRA`, а не замещать его (сейчас замещает — `proxy-client:262`, `environment_values()` клеит только loopback и - `config.no_proxy_extra`). До решения замещение помечено предупреждением в + `config.no_proxy_extra`). Эта ветка тестом не покрыта вовсе: сверяется + только режим по умолчанию. До решения замещение помечено предупреждением в README и в обоих примерах конфига.