| name: test |
|
|
| on: |
| workflow_call: |
| inputs: |
| working-directory: |
| required: true |
| type: string |
| description: "From which folder this pipeline executes" |
| python-version: |
| required: true |
| type: string |
| description: "Python version to use" |
|
|
| env: |
| UV_FROZEN: "true" |
| UV_NO_SYNC: "true" |
|
|
| jobs: |
| build: |
| defaults: |
| run: |
| working-directory: ${{ inputs.working-directory }} |
| runs-on: ubuntu-latest |
| timeout-minutes: 20 |
| name: "make test #${{ inputs.python-version }}" |
| steps: |
| - uses: actions/checkout@v4 |
|
|
| - name: Set up Python ${{ inputs.python-version }} + uv |
| uses: "./.github/actions/uv_setup" |
| id: setup-python |
| with: |
| python-version: ${{ inputs.python-version }} |
| - name: Install dependencies |
| shell: bash |
| run: uv sync --group test --dev |
|
|
| - name: Run core tests |
| shell: bash |
| run: | |
| make test |
| |
| - name: Get minimum versions |
| working-directory: ${{ inputs.working-directory }} |
| id: min-version |
| shell: bash |
| run: | |
| VIRTUAL_ENV=.venv uv pip install packaging tomli requests |
| python_version="$(uv run python --version | awk '{print $2}')" |
| min_versions="$(uv run python $GITHUB_WORKSPACE/.github/scripts/get_min_versions.py pyproject.toml pull_request $python_version)" |
| echo "min-versions=$min_versions" >> "$GITHUB_OUTPUT" |
| echo "min-versions=$min_versions" |
| |
| - name: Run unit tests with minimum dependency versions |
| if: ${{ steps.min-version.outputs.min-versions != '' }} |
| env: |
| MIN_VERSIONS: ${{ steps.min-version.outputs.min-versions }} |
| run: | |
| VIRTUAL_ENV=.venv uv pip install $MIN_VERSIONS |
| make tests |
| working-directory: ${{ inputs.working-directory }} |
|
|
| - name: Ensure the tests did not create any additional files |
| shell: bash |
| run: | |
| set -eu |
| |
| STATUS="$(git status)" |
| echo "$STATUS" |
|
|
| |
| |
| echo "$STATUS" | grep 'nothing to commit, working tree clean' |
| |
|
|