Without pyyaml in CI, adapter._load_providers' broad except-Exception swallows the ImportError and silently falls back to _BUILTIN_PROVIDERS. Tests then assert 7 providers but get 2; setup() can't route any third-party model. Locally pyyaml is system-installed so the issue went unnoticed. Same failure mode as the 2026-04-30 incident (CI green, prod broken) — pinning the dep here closes that gap. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
31 lines
1.4 KiB
YAML
31 lines
1.4 KiB
YAML
name: CI
|
|
on: [push, pull_request]
|
|
jobs:
|
|
validate:
|
|
uses: Molecule-AI/molecule-ci/.github/workflows/validate-workspace-template.yml@main
|
|
|
|
tests:
|
|
name: Adapter unit tests
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 5
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.11"
|
|
# pyyaml is the runtime dep that adapter.py's _load_providers reads
|
|
# /configs/config.yaml through. In production it arrives transitively
|
|
# via molecule-ai-workspace-runtime; in this minimal test env we
|
|
# install it explicitly so the YAML-loading code path is actually
|
|
# exercised (without it, _load_providers' broad except-Exception
|
|
# swallows the ImportError and silently falls back to _BUILTIN_PROVIDERS,
|
|
# which is exactly the behavior that bit us 2026-04-30 when CI
|
|
# claimed green on a build that couldn't route any third-party model).
|
|
- run: pip install -q pytest pytest-asyncio pyyaml
|
|
# Tests live under tests/ with their own pytest.ini that anchors
|
|
# rootdir there — keeps pytest from importing the package
|
|
# __init__.py (which does `from .adapter import ...` for runtime
|
|
# discovery and can't be satisfied without molecule_runtime
|
|
# installed). See tests/pytest.ini for the full rationale.
|
|
- run: python3 -m pytest tests/ -v
|