name: test on: workflow_dispatch: push: branches: - main pull_request: branches: - "**" paths-ignore: - "docs/**" concurrency: group: build-test-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: test: name: "Unit and Integration Tests" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python id: setup_python uses: actions/setup-python@v4 with: python-version: '3.10' - name: Cache virtual environment uses: actions/cache@v3 with: # TODO: we are hashing requirements.txt but that doesn't contain all # our dependencies pinned. key: venv-${{ runner.os }}-${{ steps.setup_python.outputs.python-version}}-${{ hashFiles('requirements.txt') }} path: .venv - name: Install system packages run: sudo apt-get install -y portaudio19-dev - name: Setup virtual environment run: | python -m venv .venv - name: Install basic Python dependencies run: | source .venv/bin/activate python -m pip install --upgrade pip pip install -r requirements.txt - name: Build project run: | source .venv/bin/activate python -m build - name: Install project and other Python dependencies run: | source .venv/bin/activate pip install --editable . - name: Test with pytest run: | source .venv/bin/activate pip install pytest pytest --doctest-modules --ignore-glob="*to_be_updated*" src tests