name: tests-coverage description: "Run CPU tests with coverage collection and artifact upload" inputs: python-version: description: "Python version to use" required: false default: "3.11" pytorch-dtype: description: "PyTorch data type for testing" required: false default: float32 pytorch-device: description: "PyTorch device for testing" required: false default: cpu pytest-extra: description: "Extra pytest arguments" required: false default: --timeout=30 -k "not test_dynamo" coverage-artifact: description: "Name of coverage artifact" required: false default: coverage continue-on-error: description: "Whether to continue on error" required: false default: "false" runs: using: "composite" steps: - name: Set pixi environment name id: pixi-env shell: bash run: echo "name=py$(echo '${{ inputs.python-version }}' | tr -d '.')" >> $GITHUB_OUTPUT - name: Setup pixi uses: prefix-dev/setup-pixi@v0.8.1 with: pixi-version: v0.40.0 cache: true environments: ${{ steps.pixi-env.outputs.name }} - name: Install dependencies shell: bash run: pixi run -e ${{ steps.pixi-env.outputs.name }} install - name: Run CPU tests coverage ${{ inputs.pytorch-dtype }} continue-on-error: ${{ inputs.continue-on-error == 'true' }} shell: bash run: | pixi run -e ${{ steps.pixi-env.outputs.name }} uv run coverage erase pixi run -e ${{ steps.pixi-env.outputs.name }} uv run coverage run --data-file=${{ inputs.coverage-artifact }} -m pytest -v ./tests/ --device=${{ inputs.pytorch-device }} --dtype=${{ inputs.pytorch-dtype }} ${{ inputs.pytest-extra }} - name: Upload coverage results uses: actions/upload-artifact@v4 with: name: ${{ inputs.coverage-artifact }} path: ${{ inputs.coverage-artifact }} if-no-files-found: error retention-days: 1