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:
1 parent
89cdda99ec
commit
039cf29b95
1 file changed
+19
-15
@@ -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 и в обоих примерах конфига.
|
||||
Reference in new issue
Block a user