This commit is contained in:
Hugo van Kemenade 2026-01-28 01:05:02 +01:00 committed by GitHub
commit d32ceb70fb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 19 additions and 25 deletions

View File

@ -2,6 +2,5 @@
set -e
python3 -m coverage erase
make clean
make install-coverage

View File

@ -24,14 +24,7 @@ sudo apt-get -qq install libfreetype6-dev liblcms2-dev libtiff-dev python3-tk\
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade wheel
python3 -m pip install coverage
python3 -m pip install defusedxml
python3 -m pip install ipython
python3 -m pip install olefile
python3 -m pip install -U pytest
python3 -m pip install -U pytest-cov
python3 -m pip install -U pytest-timeout
python3 -m pip install pyroma
# optional test dependencies, only install if there's a binary package.
python3 -m pip install --only-binary=:all: numpy || true
python3 -m pip install --only-binary=:all: pyarrow || true

View File

@ -4,4 +4,4 @@ set -e
python3 -c "from PIL import Image"
python3 -bb -m pytest -vv -x -W always --cov PIL --cov Tests --cov-report term --cov-report xml Tests $REVERSE
python3 -bb -m pytest -vv -x -W always --cov PIL --cov Tests --cov-report term --cov-report xml Tests

View File

@ -78,7 +78,7 @@ jobs:
pushd depends && ./install_extra_test_images.sh && popd
- name: Build Pillow
run: CFLAGS="-coverage" python3 -m pip install .
run: CFLAGS="-coverage" python3 -m pip install .[tests]
- name: Test Pillow
run: |

View File

@ -56,5 +56,10 @@ jobs:
run: |
# The Pillow user in the docker container is UID 1001
sudo chown -R 1001 $GITHUB_WORKSPACE
docker run --name pillow_container -e "PILLOW_VALGRIND_TEST=true" -v $GITHUB_WORKSPACE:/Pillow pythonpillow/${{ matrix.docker }}:${{ matrix.dockerTag }} /Pillow/depends/docker-test-valgrind-memory.sh
docker run --name pillow_container \
-e "PILLOW_VALGRIND_TEST=true" \
-e "PYTEST_ADDOPTS=-n0" \
-v $GITHUB_WORKSPACE:/Pillow \
pythonpillow/${{ matrix.docker }}:${{ matrix.dockerTag }} \
bash -c "python3 -m pip install pytest-xdist && /Pillow/depends/docker-test-valgrind-memory.sh"
sudo chown -R runner $GITHUB_WORKSPACE

View File

@ -54,5 +54,9 @@ jobs:
run: |
# The Pillow user in the docker container is UID 1001
sudo chown -R 1001 $GITHUB_WORKSPACE
docker run --name pillow_container -e "PILLOW_VALGRIND_TEST=true" -v $GITHUB_WORKSPACE:/Pillow pythonpillow/${{ matrix.docker }}:${{ matrix.dockerTag }}
docker run --name pillow_container \
-e "PILLOW_VALGRIND_TEST=true" \
-e "PYTEST_ADDOPTS=-n0" \
-v $GITHUB_WORKSPACE:/Pillow \
pythonpillow/${{ matrix.docker }}:${{ matrix.dockerTag }}
sudo chown -R runner $GITHUB_WORKSPACE

View File

@ -53,7 +53,7 @@ jobs:
"3.10",
]
include:
- { python-version: "3.12", PYTHONOPTIMIZE: 1, REVERSE: "--reverse" }
- { python-version: "3.12", PYTHONOPTIMIZE: 1 }
- { python-version: "3.11", PYTHONOPTIMIZE: 2 }
# Free-threaded
- { python-version: "3.15t", disable-gil: true }
@ -123,9 +123,6 @@ jobs:
- name: Test
run: |
if [ $REVERSE ]; then
python3 -m pip install pytest-reverse
fi
if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
xvfb-run -s '-screen 0 1024x768x24' sway&
export WAYLAND_DISPLAY=wayland-1
@ -135,7 +132,6 @@ jobs:
fi
env:
PYTHONOPTIMIZE: ${{ matrix.PYTHONOPTIMIZE }}
REVERSE: ${{ matrix.REVERSE }}
- name: Prepare to upload errors
if: failure()

View File

@ -62,7 +62,7 @@ install:
.PHONY: install-coverage
install-coverage:
CFLAGS="-coverage -Werror=implicit-function-declaration" python3 -m pip -v install .
CFLAGS="-coverage -Werror=implicit-function-declaration" python3 -m pip -v install .[tests]
python3 selftest.py
.PHONY: debug
@ -97,12 +97,6 @@ test:
python3 -c "import pytest" > /dev/null 2>&1 || python3 -m pip install pytest
python3 -m pytest -qq
.PHONY: test-p
test-p:
python3 -c "import xdist" > /dev/null 2>&1 || python3 -m pip install pytest-xdist
python3 -m pytest -qq -n auto
.PHONY: valgrind
valgrind:
python3 -c "import pytest_valgrind" > /dev/null 2>&1 || python3 -m pip install pytest-valgrind

View File

@ -770,6 +770,7 @@ class TestAvifAnimation:
MAX_THREADS = os.cpu_count() or 1
@pytest.mark.xdist_group(name="leak-group")
@skip_unless_feature("avif")
class TestAvifLeaks(PillowLeakTestCase):
mem_limit = MAX_THREADS * 3 * 1024

View File

@ -12,6 +12,7 @@ from PIL import Image, ImageGrab
from .helper import assert_image_equal_tofile, skip_unless_feature
@pytest.mark.xdist_group(name="imagegrab-group")
class TestImageGrab:
@pytest.mark.skipif(
os.environ.get("USERNAME") == "ContainerAdministrator",

View File

@ -73,6 +73,7 @@ optional-dependencies.tests = [
"pyroma>=5",
"pytest",
"pytest-cov",
"pytest-sugar",
"pytest-timeout",
"pytest-xdist",
"trove-classifiers>=2024.10.12",
@ -208,7 +209,7 @@ lint.isort.required-imports = [
max_supported_python = "3.14"
[tool.pytest.ini_options]
addopts = "-ra --color=auto"
addopts = "-ra --color=auto --numprocesses=auto --dist=loadgroup"
testpaths = [
"Tests",
]