adding codecov reporting (#2372) [skip ci]
* adding codecov reporting * update codecov-action to v5 * fix --------- Co-authored-by: Dan Saunders <dan@axolotl.ai>
This commit is contained in:
14
.coveragerc
Normal file
14
.coveragerc
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[run]
|
||||||
|
source = axolotl
|
||||||
|
omit =
|
||||||
|
*/tests/*
|
||||||
|
setup.py
|
||||||
|
|
||||||
|
[report]
|
||||||
|
exclude_lines =
|
||||||
|
pragma: no cover
|
||||||
|
def __repr__
|
||||||
|
raise NotImplementedError
|
||||||
|
if __name__ == .__main__.:
|
||||||
|
pass
|
||||||
|
raise ImportError
|
||||||
13
.github/workflows/tests.yml
vendored
13
.github/workflows/tests.yml
vendored
@@ -102,9 +102,16 @@ jobs:
|
|||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: |
|
run: |
|
||||||
pytest -v -n8 --dist loadfile --ignore=tests/e2e/ --ignore=tests/patched/ --ignore=tests/cli/ tests/
|
pytest -v -n8 --dist loadfile --ignore=tests/e2e/ --ignore=tests/patched/ --ignore=tests/cli/ tests/ --cov=axolotl --cov-report=xml
|
||||||
pytest -v tests/patched/
|
pytest -v tests/patched/ --cov=axolotl --cov-append --cov-report=xml
|
||||||
pytest -v tests/cli/
|
pytest -v tests/cli/ --cov=axolotl --cov-append --cov-report=xml
|
||||||
|
|
||||||
|
- name: Upload coverage to Codecov
|
||||||
|
uses: codecov/codecov-action@v5
|
||||||
|
with:
|
||||||
|
files: ./coverage.xml
|
||||||
|
flags: unittests,pytorch-${{ matrix.pytorch_version }}
|
||||||
|
fail_ci_if_error: false
|
||||||
|
|
||||||
- name: cleanup pip cache
|
- name: cleanup pip cache
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://img.shields.io/github/license/axolotl-ai-cloud/axolotl.svg?color=blue" alt="GitHub License">
|
<img src="https://img.shields.io/github/license/axolotl-ai-cloud/axolotl.svg?color=blue" alt="GitHub License">
|
||||||
<img src="https://github.com/axolotl-ai-cloud/axolotl/actions/workflows/tests.yml/badge.svg" alt="tests">
|
<img src="https://github.com/axolotl-ai-cloud/axolotl/actions/workflows/tests.yml/badge.svg" alt="tests">
|
||||||
|
<a href="https://codecov.io/gh/axolotl-ai-cloud/axolotl"><img src="https://codecov.io/gh/axolotl-ai-cloud/axolotl/branch/main/graph/badge.svg" alt="codecov"></a>
|
||||||
<a href="https://github.com/axolotl-ai-cloud/axolotl/releases"><img src="https://img.shields.io/github/release/axolotl-ai-cloud/axolotl.svg" alt="Releases"></a>
|
<a href="https://github.com/axolotl-ai-cloud/axolotl/releases"><img src="https://img.shields.io/github/release/axolotl-ai-cloud/axolotl.svg" alt="Releases"></a>
|
||||||
<br/>
|
<br/>
|
||||||
<a href="https://github.com/axolotl-ai-cloud/axolotl/graphs/contributors"><img src="https://img.shields.io/github/contributors-anon/axolotl-ai-cloud/axolotl?color=yellow&style=flat-square" alt="contributors" style="height: 20px;"></a>
|
<a href="https://github.com/axolotl-ai-cloud/axolotl/graphs/contributors"><img src="https://img.shields.io/github/contributors-anon/axolotl-ai-cloud/axolotl?color=yellow&style=flat-square" alt="contributors" style="height: 20px;"></a>
|
||||||
|
|||||||
63
cicd/cicd.sh
63
cicd/cicd.sh
@@ -3,10 +3,59 @@ set -e
|
|||||||
|
|
||||||
python -c "import torch; assert '$PYTORCH_VERSION' in torch.__version__"
|
python -c "import torch; assert '$PYTORCH_VERSION' in torch.__version__"
|
||||||
|
|
||||||
pytest -v --durations=10 -n8 --ignore=tests/e2e/ --ignore=tests/patched/ --ignore=tests/cli /workspace/axolotl/tests/
|
# Run unit tests with initial coverage report
|
||||||
pytest -v --durations=10 /workspace/axolotl/tests/e2e/patched/lora_kernels # running these with the other patches causes a failure
|
pytest -v --durations=10 -n8 \
|
||||||
pytest -v --durations=10 --ignore=tests/e2e/patched/lora_kernels /workspace/axolotl/tests/e2e/patched
|
--ignore=tests/e2e/ \
|
||||||
pytest -v --durations=10 -n1 /workspace/axolotl/tests/e2e/solo/
|
--ignore=tests/patched/ \
|
||||||
pytest -v --durations=10 /workspace/axolotl/tests/e2e/integrations/
|
--ignore=tests/cli \
|
||||||
pytest -v --durations=10 /workspace/axolotl/tests/cli
|
/workspace/axolotl/tests/ \
|
||||||
pytest -v --durations=10 --ignore=tests/e2e/solo/ --ignore=tests/e2e/patched/ --ignore=tests/e2e/multigpu/ --ignore=tests/e2e/integrations/ --ignore=tests/cli /workspace/axolotl/tests/e2e/
|
--cov=axolotl \
|
||||||
|
--cov-report=xml:coverage.xml
|
||||||
|
|
||||||
|
# Run lora kernels tests with coverage append
|
||||||
|
pytest -v --durations=10 \
|
||||||
|
/workspace/axolotl/tests/e2e/patched/lora_kernels \
|
||||||
|
--cov=axolotl \
|
||||||
|
--cov-append
|
||||||
|
|
||||||
|
# Run patched tests excluding lora kernels with coverage append
|
||||||
|
pytest -v --durations=10 \
|
||||||
|
--ignore=tests/e2e/patched/lora_kernels \
|
||||||
|
/workspace/axolotl/tests/e2e/patched \
|
||||||
|
--cov=axolotl \
|
||||||
|
--cov-append
|
||||||
|
|
||||||
|
# Run solo tests with coverage append
|
||||||
|
pytest -v --durations=10 -n1 \
|
||||||
|
/workspace/axolotl/tests/e2e/solo/ \
|
||||||
|
--cov=axolotl \
|
||||||
|
--cov-append
|
||||||
|
|
||||||
|
# Run integration tests with coverage append
|
||||||
|
pytest -v --durations=10 \
|
||||||
|
/workspace/axolotl/tests/e2e/integrations/ \
|
||||||
|
--cov=axolotl \
|
||||||
|
--cov-append
|
||||||
|
|
||||||
|
pytest -v --durations=10 /workspace/axolotl/tests/cli \
|
||||||
|
--cov=axolotl \
|
||||||
|
--cov-append
|
||||||
|
|
||||||
|
# Run remaining e2e tests with coverage append and final report
|
||||||
|
pytest -v --durations=10 \
|
||||||
|
--ignore=tests/e2e/solo/ \
|
||||||
|
--ignore=tests/e2e/patched/ \
|
||||||
|
--ignore=tests/e2e/multigpu/ \
|
||||||
|
--ignore=tests/e2e/integrations/ \
|
||||||
|
--ignore=tests/cli \
|
||||||
|
/workspace/axolotl/tests/e2e/ \
|
||||||
|
--cov=axolotl \
|
||||||
|
--cov-append \
|
||||||
|
--cov-report=xml:coverage.xml
|
||||||
|
|
||||||
|
# Upload coverage to Codecov
|
||||||
|
if [ -f e2e-coverage.xml ]; then
|
||||||
|
codecov -f e2e-coverage.xml -F e2e,pytorch-${PYTORCH_VERSION}
|
||||||
|
else
|
||||||
|
echo "Coverage file not found. Coverage report may have failed."
|
||||||
|
fi
|
||||||
|
|||||||
@@ -4,3 +4,22 @@ set -e
|
|||||||
# only run one test at a time so as not to OOM the GPU
|
# only run one test at a time so as not to OOM the GPU
|
||||||
pytest -v --durations=10 -n2 /workspace/axolotl/tests/e2e/multigpu/ --ignore=/workspace/axolotl/tests/e2e/multigpu/solo/
|
pytest -v --durations=10 -n2 /workspace/axolotl/tests/e2e/multigpu/ --ignore=/workspace/axolotl/tests/e2e/multigpu/solo/
|
||||||
pytest -v --durations=10 -n1 /workspace/axolotl/tests/e2e/multigpu/solo/
|
pytest -v --durations=10 -n1 /workspace/axolotl/tests/e2e/multigpu/solo/
|
||||||
|
|
||||||
|
# Only run two tests at a time to avoid OOM on GPU (with coverage collection)
|
||||||
|
pytest -v -n2 \
|
||||||
|
--ignore=/workspace/axolotl/tests/e2e/multigpu/solo/
|
||||||
|
/workspace/axolotl/tests/e2e/multigpu/ \
|
||||||
|
--cov=axolotl \
|
||||||
|
--cov-report=xml:multigpu-coverage.xml
|
||||||
|
|
||||||
|
pytest -v --durations=10 -n1 /workspace/axolotl/tests/e2e/multigpu/solo/ \
|
||||||
|
--cov=axolotl \
|
||||||
|
--cov-append \
|
||||||
|
--cov-report=xml:multigpu-coverage.xml
|
||||||
|
|
||||||
|
# Upload coverage to Codecov
|
||||||
|
if [ -f multigpu-coverage.xml ]; then
|
||||||
|
codecov -f multigpu-coverage.xml -F multigpu,docker-tests,pytorch-${PYTORCH_VERSION}
|
||||||
|
else
|
||||||
|
echo "Coverage file not found. Coverage report may have failed."
|
||||||
|
fi
|
||||||
|
|||||||
51
codecov.yml
Normal file
51
codecov.yml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
codecov:
|
||||||
|
require_ci_to_pass: yes
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
precision: 2
|
||||||
|
round: down
|
||||||
|
range: "70...100"
|
||||||
|
status:
|
||||||
|
project:
|
||||||
|
default:
|
||||||
|
# basic
|
||||||
|
target: auto
|
||||||
|
threshold: 0%
|
||||||
|
base: auto
|
||||||
|
# advanced
|
||||||
|
branches: null
|
||||||
|
if_no_uploads: error
|
||||||
|
if_not_found: success
|
||||||
|
if_ci_failed: error
|
||||||
|
only_pulls: false
|
||||||
|
flags: null
|
||||||
|
paths: null
|
||||||
|
patch:
|
||||||
|
default:
|
||||||
|
# basic
|
||||||
|
target: auto
|
||||||
|
threshold: 0%
|
||||||
|
base: auto
|
||||||
|
# advanced
|
||||||
|
branches: null
|
||||||
|
if_no_uploads: error
|
||||||
|
if_not_found: success
|
||||||
|
if_ci_failed: error
|
||||||
|
only_pulls: false
|
||||||
|
flags: null
|
||||||
|
paths: null
|
||||||
|
|
||||||
|
parsers:
|
||||||
|
gcov:
|
||||||
|
branch_detection:
|
||||||
|
conditional: yes
|
||||||
|
loop: yes
|
||||||
|
method: no
|
||||||
|
macro: no
|
||||||
|
|
||||||
|
comment:
|
||||||
|
layout: "reach,diff,flags,files,footer"
|
||||||
|
behavior: default
|
||||||
|
require_changes: no
|
||||||
|
require_base: no
|
||||||
|
require_head: yes
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
pre-commit
|
|
||||||
black
|
black
|
||||||
mypy
|
mypy
|
||||||
|
pre-commit
|
||||||
types-requests
|
types-requests
|
||||||
quartodoc
|
quartodoc
|
||||||
jupyter
|
jupyter
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
codecov
|
||||||
pytest
|
pytest
|
||||||
pytest-xdist
|
pytest-cov
|
||||||
pytest-retry
|
pytest-retry
|
||||||
pytest-sugar
|
pytest-sugar
|
||||||
|
pytest-xdist
|
||||||
tbparse
|
tbparse
|
||||||
|
|||||||
Reference in New Issue
Block a user