diff --git a/.github/workflows/wheels-test.sh b/.github/workflows/wheels-test.sh new file mode 100755 index 00000000000..82274415bcd --- /dev/null +++ b/.github/workflows/wheels-test.sh @@ -0,0 +1,42 @@ +EXP_CODECS="jpg jpg_2000 libtiff zlib" +EXP_MODULES="freetype2 littlecms2 pil tkinter webp" +EXP_FEATURES="fribidi harfbuzz libjpeg_turbo raqm transp_webp webp_anim webp_mux xcb" + +if [ -n "$IS_MACOS" ]; then + brew install fribidi + export PKG_CONFIG_PATH="/usr/local/opt/openblas/lib/pkgconfig" +elif [ -n "$IS_ALPINE" ]; then + apk add curl fribidi +else + apt-get update + apt-get install -y curl libfribidi0 libopenblas-dev pkg-config unzip +fi +if [ -z "$IS_ALPINE" ]; then + python3 -m pip install numpy +fi +python3 -m pip install defusedxml olefile pyroma + +curl -fsSL -o pillow-test-images.zip https://github.com/python-pillow/test-images/archive/main.zip +unzip pillow-test-images.zip +mv test-images-main/* Tests/images + +# Runs tests +python3 selftest.py +python3 -m pytest + +# Test against expected codecs, modules and features +codecs=$(python3 -c 'from PIL.features import *; print(" ".join(sorted(get_supported_codecs())))') +if [ "$codecs" != "$EXP_CODECS" ]; then + echo "Codecs should be: '$EXP_CODECS'; but are '$codecs'" + exit 1 +fi +modules=$(python3 -c 'from PIL.features import *; print(" ".join(sorted(get_supported_modules())))') +if [ "$modules" != "$EXP_MODULES" ]; then + echo "Modules should be: '$EXP_MODULES'; but are '$modules'" + exit 1 +fi +features=$(python3 -c 'from PIL.features import *; print(" ".join(sorted(get_supported_features())))') +if [ "$features" != "$EXP_FEATURES" ]; then + echo "Features should be: '$EXP_FEATURES'; but are '$features'" + exit 1 +fi diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index e149b1a68d8..f975a925a1c 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -13,11 +13,8 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest] + os: [ubuntu-latest] archs: [ x86_64 ] - include: - - os: macos-latest - archs: arm64 steps: - uses: actions/checkout@v4 with: diff --git a/pyproject.toml b/pyproject.toml index 6599220ff17..7a9ffebffb5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,6 +71,8 @@ Twitter = "https://twitter.com/PythonPillow" [tool.cibuildwheel] before-all = ".github/workflows/wheels-dependencies.sh" +test-command = "cd {project} && .github/workflows/wheels-test.sh" +test-requires = "pytest pytest-timeout" [tool.setuptools] packages = ["PIL"]