name: Test Windows on: [push, pull_request] jobs: build: runs-on: windows-2016 strategy: matrix: python-version: ["3.6.8"] name: Python ${{ matrix.python-version }} x86 steps: - uses: actions/checkout@v1 - name: Fetch dependencies run: | curl -fsSL -o pillow-depends.zip https://github.com/python-pillow/pillow-depends/archive/master.zip 7z x pillow-depends.zip -oc:\ mv c:\pillow-depends-master c:\pillow-depends xcopy c:\pillow-depends\*.zip $env:GITHUB_WORKSPACE\winbuild\ xcopy c:\pillow-depends\*.tar.gz $env:GITHUB_WORKSPACE\winbuild\ xcopy /s c:\pillow-depends\test_images\* $env:GITHUB_WORKSPACE\tests\images\ cd $env:GITHUB_WORKSPACE/winbuild/ python.exe $env:GITHUB_WORKSPACE\winbuild\build_dep.py # .\build_deps.cmd env: PYTHON: C:\hostedtoolcache\windows\Python\${{ matrix.python-version }}\x86 EXECUTABLE: bin\python.exe shell: pwsh - name: Build dependencies / libjpeg run: | set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\V7.1A\Include set INCLIB=%GITHUB_WORKSPACE%\winbuild\depends\msvcr10-x32 set BUILD=%GITHUB_WORKSPACE%\winbuild\build cd /D %BUILD%\jpeg-9c call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1 echo on nmake -nologo -f makefile.vc setup-vc6 nmake -nologo -f makefile.vc clean nmake -nologo -f makefile.vc nodebug=1 libjpeg.lib copy /Y /B j*.h %INCLIB% copy /Y /B *.lib %INCLIB% - name: Build dependencies / zlib run: | set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\V7.1A\Include set INCLIB=%GITHUB_WORKSPACE%\winbuild\depends\msvcr10-x32 set BUILD=%GITHUB_WORKSPACE%\winbuild\build cd /D %BUILD%\zlib-1.2.11 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1 echo on nmake -nologo -f win32\Makefile.msc clean nmake -nologo -f win32\Makefile.msc zlib.lib copy /Y /B z*.h %INCLIB% copy /Y /B *.lib %INCLIB% copy /Y /B zlib.lib %INCLIB%\z.lib - name: Build dependencies / libtiff run: | set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\V7.1A\Include set INCLIB=%GITHUB_WORKSPACE%\winbuild\depends\msvcr10-x32 set BUILD=%GITHUB_WORKSPACE%\winbuild\build cd /D %BUILD%\tiff-4.0.10 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1 echo on copy %GITHUB_WORKSPACE%\winbuild\nmake.opt nmake.opt nmake -nologo -f makefile.vc clean nmake -nologo -f makefile.vc lib copy /Y /B libtiff\tiff*.h %INCLIB% copy /Y /B libtiff\*.dll %INCLIB% copy /Y /B libtiff\*.lib %INCLIB% - name: Build dependencies / webp run: | set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\V7.1A\Include set INCLIB=%GITHUB_WORKSPACE%\winbuild\depends\msvcr10-x32 set BUILD=%GITHUB_WORKSPACE%\winbuild\build cd /D %BUILD%\libwebp-1.0.3 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1 echo on rmdir /S /Q output\release-static nmake -nologo -f Makefile.vc CFG=release-static RTLIBCFG=static OBJDIR=output ARCH=x86 all mkdir %INCLIB%\webp copy /Y /B src\webp\*.h %INCLIB%\webp copy /Y /B output\release-static\x86\lib\* %INCLIB% - name: Build dependencies / freetype run: | REM Toolkit v100 not available; missing VCTargetsPath; Clean fails set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\V7.1A\Include set INCLIB=%GITHUB_WORKSPACE%\winbuild\depends\msvcr10-x32 set BUILD=%GITHUB_WORKSPACE%\winbuild\build cd /D %BUILD%\freetype-2.10.1 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1 echo on rmdir /S /Q objs set DefaultPlatformToolset=v140 set VCTargetsPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets set MSBUILD="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" %MSBUILD% builds\windows\vc2010\freetype.sln /t:Build /p:Configuration="Release" /p:Platform=Win32 /m xcopy /Y /E /Q include %INCLIB% copy /Y /B objs\Win32\Release\freetype.dll %INCLIB% copy /Y /B objs\Win32\Release\freetype.lib %INCLIB% - name: Build dependencies / lcms2 if: false run: | REM Projects\VC2015\lcms2.sln is not available in lcms2-2.7 set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\V7.1A\Include set INCLIB=%GITHUB_WORKSPACE%\winbuild\depends\msvcr10-x32 set BUILD=%GITHUB_WORKSPACE%\winbuild\build cd /D %BUILD%\lcms2-2.7 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1 echo on rmdir /S /Q Lib rmdir /S /Q Projects\VC2015\Release set VCTargetsPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets set MSBUILD="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" %MSBUILD% Projects\VC2015\lcms2.sln /t:Clean;lcms2_static /p:Configuration="Release" /p:Platform=Win32 /m xcopy /Y /E /Q include %INCLIB% copy /Y /B Lib\MS\*.lib %INCLIB% - name: Build dependencies / openjpeg run: | set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\V7.1A\Include set INCLIB=%GITHUB_WORKSPACE%\winbuild\depends\msvcr10-x32 set BUILD=%GITHUB_WORKSPACE%\winbuild\build cd /D %BUILD%\openjpeg-2.3.1msvcr10-x32 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1 echo on cmake.exe -DBUILD_THIRDPARTY:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=OFF -DCMAKE_BUILD_TYPE=Release -G "NMake Makefiles" . nmake -nologo -f Makefile clean nmake -nologo -f Makefile mkdir %INCLIB%\openjpeg-2.3.1 copy /Y /B src\lib\openjp2\*.h %INCLIB%\openjpeg-2.3.1 copy /Y /B bin\*.lib %INCLIB% - name: Build dependencies / ghostscript if: false run: | REM only used for Python 2.7 in AppVeyor? set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\V7.1A\Include set INCLIB=%GITHUB_WORKSPACE%\winbuild\depends\msvcr10-x32 set BUILD=%GITHUB_WORKSPACE%\winbuild\build cd /D %BUILD%\ghostscript-9.27 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1 echo on set MSVC_VERSION=14 set RCOMP="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\RC.Exe" nmake -nologo -f psi\msvc.mak copy /Y /B bin\ %PYTHON% env: PYTHON: C:\hostedtoolcache\windows\Python\${{ matrix.python-version }}\x86 - name: Build Pillow run: | set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\V7.1A\Include set MPLSRC=%GITHUB_WORKSPACE% set INCLIB=%GITHUB_WORKSPACE%\winbuild\depends\msvcr10-x32 cd /D %GITHUB_WORKSPACE% set DISTUTILS_USE_SDK=1 set LIB=%INCLIB%;%PYTHON%\tcl set INCLUDE=%INCLIB%;%GITHUB_WORKSPACE%\depends\tcl86\include;%INCLUDE% call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1 set BLDOPT=install %PYTHON%\%EXECUTABLE% setup.py build_ext --add-imaging-libs=msvcrt install %PYTHON%\%EXECUTABLE% -c "from PIL import _webp;import os, shutil;shutil.copy(r'%INCLIB%\freetype.dll', os.path.dirname(_webp.__file__));" %PYTHON%\%EXECUTABLE% selftest.py --installed env: PYTHON: C:\hostedtoolcache\windows\Python\${{ matrix.python-version }}\x86 EXECUTABLE: python.exe - name: pip install pytest pytest-cov codecov run: '%PYTHON%\%PIP% install pytest pytest-cov codecov' env: PYTHON: C:\hostedtoolcache\windows\Python\${{ matrix.python-version }}\x86 PIP: Scripts\pip.exe - name: Test Pillow run: | cd /D %GITHUB_WORKSPACE% %PYTHON%\%EXECUTABLE% -m pytest -vx --cov PIL --cov-report term --cov-report xml Tests env: PYTHON: C:\hostedtoolcache\windows\Python\${{ matrix.python-version }}\x86 EXECUTABLE: python.exe - name: Upload coverage run: | cd /D %GITHUB_WORKSPACE% %PYTHON%\%CODECOV% --file coverage.xml --name %PYTHON% env: PYTHON: C:\hostedtoolcache\windows\Python\${{ matrix.python-version }}\x86 CODECOV: Scripts\codecov.exe