Re-enable Android tests in CIBW workflow (#6001)
* Re-enable Android tests in CIBW workflow
* Skip subprocess tests on Android
* Remove Android workarounds no longer necessary with current cibuildwheel version
* Skip more subprocess tests on Android
diff --git a/.github/workflows/tests-cibw.yml b/.github/workflows/tests-cibw.yml
index 5dfb5dc..bf53431 100644
--- a/.github/workflows/tests-cibw.yml
+++ b/.github/workflows/tests-cibw.yml
@@ -70,24 +70,6 @@
if: contains(matrix.runs-on, 'macos')
run: echo "CIBW_TEST_COMMAND=" >> "$GITHUB_ENV"
- # Temporarily disable Android tests on ubuntu-latest due to emulator issues.
- # See https://github.com/pybind/pybind11/pull/5914.
- - name: "NOTE: Android tests are disabled on ubuntu-latest"
- if: contains(matrix.runs-on, 'ubuntu')
- run: |
- echo "CIBW_TEST_COMMAND=" >> "$GITHUB_ENV"
- echo '::warning::Android cibuildwheel tests are disabled on ubuntu-latest (CIBW_TEST_COMMAND is empty). See PR 5914.'
-
- # https://github.blog/changelog/2024-04-02-github-actions-hardware-accelerated-android-virtualization-now-available/
- - name: Enable KVM for Android emulator
- if: contains(matrix.runs-on, 'ubuntu')
- run: |
- echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
- sudo udevadm control --reload-rules
- sudo udevadm trigger --name-match=kvm
-
- - run: pipx install patchelf
-
- uses: pypa/cibuildwheel@v3.3
env:
CIBW_PLATFORM: android
diff --git a/tests/env.py b/tests/env.py
index 790a010..12acde7 100644
--- a/tests/env.py
+++ b/tests/env.py
@@ -4,6 +4,8 @@
import sys
import sysconfig
+import pytest
+
ANDROID = sys.platform.startswith("android")
IOS = sys.platform.startswith("ios")
LINUX = sys.platform.startswith("linux")
@@ -50,6 +52,9 @@
import sys
import textwrap
+ if ANDROID or IOS or sys.platform.startswith("emscripten"):
+ pytest.skip("Requires subprocess support")
+
code = textwrap.dedent(code).strip()
try:
for _ in range(rerun): # run flakily failing test multiple times
diff --git a/tests/test_custom_type_setup.py b/tests/test_custom_type_setup.py
index 4c6b951..a200b02 100644
--- a/tests/test_custom_type_setup.py
+++ b/tests/test_custom_type_setup.py
@@ -2,7 +2,6 @@
import gc
import os
-import sys
import weakref
import pytest
@@ -52,10 +51,6 @@
gc_tester(obj)
-@pytest.mark.skipif(
- env.IOS or sys.platform.startswith("emscripten"),
- reason="Requires subprocess support",
-)
@pytest.mark.skipif("env.PYPY or env.GRAALPY")
def test_py_cast_useable_on_shutdown():
"""Test that py::cast works during interpreter shutdown.
diff --git a/tests/test_gil_scoped.py b/tests/test_gil_scoped.py
index 84a7a99..fc998b0 100644
--- a/tests/test_gil_scoped.py
+++ b/tests/test_gil_scoped.py
@@ -168,6 +168,9 @@
def _run_in_process(target, *args, **kwargs):
+ if env.ANDROID or env.IOS or sys.platform.startswith("emscripten"):
+ pytest.skip("Requires subprocess support")
+
test_fn = target if len(args) == 0 else args[0]
# Do not need to wait much, 10s should be more than enough.
timeout = 0.1 if test_fn is _intentional_deadlock else 10