Drop codecov #54
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 }} | |
env: | |
UMLS_API_KEY: ${{ secrets.UMLS_API_KEY }} | |
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 | |
Coverage: | |
name: Combine & check 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 & fail if it's <100% | |
run: | | |
python -Im pip install --upgrade "git+https://github.com/percevalw/coveragepy.git#egg=coverage[toml]" | |
ls -lah | |
python -Im coverage combine | |
# Report and write to summary. | |
python -Im coverage report --skip-covered --skip-empty --format=detailed-markdown >> $GITHUB_STEP_SUMMARY | |
echo '## Coverage Report' > step-summary.md | |
cat $GITHUB_STEP_SUMMARY >> step-summary.md | |
- name: Upload Coverage Percentage for Main | |
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/main' | |
run: | | |
coverage report > coverage-report.txt | |
echo "main_coverage=$(grep 'TOTAL' coverage-report.txt | awk '{print $NF}' | sed 's/%//')" > main-coverage.txt | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: main-coverage-percentage | |
path: main-coverage.txt | |
- name: Compare Coverage Percentages | |
if: github.ref != 'refs/heads/main' && github.ref != 'refs/heads/main' && github.event_name == 'pull_request' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
main_coverage=$(cat ./.github/workflows/artifacts/main-coverage.txt || echo "90") | |
branch_coverage=$(coverage report | grep 'TOTAL' | awk '{print $NF}' | sed 's/%//') | |
# echo "Main Coverage: $main_coverage%" > step-summary.md | |
# echo "Branch Coverage: $branch_coverage%" > step-summary.md | |
# Echo comparison in with cross if it's lower, and checkmark if it's higher. | |
if (( $(echo "$branch_coverage < $main_coverage" | bc -l) )); then | |
echo "Coverage has decreased from the main branch." | |
echo "Branch Coverage: $branch_coverage% < Main Coverage: $main_coverage% :x:" >> step-summary.md | |
FAILED=true | |
else | |
echo "Coverage is sufficient or improved." | |
echo "Branch Coverage: **$branch_coverage%** ≥ Main Coverage: **$main_coverage%** :white_check_mark:" >> step-summary.md | |
FAILED=false | |
fi | |
COMMENT_BODY_JSON=$(jq -Rs . <<< $(cat step-summary.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 [[ "$FAILED" == "true" ]]; then | |
exit 1 | |
fi | |
# 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 . | |
# |