You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The session-scoped initialized_workspace fixture in tests/conftest.py times
out during the syncing_deps → completed transition, causing an ERROR at setup that cascades to every test depending on it (TestDevContainerStructure,
etc.).
The init pipeline reaches Syncing dependencies... (emitted by assets/init-workspace.sh:398), which runs just sync → uv sync --all-extras --all-groups (assets/workspace/justfile.project:59-60).
The test-project's optional dependencies are heavy scientific packages
(numpy==2.5.0, scipy==1.18.0, pandas==3.0.3, matplotlib==3.11.0, jupyter==1.1.1/jupyterlab), totalling tens of MB. The image ships no warm uv cache, so on a cold/slow network the download is still in flight when the 30s timeout for "Workspace initialized successfully" fires
(tests/conftest.py:350).
The captured before buffer shows the failure mid-download:
Current stage: syncing_deps
Time in stage: 30.0s (timeout: 30s)
✗ completed: not reached
This is a flaky-by-network failure: it passes when PyPI is fast or the uv cache
is warm, and fails on a cold/slow run. It is infrastructure flakiness, not a
product defect in the init script itself.
Run the testinfra suite, e.g. just test / pytest tests/ against ghcr.io/vig-os/devcontainer:dev.
The initialized_workspace fixture setup runs the interactive init.
Observe ERROR at setup of ... with pexpect.exceptions.TIMEOUT at the "Workspace initialized successfully" wait.
Expected Behavior
The init fixture completes deterministically regardless of how long uv sync spends downloading the test-project's heavy extras, and dependent
tests run.
Actual Behavior
The 30s completed timeout fires while uv sync is still downloading
numpy/scipy/pandas/matplotlib/jupyterlab, the session fixture errors, and all
dependent tests are reported as ERROR at setup.
Raise / make configurable the completed (and syncing_deps) timeout in tests/conftest.py to cover a cold-cache download (e.g. env-overridable, with
a generous default like 180–300s). Lowest-effort fix.
Warm the uv cache in the image build (prefetch the test-project extras
into UV_CACHE_DIR) so uv sync is offline-fast and deterministic — aligns
with the Nix-built-image work.
Trim the test-project's --all-extras for the init smoke path, or sync --no-install-project/offline, so the structure tests don't pay for the full
scientific stack.
Prefer (1) for an immediate unblock; (2) for the durable fix under the Nix image.
Description
The session-scoped
initialized_workspacefixture intests/conftest.pytimesout during the
syncing_deps→completedtransition, causing anERROR at setupthat cascades to every test depending on it (TestDevContainerStructure,etc.).
The init pipeline reaches
Syncing dependencies...(emitted byassets/init-workspace.sh:398), which runsjust sync→uv sync --all-extras --all-groups(assets/workspace/justfile.project:59-60).The test-project's optional dependencies are heavy scientific packages
(
numpy==2.5.0,scipy==1.18.0,pandas==3.0.3,matplotlib==3.11.0,jupyter==1.1.1/jupyterlab), totalling tens of MB. The image ships no warmuvcache, so on a cold/slow network the download is still in flight when the30s timeout for
"Workspace initialized successfully"fires(
tests/conftest.py:350).The captured
beforebuffer shows the failure mid-download:This is a flaky-by-network failure: it passes when PyPI is fast or the uv cache
is warm, and fails on a cold/slow run. It is infrastructure flakiness, not a
product defect in the init script itself.
Steps to Reproduce
uvcache (fresh image / no prior sync), unthrottled-but-realistic network.just test/pytest tests/againstghcr.io/vig-os/devcontainer:dev.initialized_workspacefixture setup runs the interactive init.ERROR at setup of ...withpexpect.exceptions.TIMEOUTat the"Workspace initialized successfully"wait.Expected Behavior
The init fixture completes deterministically regardless of how long
uv syncspends downloading the test-project's heavy extras, and dependenttests run.
Actual Behavior
The 30s
completedtimeout fires whileuv syncis still downloadingnumpy/scipy/pandas/matplotlib/jupyterlab, the session fixture errors, and all
dependent tests are reported as
ERROR at setup.Environment
ghcr.io/vig-os/devcontainer:devAdditional Context
tests/conftest.py:346-351—stage_patterns_after_copy,completedtimeout = 30stests/conftest.py:442-474— the timeout/pytest.failpathassets/init-workspace.sh:398-402—Syncing dependencies...→just syncassets/workspace/justfile.project:59-60—uv sync --all-extras --all-groupsassets/workspace/pyproject.toml— heavy optional depsinitialized_workspaceis session-scoped, one slow sync errors thewhole suite, matching the "many tests fail like this" symptom.
Possible Solution
One or more of:
completed(andsyncing_deps) timeout intests/conftest.pyto cover a cold-cache download (e.g. env-overridable, witha generous default like 180–300s). Lowest-effort fix.
uvcache in the image build (prefetch the test-project extrasinto
UV_CACHE_DIR) souv syncis offline-fast and deterministic — alignswith the Nix-built-image work.
--all-extrasfor the init smoke path, or sync--no-install-project/offline, so the structure tests don't pay for the fullscientific stack.
Prefer (1) for an immediate unblock; (2) for the durable fix under the Nix image.
Changelog Category
No changelog needed (test infrastructure).