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