Fixups #905
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: PyTest PyBoy | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
release: | |
types: [published] | |
jobs: | |
test_cython: | |
name: Cython - Build, Test and Deploy | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, ubuntu-latest, windows-latest] | |
python-version: [3.9, "3.10", 3.11, 3.12, 3.13] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Python dependencies | |
run: | | |
pip install --upgrade pip | |
pip install --upgrade wheel setuptools | |
pip install --prefer-binary -r requirements.txt | |
pip install --prefer-binary -r requirements_tests.txt | |
- name: Doctest | |
if: ${{ !contains(matrix.os, 'windows') }} | |
run: | | |
python -m pytest pyboy/ -n auto | |
- name: Build PyBoy | |
run: | | |
python setup.py build_ext -j $(getconf _NPROCESSORS_ONLN) --inplace | |
- name: Setup Ubuntu - OpenGL dependencies | |
if: ${{ contains(matrix.os, 'ubuntu') }} | |
run: | | |
sudo apt update | |
sudo apt install libopengl0 freeglut3-dev | |
- name: Run PyTest | |
env: | |
PYTEST_SECRETS_KEY: ${{ secrets.PYTEST_SECRETS_KEY }} | |
TEST_VERBOSE_IMAGES: 0 | |
TEST_NO_UI: 1 | |
run: | | |
python -m pytest tests/ -n auto -v | |
- name: Run PyTest Benchmark | |
env: | |
PYTEST_SECRETS_KEY: ${{ secrets.PYTEST_SECRETS_KEY }} | |
TEST_VERBOSE_IMAGES: 0 | |
TEST_NO_UI: 1 | |
run: | | |
python -m pytest tests/test_benchmark.py --benchmark-enable --benchmark-min-rounds=10 | |
- name: Build wheel | |
run: | | |
echo "Building wheel" | |
pip install wheel twine | |
python setup.py sdist bdist_wheel | |
- name: Upload wheel | |
if: ${{ github.event_name == 'release' && github.event.action == 'published' && !github.event.release.prerelease && !contains(matrix.os, 'ubuntu') }} | |
run: | | |
echo "Uploading wheel" | |
python -m twine upload --non-interactive -u '__token__' -p ${{ secrets.PYPI_API_TOKEN }} dist/*.whl | |
echo "Uploading source code" | |
python -m twine upload --non-interactive --skip-existing -u '__token__' -p ${{ secrets.PYPI_API_TOKEN }} dist/*.tar.gz | |
- name: Upload wheel [TEST] | |
if: ${{ github.event_name == 'release' && github.event.action == 'published' && github.event.release.prerelease && !contains(matrix.os, 'ubuntu') }} | |
run: | | |
echo "Uploading wheel" | |
python -m twine upload --repository testpypi --non-interactive -u '__token__' -p ${{ secrets.PYPI_TEST_API_TOKEN }} dist/*.whl | |
echo "Uploading source code" | |
python -m twine upload --repository testpypi --non-interactive --skip-existing -u '__token__' -p ${{ secrets.PYPI_TEST_API_TOKEN }} dist/*.tar.gz | |
test_pypy: | |
name: PyPy - Test | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, ubuntu-latest, windows-latest] | |
python-version: ['pypy-3.9'] # TODO: 'pypy-3.10' | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup macOS | |
if: ${{ contains(matrix.os, 'macos-latest') }} | |
run: | | |
# Fix cryptography build: https://github.com/pyca/cryptography/issues/3489 | |
brew install openssl | |
echo "CPPFLAGS=-I/usr/local/opt/openssl/include" >> $GITHUB_ENV | |
echo "LDFLAGS=-L/usr/local/opt/openssl/lib" >> $GITHUB_ENV | |
- name: Setup Ubuntu - OpenGL dependencies | |
if: ${{ contains(matrix.os, 'ubuntu') }} | |
run: | | |
sudo apt update | |
sudo apt install libopengl0 freeglut3-dev | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install PyPy dependencies | |
run: | | |
pypy3 -m ensurepip | |
pypy3 -m pip install --upgrade pip | |
pypy3 -m pip install wheel | |
pypy3 -m pip install --prefer-binary -r requirements.txt | |
pypy3 -m pip install --prefer-binary -r requirements_tests.txt | |
- name: Doctest | |
if: ${{ !contains(matrix.os, 'windows') }} | |
run: | | |
pypy3 -m pytest pyboy/ -n auto | |
- name: Run PyTest | |
env: | |
PYTEST_SECRETS_KEY: ${{ secrets.PYTEST_SECRETS_KEY }} | |
TEST_VERBOSE_IMAGES: 0 | |
TEST_NO_UI: 1 | |
run: | | |
pypy3 -m pytest tests/ -n auto -v | |
test_manylinux: | |
name: ManyLinux - Build, Test and Deploy | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ['cp39-cp39', 'cp310-cp310', 'cp311-cp311', 'cp312-cp312', 'cp313-cp313'] | |
manylinux-version: ['manylinux_2_28_x86_64', 'musllinux_1_2_x86_64'] # GHA doesn't support manylinux_2_24_aarch64 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Docker Run Action | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: quay.io/pypa/${{ matrix.manylinux-version }}:latest | |
options: -v ${{ github.workspace }}:/work -e GITHUB_REF=${{ github.ref }} --rm | |
run: | | |
set -e | |
echo "Linking Python version ${{ matrix.python-version }}" | |
ln -s "/opt/python/${{ matrix.python-version }}/bin/python3" /usr/local/bin/python | |
if [[ "${{ matrix.manylinux-version }}" == "manylinux_2_28_x86_64" ]]; then | |
dnf install libjpeg-devel -y | |
else | |
apk add libjpeg jpeg-dev libffi | |
python -m ensurepip | |
fi | |
cd /work | |
echo "Starting build" | |
python -m pip install --upgrade pip | |
python -m pip install --upgrade setuptools | |
echo "Starting tests" | |
python -m pip install --prefer-binary -r requirements.txt | |
python setup.py build_ext -j $(getconf _NPROCESSORS_ONLN) --inplace | |
python -m pip install --prefer-binary -r requirements_tests.txt | |
PYTEST_SECRETS_KEY=${{ secrets.PYTEST_SECRETS_KEY }} TEST_CI=1 TEST_NO_UI=1 python -m pytest tests/ -n2 -v | |
echo "Building wheel" | |
python -m pip install wheel | |
python setup.py sdist bdist_wheel | |
python -m pip install auditwheel | |
auditwheel repair dist/*.whl | |
rm -rf dist/*.whl | |
mv wheelhouse/*.whl dist/ | |
chmod 777 -R . # Fix permissions to help cleaning up outside of Docker | |
echo "Dists built:" | |
ls -lah dist/ | |
- name: Set up Python 3.11 (just for PyPi upload) | |
uses: actions/setup-python@v3 | |
with: | |
python-version: 3.11 | |
- name: Upload wheel | |
if: ${{ github.event_name == 'release' && github.event.action == 'published' && !github.event.release.prerelease }} | |
run: | | |
echo "Uploading wheel" | |
pip install twine | |
python -m twine upload --non-interactive -u '__token__' -p ${{ secrets.PYPI_API_TOKEN }} dist/*.whl | |
- name: Upload wheel [TEST] | |
if: ${{ github.event_name == 'release' && github.event.action == 'published' && github.event.release.prerelease }} | |
run: | | |
echo "Uploading wheel" | |
pip install twine | |
python -m twine upload --repository testpypi --non-interactive -u '__token__' -p ${{ secrets.PYPI_TEST_API_TOKEN }} dist/*.whl |