The self-lock/holder preflight (#99711) deferred the repair on the theory that the updater's own mapped python.exe makes the venv rename impossible. Live on windows-latest, a process executing from venv\Scripts\python.exe (and the repo's real .venv with cp311 .pyd extensions loaded) does NOT block the rename; what blocks it with WinError 5 is any ordinary handle under the tree: a process cwd, an open file, a sync client. Since sys.executable is always under the venv on Windows, the deferral fired on every run and no Windows install could repair from `hermes update`. Retire it and its tests; the pyvenv.cfg repoint needs no rename and has none of that exposure. The wine2e lane now runs the cutover probes instead. The repoint keeps the live venv's site-packages, so provisioning's fall-forward to the next minor (3.11 -> 3.12, #76106) must not be pointed at a cp311 tree: refuse before touching pyvenv.cfg. The live Windows test holds the venv the way the field does (a child with cwd inside it), asserts the rename path fails (the symptom) and the repoint succeeds; the rollback and minor-guard tests run on every host.
81 lines
2.6 KiB
YAML
81 lines
2.6 KiB
YAML
name: Windows venv-holder live E2E
|
|
|
|
# ON-DEMAND ONLY (fleet-update #91277, venv-holder consolidation work).
|
|
#
|
|
# Runs the live venv-holder E2E suite on a real windows-latest runner:
|
|
# spawns actual processes with realistic Hermes argv shapes and drives the
|
|
# REAL detection/classification/exemption code against the live process
|
|
# table — the coverage that cannot exist on the Linux lanes and that the
|
|
# maintainer cannot exercise locally before the work reaches main.
|
|
#
|
|
# Deliberately NOT wired to pull_request/main: it fires only on pushes to
|
|
# wine2e/** working branches, so it costs nothing on normal PRs. Delete or
|
|
# keep dormant after the venv-holder work lands.
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- "wine2e/**"
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: windows-venv-e2e-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
venv-holder-e2e:
|
|
name: venv-holder live E2E (windows-latest)
|
|
runs-on: windows-latest
|
|
timeout-minutes: 25
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # 8.2.0
|
|
with:
|
|
version: "0.9.28"
|
|
enable-cache: true
|
|
cache-dependency-glob: |
|
|
pyproject.toml
|
|
uv.lock
|
|
|
|
- name: Set up Python 3.11
|
|
uses: ./.github/actions/retry
|
|
with:
|
|
command: uv python install 3.11
|
|
|
|
- name: Install dependencies
|
|
uses: ./.github/actions/retry
|
|
with:
|
|
command: uv sync --locked --python 3.11 --extra dev --extra messaging
|
|
|
|
- name: Run venv-holder live E2E
|
|
shell: bash
|
|
run: |
|
|
set -uo pipefail
|
|
uv run --no-sync python -m pytest \
|
|
tests/hermes_cli/test_venv_holder_windows_live.py \
|
|
tests/hermes_cli/test_taskkill_identity_windows_live.py \
|
|
tests/hermes_cli/test_git_trampoline_windows_live.py \
|
|
tests/hermes_cli/test_managed_uv_windows_cutover.py \
|
|
-o addopts= -v -p no:cacheprovider
|
|
|
|
- name: Run Telegram CLOSE-WAIT reconnect live E2E (#87057)
|
|
shell: bash
|
|
run: |
|
|
set -uo pipefail
|
|
uv run --no-sync python -m pytest \
|
|
tests/gateway/test_telegram_closewait_windows_live.py \
|
|
-o addopts= -v -p no:cacheprovider
|
|
|
|
- name: Run background-executor spawn parity live E2E (#70716)
|
|
shell: bash
|
|
run: |
|
|
set -uo pipefail
|
|
uv run --no-sync python -m pytest \
|
|
tests/tools/test_process_registry_windows_live.py \
|
|
-o addopts= -v -p no:cacheprovider
|