Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Added code coverage checks#649

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
msrathore-db wants to merge3 commits intomain
base:main
Choose a base branch
Loading
fromPECOBLR-621
Open
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 112 additions & 0 deletions.github/workflows/coverage-check.yml
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
name: Code Coverage

permissions:
contents: read

on:
pull_request:

jobs:
coverage:
runs-on: ubuntu-latest
steps:
#----------------------------------------------
# check-out repo and set-up python
#----------------------------------------------
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # Needed for coverage comparison
ref: ${{ github.event.pull_request.head.ref || github.ref_name }}
repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
- name: Set up python
id: setup-python
uses: actions/setup-python@v5
with:
python-version: "3.10"
#----------------------------------------------
# ----- install & configure poetry -----
#----------------------------------------------
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true

#----------------------------------------------
# load cached venv if cache exists
#----------------------------------------------
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ github.event.repository.name }}-${{ hashFiles('**/poetry.lock') }}
#----------------------------------------------
# install dependencies if cache does not exist
#----------------------------------------------
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root
#----------------------------------------------
# install your root project, if required
#----------------------------------------------
- name: Install library
run: poetry install --no-interaction
#----------------------------------------------
# install additional dependencies for e2e tests
#----------------------------------------------
- name: Install e2e test dependencies
run: poetry run pip install pyarrow
#----------------------------------------------
# run test suite
#----------------------------------------------
- name: Run tests with coverage
continue-on-error: true
run: poetry run python -m pytest tests/unit tests/e2e --cov=src --cov-report=xml --cov-report=term
#----------------------------------------------
# check for coverage override
#----------------------------------------------
- name: Check for coverage override
id: override
run: |
OVERRIDE_COMMENT=$(echo "${{ github.event.pull_request.body }}" | grep -E "SKIP_COVERAGE_CHECK\s*=" || echo "")
if [ -n "$OVERRIDE_COMMENT" ]; then
echo "override=true" >> $GITHUB_OUTPUT
REASON=$(echo "$OVERRIDE_COMMENT" | sed -E 's/.*SKIP_COVERAGE_CHECK\s*=\s*(.+)/\1/')
echo "reason=$REASON" >> $GITHUB_OUTPUT
echo "Coverage override found in PR description: $REASON"
else
echo "override=false" >> $GITHUB_OUTPUT
echo "No coverage override found"
fi
#----------------------------------------------
# check coverage percentage
#----------------------------------------------
- name: Report coverage percentage
run: |
COVERAGE_FILE="coverage.xml"
if [ ! -f "$COVERAGE_FILE" ]; then
echo "ERROR: Coverage file not found at $COVERAGE_FILE"
exit 1
fi

# Install xmllint if not available
if ! command -v xmllint &> /dev/null; then
sudo apt-get update && sudo apt-get install -y libxml2-utils
fi

COVERED=$(xmllint --xpath "string(//coverage/@lines-covered)" "$COVERAGE_FILE")
TOTAL=$(xmllint --xpath "string(//coverage/@lines-valid)" "$COVERAGE_FILE")

# Calculate percentage using Python for precision
PERCENTAGE=$(python3 -c "covered=${COVERED}; total=${TOTAL}; print(round((covered/total)*100, 2))")

echo "📊 Branch Coverage: ${PERCENTAGE}%"
#----------------------------------------------
# coverage enforcement summary
#----------------------------------------------
- name: Coverage summary
run: |
echo "Coverage calculation complete. No minimum enforced."
Loading
Loading

[8]ページ先頭

©2009-2025 Movatter.jp