Skip to content

ci(adk): agregar job test-adk con gate de cobertura - #12

Open
01luyicheng wants to merge 1 commit into
monaccode:developfrom
01luyicheng:ci/adk-coverage-gate
Open

ci(adk): agregar job test-adk con gate de cobertura#12
01luyicheng wants to merge 1 commit into
monaccode:developfrom
01luyicheng:ci/adk-coverage-gate

Conversation

@01luyicheng

Copy link
Copy Markdown

Motivo

Closes #2.

El job test de la raíz corre uv run pytest -v con testpaths=["tests"] (pyproject.toml), por lo que astromesh-adk/tests/ nunca se ejecuta en CI. Tampoco hay un gate de cobertura para astromesh_adk/. Este PR cierra esa deuda de proceso con un job test-adk dedicado.

Nota sobre la cita del issue: el issue #2 referencia docs/superpowers/specs/2026-05-18-astromesh-adkruntime-design.md §10.4, pero ese archivo no existe (el spec real del ADK es 2026-03-17-astromesh-adk-design.md) y su §10 es "Error Handling" (10.1–10.3), sin §10.4. La justificación de este gate es empírica: el paquete tiene 114 tests y pytest-cov declarado, pero CI no los corría ni medía cobertura. Lo dejo anotado por si sirve decidir si corregir el issue o el spec.

Cambios

  • .github/workflows/ci.yml: nuevo job test-adk (ubuntu-latest) que desde la raíz hace uv sync --locked --extra all (ADK no tiene uv.lock propio, se instala como editable desde el root lock) y luego uv run pytest astromesh-adk/tests --cov=astromesh_adk --cov-report=term-missing --cov-fail-under=60.
  • astromesh-adk/tests/test_public_api.py: arregla test_version, que verificaba con assert que __version__ == "0.1.9" cuando el paquete ya está en 0.2.0 (desde el release 0.1.9 se incrementó la versión en __init__.py y pyproject.toml pero no se sincronizó el test). Es un fallo preexistente que dejaba el job rojo desde el arranque; sin este fix el gate no tiene sentido.
  • astromesh-adk/CHANGELOG.md: entradas bajo [Unreleased] → Added (el job nuevo) y → Fixed (el test_version).

Umbral de cobertura

Medido hoy: TOTAL 68.35% (runner.py 70%, team.py 82%, tools.py 96%, cli/main.py 14% arrastra). --cov-fail-under=60 deja ~8pp de margen para pasar y a la vez frenar regresiones grandes. Se puede subir de a poco en follow-ups a medida que la cobertura crezca (por ejemplo, cubriendo cli/main.py que hoy está al 14%).

Cómo probar

uv run pytest astromesh-adk/tests --cov=astromesh_adk --cov-report=term-missing --cov-fail-under=60
uv run python -c "import yaml; yaml.safe_load(open('.github/workflows/ci.yml')); print('ci.yml OK')"

Resultado local: 114 passed, coverage 68.35% ≥ 60%. El job test de la raíz también sigue verde (1153 passed).

Notas / fuera de alcance

  • No agrego step de lint para astromesh_adk/: el pyproject.toml del ADK no declara [tool.ruff.lint] select, así que ruff check astromesh_adk/ usaría el ruleset por defecto y con alta probabilidad rompería el gate. Queda para otro PR que alinee el ruleset de ruff del ADK con el del core.
  • No subo el umbral por encima de 60% ni agrego matrix (multi-OS): el ADK es Python puro sin código OS-específico, al igual que el job test y test-orbit.
  • cli/main.py está al 14% de cobertura: queda como deuda de testing futura, fuera del alcance de este PR.

Convive con PR #11

Paralelo a #11 (fix/adk-swarm-empty-team-indexerror): sin solapamiento de archivos de código (runner.py/test_runner_local.py vs ci.yml/test_public_api.py), pero ambos editan astromesh-adk/CHANGELOG.md en la misma región ([Unreleased]). Si #11 mergeea primero, este PR necesitará un rebase trivial sobre CHANGELOG.md (ambas entradas ### Fixed se combinan a mano, sin conflicto semántico). El nuevo gate test-adk ayudará a evitar regresiones como la que #11 corrige. Por lo demás, #11 corre CI sobre su propia rama con el ci.yml actual de develop, que aún no incluye test-adk, así que este PR no lo impacta.

El job `test` de la raíz corre `uv run pytest -v` con
`testpaths=["tests"]`, por lo que `astromesh-adk/tests/` nunca se
ejecutaba en CI. Tampoco había un gate de cobertura para
`astromesh_adk/`. Este PR agrega un job `test-adk` dedicado que:

- corre `uv run pytest astromesh-adk/tests --cov=astromesh_adk
  --cov-report=term-missing --cov-fail-under=60` desde la raíz
  (ADK no tiene uv.lock propio, se instala como editable desde el
  root lock),
- arregla `test_public_api.py::test_version`, que assertionaba
  `0.1.9` cuando el paquete ya estaba en `0.2.0` — un fallo
  preexistente que dejaba el job rojo desde el arranque.

El umbral de 60% deja margen sobre el 68% medido hoy; se puede subir
en follow-ups a medida que la cobertura crezca.

Closes monaccode#2.
Copilot AI review requested due to automatic review settings July 27, 2026 18:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants