Files
Dmitriy DementievandClaude Opus 5 039cf29b95 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>
2026-08-12 17:48:24 +03:00

35 lines
2.3 KiB
Markdown

# TODO
## proxy-client: тест синхронности NO_PROXY не работает на Windows
Источник истины — `DEFAULT_NO_PROXY_EXTRA` в
`proxy-client/.local/bin/proxy-client`. На Linux он расходится автоматически:
`shell.bash` в `proxy_on()` вызывает `proxy-client env` и экспортирует то, что
вернули. На Windows автоматики нет, список продублирован литералом в пяти
местах — и это дублирование уже под охраной `tests/test_proxy_env_sync.py`,
который сверяет каждую копию с эталоном, вычисленным из самого `proxy-client`.
Проблема в том, что охрана не срабатывает на той платформе, где копии и живут.
На Windows тест грузит `proxy-client` через `runpy.run_path`, тот первой
строкой делает `import fcntl`, и проверка падает с ошибкой:
```
test_copies_match_proxy_client ... ERROR (ModuleNotFoundError: fcntl)
test_windows_bypass_lists_match_each_other ... ok
```
По той же причине на Windows не запускается `tests/test_proxy_client.py`
целиком. То есть рассинхрон windows-копий поймает только прогон на Linux.
Что сделать:
- дать тесту читать `DEFAULT_NO_PROXY_EXTRA` без исполнения модуля (разбором
исходника или вынесением константы в отдельный файл), чтобы проверка шла и
на Windows;
- решить, должен ли `no_proxy_extra` из машинного конфига **дополнять**
`DEFAULT_NO_PROXY_EXTRA`, а не замещать его (сейчас замещает —
`proxy-client:262`, `environment_values()` клеит только loopback и
`config.no_proxy_extra`). Эта ветка тестом не покрыта вовсе: сверяется
только режим по умолчанию. До решения замещение помечено предупреждением в
README и в обоих примерах конфига.