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

2.3 KiB

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 и в обоих примерах конфига.