feat: add configuration option for test executor arguments (#2636)

* Add test-execution-args option.

* Add usage of test-execution-args.

* Add CI configuration to use test-execution-args.

* Document the test-execution-args setting.

* Simplify code using or syntax instead of inline if.

Co-authored-by: Malcolm Smith <smith@chaquo.com>

* Clarified some Android-specific terminology, and added details about the default args to the test runner.

* Switch to a dict-based test-execution configuration

* Add tests for test-execution parsing.

* Add all the files before pushing...

* Add note about default Android version for testbed.

* Improve description of test-execution setting.

Co-authored-by: Joe Rickerby <joerick@mac.com>

* Switch to using test-runtime.

---------

Co-authored-by: Malcolm Smith <smith@chaquo.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
This commit is contained in:
Russell Keith-Magee
2025-11-05 16:19:41 -05:00
committed by GitHub
co-authored by Malcolm Smith Joe Rickerby
parent c53e541c2d
commit 4fe7630d9c
11 changed files with 231 additions and 8 deletions
+35
View File
@@ -1672,6 +1672,41 @@ Platform-specific environment variables are also available:<br/>
CIBW_TEST_ENVIRONMENT: PYTHONSAFEPATH=1
```
### `test-runtime` {: #test-runtime toml env-var }
> Controls how the tests will be executed.
On desktop environments, the tests are executed on the same machine/container as the wheel was built. However on Android and iOS, the tests are run inside a virtual machine a simulator or emulator representing the target.
For these embedded platforms, a testbed project is used to run the tests. The `test-runtime` setting can define an `args` key that defines additional arguments that will be used when starting the testbed project.
Platform-specific environment variables are also available:<br/>
`CIBW_TEST_RUNTIME_ANDROID` |`CIBW_TEST_RUNTIME_IOS`
#### Examples
!!! tab examples "pyproject.toml"
```toml
[tool.cibuildwheel.ios]
# Run the tests on an iPhone 16e simulator running iOS 18.5.
test-runtime = { args = ["--simulator='iPhone 16e,OS=18.5'"] }
[tool.cibuildwheel.android]
# Run the Android tests on the minimum supported Android version.
test-runtime = { args = ["--managed", "minVersion"] }
```
!!! tab examples "Environment variables"
```yaml
# Run the tests on an iPhone 16e simulator running iOS 18.5.
CIBW_TEST_RUNTIME_IOS: "args: --simulator='iPhone 16e,OS=18.5'"
# Run the Android tests on the minimum supported Android version.
CIBW_TEST_RUNTIME_ANDROID: "args: --managed minVersion"
```
## Debugging