Skip to content

set shell to bash in pytest #560

set shell to bash in pytest

set shell to bash in pytest #560

# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Python package
on:
push:
branches: [main, dev-0.6.X, dev-0.5.X, dev-0.4.X]
pull_request:
branches: [main, dev-0.6.X, dev-0.5.X, dev-0.4.X]
schedule:
- cron: '0 0 * * 0'
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-14, macos-15, macos-26, ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip Cython
python -m pip install -r requirements-dev.txt
python -m pip install -e .
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
shell: bash
continue-on-error: ${{ startsWith(matrix.os, 'windows') &&
(matrix.python-version == '3.13' || matrix.python-version == '3.14')}}
run: |
pytest --disable-warnings -p no:warnings test --cov=aspired --cov-report=xml --cov-report=term --cov-config=setup.cfg --cov-branch
ls -la
cp .coverage .coverage_${{ matrix.os }}_${{ matrix.python-version }}
ls -la
- name: Upload coverage data
uses: actions/upload-artifact@v4
with:
name: coverage-data-${{ matrix.os }}-${{ matrix.python-version }}
path: .coverage_${{ matrix.os }}_${{ matrix.python-version }}
- name: Coveralls
if: startsWith(matrix.os, 'ubuntu') && endsWith(matrix.python-version, '3.14')
uses: coverallsapp/github-action@v2
with:
format: cobertura
file: coverage.xml
parallel: true
flag-name: Unit Test
upload_pypi:
if: github.event_name == 'push'
runs-on: ubuntu-latest
permissions:
id-token: write
# or, alternatively, upload to PyPI on every tag starting with 'v' (remove on: release above to use this)
# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.x'
- name: build wheel
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine
pip install -r requirements.txt
pip install -e .
python setup.py sdist bdist_wheel
- uses: actions/download-artifact@v4
with:
# unpacks all CIBW artifacts into dist/
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
skip-existing: true
coveralls_finish:
needs: build
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: AndreMiras/coveralls-python-action@develop
with:
parallel-finished: true
coverage_combine:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install coverage
run: |
python -m pip install --upgrade pip
pip install coverage
- name: Download coverage artifacts
uses: actions/download-artifact@v4
with:
name: coverage-data
path: coverage-data
- name: Combine coverage
run: |
ls -la coverage-data
coverage combine coverage-data/.coverage.*
coverage xml
coverage report
- name: Run codacy-coverage-reporter
uses: codacy/codacy-coverage-reporter-action@v1.3.0
with:
api-token: ${{ secrets.CODACY_API_TOKEN }}
coverage-reports: coverage.xml