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
191 changes: 112 additions & 79 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,79 +1,112 @@
name: CI

on:
push:
branches: [master]
pull_request_target:
branches: [master]

jobs:
test:
name: Test on Python ${{ matrix.python-version }} (beta=${{ matrix.beta }})
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
beta: [false, true]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.22"

- name: Build Go parsers
run: pwsh -File ./build_goparser.ps1
shell: bash

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

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install .[dev]

- name: CLI smoke test
run: |
agent-docstrings --version
if [ "${{ matrix.beta }}" = "true" ]; then
agent-docstrings --beta --version
fi

- name: Run tests with coverage
run: |
pytest --cov=agent_docstrings --cov-report=xml --cov-report=term-missing

- name: Upload coverage artifact
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.python-version }}-${{ matrix.beta }}
path: coverage.xml

report:
name: Report Coverage
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Download all coverage artifacts
uses: actions/download-artifact@v4
with:
path: coverage-artifacts
pattern: coverage-*
merge-multiple: true

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: ./coverage-artifacts/
fail_ci_if_error: false
name: CI

on:
# Run on pull requests into dev or master.
pull_request:
branches: [master, dev]
# After a PR is merged, the merge commit is pushed to master; we still want tests + coverage once on the resulting commit.
push:
branches: [master]

jobs:
test:
# * Runs unit-test matrix:
# - Always on pull_request (dev or master)
# - On push to master (after merge)
if: |
github.event_name == 'pull_request' ||
(github.event_name == 'push' && github.ref == 'refs/heads/master')
name: Test on Python ${{ matrix.python-version }} (beta=${{ matrix.beta }})
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
beta: [false, true]
steps:
- name: Checkout repository
uses: actions/checkout@v4
# For pull_request we check out the PR commit; for push we stay on the pushed ref (master).
with:
ref: ${{ github.event.pull_request.head.sha }}

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.22"

- name: Build Go parsers
run: pwsh -File ./build_goparser.ps1
shell: bash

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

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install .[dev]

- name: CLI smoke test
run: |
agent-docstrings --version
if [ "${{ matrix.beta }}" = "true" ]; then
agent-docstrings --beta --version
fi

- name: Run tests with coverage
run: |
pytest --cov=agent_docstrings --cov-report=xml --cov-report=term-missing

- name: Upload coverage artifact
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.python-version }}-${{ matrix.beta }}
path: coverage.xml

report:
# * Only for master: either in PR to master (so reviewers see comment) or after merge push to master.
if: |
(github.event_name == 'pull_request' && github.base_ref == 'master') ||
(github.event_name == 'push' && github.ref == 'refs/heads/master')
name: Report Coverage
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Download all coverage artifacts
uses: actions/download-artifact@v4
with:
path: coverage-artifacts
pattern: coverage-*
merge-multiple: true

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: ./coverage-artifacts/
fail_ci_if_error: false

check-version:
# * Only on PRs into dev: prevent accidental version bumps.
if: github.event_name == 'pull_request' && github.base_ref == 'dev'
name: Check for accidental version bump
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Verify that version was not bumped
run: |
if ! git diff --quiet origin/dev HEAD -- pyproject.toml; then
echo "::error::Version in pyproject.toml was changed in a PR to dev."
echo "Version bumping should only happen in a release PR to master."
exit 1
fi
echo "Version check passed for pyproject.toml"
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ share/python-wheels/
.installed.cfg
*.egg
MANIFEST
/git_diff.txt
git_diff.txt
temporary/

# PyInstaller
# Usually these files are written by a small stub bootstrap script and should be
Expand Down
Loading
Loading