Drop codecov #67
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
- 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 | |
# We share store main coverage data in a separate branch, so we fetch it too | |
git fetch origin coverage:coverage --depth=1 || true | |
# Get the coverage data from the coverage branch | |
git checkout coverage -- main-coverage.txt || true | |
# 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 >> 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: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master' | |
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: Set up Git | |
run: | | |
git config user.name ${{ github.actor }} | |
git config user.email ${{ github.actor }}@users.noreply.github.com | |
- name: Combine coverage and generate the report and the badge | |
run: | | |
python -Im pip install --upgrade "git+https://github.com/percevalw/coveragepy.git#egg=coverage[toml]" | |
python -Im coverage combine | |
coverage report --show-missing > /tmp/main-coverage.txt | |
# Generate the coverage badge (color = #4c1) | |
python generate_badge.py -r /tmp/main-coverage.txt -t .github/badge-template.svg > /tmp/coverage.svg | |
git fetch origin coverage:coverage --depth=1 || true | |
git checkout coverage || git checkout --orphan coverage | |
git reset --hard | |
cp /tmp/main-coverage.txt main-coverage.txt | |
cp /tmp/coverage.svg coverage.svg | |
git add main-coverage.txt coverage.svg | |
git commit -m "Update main coverage" | |
git push origin coverage | |
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 . |