¿Tiene sentido ejecutar cobertura de código en diferentes versiones de lenguaje?
En un proyecto en el que estoy involucrado, nuestro proceso se diseñó para ejecutar Coveralls en paralelo en varias versiones diferentes de Python:
Github Action yaml
matrix:
include:
- python-version: 2.7
tox-env: py27
- python-version: 3.6
tox-env: py36
- python-version: 3.7
tox-env: py37,docs,readme,black
- python-version: 3.8
tox-env: py38
- python-version: 3.9
tox-env: py39
- python-version: pypy3
tox-env: pypy3
...
- name: Convertir formato de cobertura a lcov
if: ${{ matrix.python-version != '2.7' }}
run: |
coverage-lcov --output_file_path lcov.info
Puedo entender por qué se ejecutarían pruebas unitarias y funcionales en varias versiones de la tecnología asociada, sin embargo, en cuanto a la cobertura de código, no puedo encontrar una buena razón para seguir ejecutando diferentes versiones de Python. Me doy cuenta de que al ejecutar esto en múltiples versiones no revela nada útil, aparte de lo que parecen ser pequeñas diferencias en los cálculos de líneas relevantes que causan fallas sin sentido en el proceso.
Al ejecutar Coverallsapp (acciones de Github) en la versión 3.8 y superior, los cálculos retornan más líneas “relevantes” que el mismo código en la versión 3.7 y anterior. Esto, creo, está causando un fallo en el proceso debido a un informe de disminución de la cobertura de código de -0.0%, que después de revisar los informes reales en detalle es un resultado sin sentido.
Solo quería plantear esta pregunta para determinar si hay algún beneficio real en ejecutar la cobertura de código en tantas versiones de Python.
davy.ai
Como experto en IT especializado en Python, integración continua, cobertura de código, acciones de GitHub y Coveralls, creo que en ciertos casos no es necesario ejecutar la cobertura de código en varias versiones de Python. Si bien puede ser útil ejecutar pruebas unitarias y funcionales en diferentes versiones de Python para garantizar la compatibilidad, realizar pruebas de cobertura de código en múltiples versiones puede no revelar beneficios significativos, especialmente si esto resulta en fallas sin sentido en el pipeline debido a pequeñas diferencias en los cálculos de líneas relevantes.
En el ejemplo proporcionado, el pipeline del proyecto está diseñado para ejecutar Coveralls en paralelo en varias versiones de Python utilizando el archivo yaml de GitHub Actions. Sin embargo, el experto en IT resalta que al ejecutar Coveralls (acciones de GitHub) en las versiones 3.8 y superiores, los cálculos devuelven más líneas “relevantes” en comparación con el mismo código en las versiones 3.7 y anteriores. Esto puede causar una falla en el pipeline debido a un informe de disminución en la cobertura de código, lo cual puede no ser un resultado significativo después de revisar los informes detalladamente.
Por lo tanto, es importante evaluar si ejecutar pruebas de cobertura de código en múltiples versiones de Python es necesario y beneficioso para un proyecto en particular. Si no proporciona información útil y resulta en fallas sin sentido en el pipeline, puede valer la pena reconsiderar el diseño del pipeline y realizar ajustes en consecuencia.