- Зачем:
- предыдущая запись предлагала написать тест сверки копий 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>
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 и в обоих примерах конфига.