Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
25 changes: 25 additions & 0 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: CI

on:
push:
branches: ["main"]
pull_request:

jobs:
pre-commit:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Get python version
run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV
- uses: actions/cache@v4
with:
path: ~/.cache/pre-commit
key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
- name: Install pre-commit
run: pip install pre-commit
- name: Run pre-commit
run: pre-commit run --all-files --show-diff-on-failure --color=always
124 changes: 124 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: Tests

on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]

jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]

steps:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"

- name: Install dependencies
run: |
uv sync --all-extras --dev

- name: Run tests (excluding live credential tests)
run: |
uv run pytest tests/ -v -m "not live" --cov --cov-branch --cov-report=xml
- name: Rename coverage file
run: mv .coverage .coverage.${{ matrix.python-version }}
- name: Upload coverage file
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.python-version }}
path: .coverage.${{ matrix.python-version }}
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: acsone/msgraphfs

test-with-credentials:
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
environment: testing-with-credentials

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: "3.11"

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"

- name: Install dependencies
run: |
uv sync --all-extras --dev

- name: Run live credential tests (if credentials available)
env:
MSGRAPHFS_CLIENT_ID: ${{ secrets.MSGRAPHFS_CLIENT_ID }}
MSGRAPHFS_TENANT_ID: ${{ secrets.MSGRAPHFS_TENANT_ID }}
MSGRAPHFS_CLIENT_SECRET: ${{ secrets.MSGRAPHFS_CLIENT_SECRET }}
run: |
if [ -n "$MSGRAPHFS_CLIENT_ID" ] && [ -n "$MSGRAPHFS_TENANT_ID" ] && [ -n "$MSGRAPHFS_CLIENT_SECRET" ]; then
echo "Running live credential tests..."
uv run pytest tests/ -v -m "live" --tb=short -cov --cov-branch --cov-report=xml
else
echo "Skipping live credential tests - credentials not configured"
echo "no coverage" > .coverage.live
fi
- name: Upload live coverage file
if: always()
uses: actions/upload-artifact@v4
with:
name: coverage-live
path: .coverage.live

merge-coverage:
needs: [test, test-with-credentials]
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"

- name: Install dependencies
run: |
uv sync --all-extras --dev

- name: Download all coverage artifacts
uses: actions/download-artifact@v4
with:
path: coverages

- name: Combine coverage reports
run: |
pip install coverage
cd coverages
find . -name ".coverage.*" -exec mv {} . \;
coverage combine
coverage xml

- name: Upload merged coverage to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: acsone/msgraphfs
Loading
Loading