docs(proxy): запись в TODO исправлена — тест синхронности уже есть

- Зачем:
  - предыдущая запись предлагала написать тест сверки копий NO_PROXY, хотя
    tests/test_proxy_env_sync.py делает ровно это с момента появления копий.
- Что:
  - запись переписана: дублирование под охраной, но на Windows проверка
    падает с ModuleNotFoundError: fcntl, потому что грузит proxy-client
    через runpy.
  - задача заменена на «дать тесту читать константу без исполнения модуля».
  - сохранён нерешённый вопрос про замещение no_proxy_extra: эта ветка не
    покрыта тестом вообще.
- Проверка:
  - python tests/test_proxy_env_sync.py -v — 1 ok, 1 ERROR (fcntl), то есть
    поведение, описанное в записи.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dmitriy DementievandClaude Opus 5 committed 2026-08-12 17:48:24 +03:00
1 parent 89cdda99ec
commit 039cf29b95
1 file changed
+19 -15
+19 -15
View File
@@ -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 и в обоих примерах конфига.