Objetivo (45 minutos): ejecutar análisis estático y escribir/aplicar pruebas unitarias en dos lenguajes (Python y JavaScript) dentro de GitHub Codespaces, sobre un proyecto que funciona, pero contiene issues intencionales detectables por linters.
- Abrir en Codespaces (sube este proyecto a tu repo y abre un Codespace).
- Espera a que termine la configuración inicial (instalación automática de dependencias).
- En la terminal, ejecuta:
# entrar a la carpeta de Python
cd python_app
# análisis estático (Ruff)
ruff check .
# ejecutar pruebas (pytest)
pytest -qcd ../js_app
# análisis estático (ESLint)
npm run lint
# ejecutar pruebas (Jest)
npm test -- --watchAll=falseTu tarea durante el laboratorio:
- Análisis estático: identifica al menos 3 hallazgos en cada lenguaje y arréglalos (commits pequeños).
- Pruebas unitarias: implementa casos de prueba para
es_palindromo(Python) eisPalindrome(JS), y añade 1–2 pruebas parasuma(Python).- Re-ejecuta linters y pruebas hasta que todo pase.
-
python_app/
palindromo.py: funciónes_palindromo(correcta) con issues intencionales (import no usado, variable no usada, código inalcanzable).utils.py: funciónsumasimple, con pequeñas oportunidades de mejora.tests/: plantillas mínimas para que escribas pruebas.pytestyruffpara pruebas/análisis.
-
js_app/
src/stringUtils.js:isPalindrome(correcta) con issues (uso devar,==, código inalcanzable, variable sin uso).tests/: prueba de ejemplo mínima; completa con tus casos.eslintyjestpara análisis/pruebas.
es_palindromo: "radar", "Radar", "anita lava la tina", "python" y cadena vacía.suma: casos simples con positivos, cero y negativos.
isPalindrome: mismos casos que en Python.
- 0–5 min: abrir Codespace y correr linters una vez para ver hallazgos.
- 5–15 min: escribir tests para
es_palindromoeisPalindrome. - 15–30 min: corregir hallazgos del análisis estático (al menos 3 por lenguaje).
- 30–40 min: completar tests de
sumay re-ejecutar suites. - 40–45 min: resumen (¿qué detectó el linter vs. qué detectaron los tests?).
Nota: No se usa CI (GitHub Actions/Travis) en esta sesión. Todo es local en Codespaces.
cd ts_app
npm run lint
npm run typecheck
npm testTu tarea TS:
- Completa pruebas para
isPalindrome. - Corrige issues de ESLint (
eqeqeq, variables sin uso) y de TypeScript (--strict). - Repite hasta que todo pase limpio.