Compute test coverage as part of CI pipeline
Adding something along the lines of this to our gitlab-ci script should allow test coverage to be automatically computed every time the CI pipeline is executed:
# Runs pytest with coverage output as an XML report
.python test:
stage: test
image: python:3.10-slim #replace with appropriate image
script:
- pip install pytest pytest-cov
- coverage run -m pytest
- coverage report -i
- coverage xml -i
coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage.xml
Running coveage run -m pytest
followed by coverage report -i
on the current master branch, I get the following results:
Name Stmts Miss Cover
--------------------------------------------------------------------------
docs/source/conf.py 36 1 97%
ketos/__init__.py 1 0 100%
ketos/audio/__init__.py 0 0 100%
ketos/audio/annotation.py 150 1 99%
ketos/audio/audio_loader.py 327 17 95%
ketos/audio/base_audio.py 174 4 98%
ketos/audio/gammatone.py 119 32 73%
ketos/audio/spectrogram.py 382 51 87%
ketos/audio/utils/__init__.py 0 0 100%
ketos/audio/utils/axis.py 158 4 97%
ketos/audio/utils/filter.py 64 3 95%
ketos/audio/utils/misc.py 166 12 93%
ketos/audio/waveform.py 280 37 87%
ketos/data_handling/__init__.py 0 0 100%
ketos/data_handling/data_feeding.py 320 50 84%
ketos/data_handling/data_handling.py 95 4 96%
ketos/data_handling/database_interface.py 415 34 92%
ketos/data_handling/parsing.py 109 14 87%
ketos/data_handling/selection_table.py 415 22 95%
ketos/neural_networks/__init__.py 27 3 89%
ketos/neural_networks/cnn.py 270 57 79%
ketos/neural_networks/densenet.py 171 53 69%
ketos/neural_networks/dev_utils/__init__.py 0 0 100%
ketos/neural_networks/dev_utils/detection.py 193 19 90%
ketos/neural_networks/dev_utils/export.py 157 20 87%
ketos/neural_networks/dev_utils/losses.py 20 0 100%
ketos/neural_networks/dev_utils/nn_interface.py 462 87 81%
ketos/neural_networks/inception.py 135 40 70%
ketos/neural_networks/resnet.py 338 77 77%
ketos/tests/__init__.py 0 0 100%
ketos/tests/audio/__init__.py 0 0 100%
ketos/tests/audio/test_annotation.py 169 0 100%
ketos/tests/audio/test_audio_loader.py 458 0 100%
ketos/tests/audio/test_base_audio.py 104 0 100%
ketos/tests/audio/test_gammatone.py 26 2 92%
ketos/tests/audio/test_spectrogram.py 270 0 100%
ketos/tests/audio/test_waveform.py 204 0 100%
ketos/tests/audio/utils/__init__.py 0 0 100%
ketos/tests/audio/utils/test_axis.py 122 0 100%
ketos/tests/audio/utils/test_filter.py 55 0 100%
ketos/tests/audio/utils/test_misc.py 133 0 100%
ketos/tests/cleanup.py 7 1 86%
ketos/tests/conftest.py 318 91 71%
ketos/tests/data_handling/__init__.py 0 0 100%
ketos/tests/data_handling/test_data_feeding.py 463 4 99%
ketos/tests/data_handling/test_data_handling.py 144 3 98%
ketos/tests/data_handling/test_database_interface.py 668 0 100%
ketos/tests/data_handling/test_parsing.py 79 0 100%
ketos/tests/data_handling/test_selection_table.py 413 2 99%
ketos/tests/neural_networks/__init__.py 0 0 100%
ketos/tests/neural_networks/test_cnn.py 350 0 100%
ketos/tests/neural_networks/test_densenet.py 112 0 100%
ketos/tests/neural_networks/test_detection.py 162 1 99%
ketos/tests/neural_networks/test_export.py 102 0 100%
ketos/tests/neural_networks/test_inception.py 91 0 100%
ketos/tests/neural_networks/test_losses.py 10 0 100%
ketos/tests/neural_networks/test_nn_interface.py 448 11 98%
ketos/tests/neural_networks/test_resnet.py 325 2 99%
ketos/tests/test_utils.py 110 0 100%
ketos/utils.py 177 18 90%
--------------------------------------------------------------------------
TOTAL 10504 777 93%
@frazao for your paper :-)