name: Test Cygwin on: push: branches: - "**" paths-ignore: - ".github/workflows/docs.yml" - ".github/workflows/wheels*" - ".gitmodules" - "docs/**" - "wheels/**" pull_request: paths-ignore: - ".github/workflows/docs.yml" - ".github/workflows/wheels*" - ".gitmodules" - "docs/**" - "wheels/**" workflow_dispatch: permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: COVERAGE_CORE: sysmon jobs: build: runs-on: windows-latest strategy: fail-fast: false matrix: python-minor-version: [9] timeout-minutes: 40 name: Python 3.${{ matrix.python-minor-version }} steps: - name: Fix line endings run: | git config --global core.autocrlf input - name: Checkout Pillow uses: actions/checkout@v4 with: persist-credentials: false - name: Install Cygwin uses: cygwin/cygwin-install-action@v4 with: packages: > gcc-g++ ghostscript git ImageMagick jpeg libfreetype-devel libimagequant-devel libjpeg-devel liblapack-devel liblcms2-devel libopenjp2-devel libraqm-devel libtiff-devel libwebp-devel libxcb-devel libxcb-xinerama0 make netpbm perl python3${{ matrix.python-minor-version }}-cython python3${{ matrix.python-minor-version }}-devel python3${{ matrix.python-minor-version }}-ipython python3${{ matrix.python-minor-version }}-numpy python3${{ matrix.python-minor-version }}-sip python3${{ matrix.python-minor-version }}-tkinter wget xorg-server-extra zlib-devel - name: Add Lapack to PATH uses: egor-tensin/cleanup-path@v4 with: dirs: 'C:\cygwin\bin;C:\cygwin\lib\lapack' - name: Select Python version run: | ln -sf c:/cygwin/bin/python3.${{ matrix.python-minor-version }} c:/cygwin/bin/python3 - name: pip cache uses: actions/cache@v4 with: path: 'C:\cygwin\home\runneradmin\.cache\pip' key: ${{ runner.os }}-cygwin-pip3.${{ matrix.python-minor-version }}-${{ hashFiles('.ci/install.sh') }} restore-keys: | ${{ runner.os }}-cygwin-pip3.${{ matrix.python-minor-version }}- - name: Build system information run: | dash.exe -c "python3 .github/workflows/system-info.py" - name: Install dependencies run: | bash.exe .ci/install.sh - name: Build shell: bash.exe -eo pipefail -o igncr "{0}" run: | .ci/build.sh - name: Test run: | bash.exe xvfb-run -s '-screen 0 1024x768x24' .ci/test.sh - name: Prepare to upload errors if: failure() run: | dash.exe -c "mkdir -p Tests/errors" - name: Upload errors uses: actions/upload-artifact@v4 if: failure() with: name: errors path: Tests/errors - name: After success run: | bash.exe .ci/after_success.sh rm C:\cygwin\bin\bash.EXE - name: Upload coverage uses: codecov/codecov-action@v5 with: files: ./coverage.xml flags: GHA_Cygwin name: Cygwin Python 3.${{ matrix.python-minor-version }} token: ${{ secrets.CODECOV_ORG_TOKEN }} success: permissions: contents: none needs: build runs-on: ubuntu-latest name: Cygwin Test Successful steps: - name: Success run: echo Cygwin Test Successful