From 039cf29b9523570d08c5f622dedf8b23c4aee331 Mon Sep 17 00:00:00 2001 From: Dmitriy Dementiev Date: Wed, 12 Aug 2026 17:48:24 +0300 Subject: [PATCH] =?UTF-8?q?docs(proxy):=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D1=8C=20=D0=B2=20TODO=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=E2=80=94=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=20=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE=D0=BD=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20=D1=83=D0=B6=D0=B5=20=D0=B5=D1=81=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - предыдущая запись предлагала написать тест сверки копий 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) --- TODO.md | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/TODO.md b/TODO.md index a240ca9..e051a61 100644 --- a/TODO.md +++ b/TODO.md @@ -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 и в обоих примерах конфига.