Skip to content

Avoid duplicate test runs in CI (#295) #364

Avoid duplicate test runs in CI (#295)

Avoid duplicate test runs in CI (#295) #364

Workflow file for this run

name: CI
on: [push, pull_request]
jobs:
test:
strategy:
fail-fast: false
matrix:
os: [macos-14, windows-2022, ubuntu-22.04]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
exclude:
- os: macos-14
python-version: '3.9'
name: Test - ${{ matrix.os }}, ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Fetch all history and metadata
run: |
git checkout -b pr
git branch -f main origin/main
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- run: pip install build
- name: Install wpiformat
run: |
cd wpiformat
python -m build --wheel
pip install dist/*.whl
shell: bash
- run: pip install pytest
- name: Run unit tests
run: |
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
cd wpiformat
pytest
- name: wpiformat - whole repo
run: |
cd wpiformat
python -m wpiformat -v
- name: wpiformat - one file
run: |
cd wpiformat
python -m wpiformat -f wpiformat/__init__.py -v
- name: wpiformat - absolute path to file
shell: bash
run: |
cd wpiformat
python -m wpiformat -f $GITHUB_WORKSPACE/wpiformat/wpiformat/__init__.py -v
- name: wpiformat - multiple files
run: |
cd wpiformat
python -m wpiformat -f wpiformat/__init__.py wpiformat/__main__.py -v
- name: wpiformat - directory
run: |
cd wpiformat
python -m wpiformat -f wpiformat -v
# Verify wpiformat reports an error if no master or main branch exists
- name: Git repo with no branches
shell: bash
run: |
rm -rf branch-test
mkdir branch-test && cd branch-test && git init
if wpiformat; then
exit 1
fi
# Verify wpiformat reports success if "master" exists
- name: Git repo with master branch
shell: bash
run: |
rm -rf branch-test
mkdir branch-test && cd branch-test && git init
git checkout -b master
touch .styleguide
git add .styleguide && git commit -q -m "Initial commit"
wpiformat
# Verify wpiformat reports success if "main" exists
- name: Git repo with main branch
shell: bash
run: |
rm -rf branch-test
mkdir branch-test && cd branch-test && git init
git checkout -b main
touch .styleguide
git add .styleguide && git commit -q -m "Initial commit"
wpiformat
- name: Delete branch-test folder
shell: bash
run: rm -rf branch-test
- name: Ensure formatter made no changes
run: git --no-pager diff --exit-code HEAD
publish:
name: Publish
runs-on: ubuntu-latest
needs: [test]
if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Python dependencies
run: pip install build
- name: Build package
run: python -m build
working-directory: wpiformat
- name: Upload package to PyPi
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages_dir: wpiformat/dist
password: ${{ secrets.PYPI_PASSWORD }}