Skip to content

Drop codecov

Drop codecov #62

Workflow file for this run

name: Tests and Linting
on:
pull_request:
push:
branches: [main]
jobs:
Linting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- name: Set PY variable
run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV
- uses: actions/cache@v2
with:
path: ~/.cache/pre-commit
key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
- name: Install pre-commit
run: |
pip install pre-commit
pre-commit install
- name: Run pre-commit
run: SKIP=no-commit-to-branch pre-commit run --all-files
Pytest:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v2
- name: Cache downloaded resources
uses: actions/cache@v3
with:
path: ~/.data/
key: resources
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: Install dependencies
run: |
pip install --upgrade pip
pip install -e '.[dev]'
- name: Test with Pytest on Python ${{ matrix.python-version }}
run: python -m pytest --cov foldedtensor --cov-report xml --ignore tests/test_docs.py
if: matrix.python-version != '3.9'
- name: Test with Pytest on Python ${{ matrix.python-version }}
run: coverage run -m pytest
- name: Upload coverage data
uses: actions/upload-artifact@v4
with:
name: coverage-data-${{ matrix.python-version }}
path: .coverage.*
if-no-files-found: ignore
pull-request-coverage:
name: Check Pull Request Coverage
if: github.event_name == 'pull_request'
needs: Pytest
runs-on: ubuntu-latest
env:
GITHUB_PR_NUMBER: ${{github.event.pull_request.number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
# Use latest Python, so it understands all syntax.
python-version: "3.7"
- uses: actions/download-artifact@v4
with:
pattern: coverage-data-*
merge-multiple: true
- uses: actions/download-artifact@v4
with:
pattern: main-coverage
- name: Combine coverage
run: |
python -Im pip install --upgrade "git+https://github.com/percevalw/coveragepy.git#egg=coverage[toml]"
python -Im coverage combine
- name: Compare coverage
if: github.event_name == 'pull_request'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Get the main branch, so that we can run `git diff main`
git fetch origin main:main --depth=1
# Report and write to summary.
echo '## Coverage Report' > report.md
if [ -f main-coverage.txt ]; then
coverage report --skip-covered --skip-empty --show-missing --format=diff --base-coverage-report=main-coverage.txt --base-revision=main --fail-under=base >> report.md || status=$?
else
coverage report --skip-covered --skip-empty --show-missing --format=diff --base-revision=main --fail-under=95 >> report.md || status=$?
fi
cat report.md >> $GITHUB_STEP_SUMMARY
COMMENT_BODY_JSON=$(jq -Rs . <<< $(cat report.md))
HEADER="Authorization: token $GITHUB_TOKEN"
PR_COMMENTS_URL="https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments"
# Fetch existing comments to find if one from this workflow already exists
COMMENTS=$(curl -s -H "$HEADER" "$PR_COMMENTS_URL")
COMMENT_ID=$(echo "$COMMENTS" | jq -r '.[] | select(.user.login == "github-actions[bot]" and (.body | startswith("## Coverage Report"))) | .id')
# Check if we have a comment ID, if so, update it, otherwise create a new one
if [[ "$COMMENT_ID" ]]; then
# Update existing comment
curl -s -X PATCH -H "$HEADER" -H "Content-Type: application/json" -d "{\"body\": $COMMENT_BODY_JSON}" "https://api.github.com/repos/${{ github.repository }}/issues/comments/$COMMENT_ID"
else
# Post new comment
curl -s -X POST -H "$HEADER" -H "Content-Type: application/json" -d "{\"body\": $COMMENT_BODY_JSON}" "$PR_COMMENTS_URL"
fi
if [ $status -ne 0 ]; then
exit $status
fi
main-coverage:
name: Update Base Coverage
if: always()
needs: Pytest
runs-on: ubuntu-latest
env:
GITHUB_PR_NUMBER: ${{github.event.pull_request.number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
# Use latest Python, so it understands all syntax.
python-version: "3.7"
- uses: actions/download-artifact@v4
with:
pattern: coverage-data-*
merge-multiple: true
- name: Combine coverage
run: |
python -Im pip install --upgrade "git+https://github.com/percevalw/coveragepy.git#egg=coverage[toml]"
python -Im coverage combine
coverage report --show-missing > main-coverage.txt
- name: Upload Coverage Percentage for Main
uses: actions/upload-artifact@v4
with:
name: main-coverage
path: main-coverage.txt
Installation:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install library
run: |
pip install .