|
name: Main |
|
|
|
on: |
|
push: |
|
branches: |
|
- master |
|
pull_request: |
|
|
|
jobs: |
|
build-test: |
|
name: Build and Test |
|
runs-on: ${{ matrix.os.instance }} |
|
timeout-minutes: 30 |
|
|
|
strategy: |
|
fail-fast: false |
|
matrix: |
|
os: |
|
- category: windows |
|
platform: x86 |
|
instance: windows-latest |
|
suffix: -windows-x86-none |
|
|
|
- category: windows |
|
platform: x64 |
|
instance: windows-latest |
|
suffix: -windows-x86_64-none |
|
|
|
- category: ubuntu |
|
platform: x64 |
|
instance: ubuntu-22.04 |
|
suffix: "" |
|
|
|
- category: ubuntu |
|
platform: arm64 |
|
instance: ubuntu-22.04-arm |
|
suffix: "" |
|
|
|
- category: macos |
|
platform: x64 |
|
instance: macos-15 |
|
suffix: -macos-x86_64-none |
|
|
|
- category: macos |
|
platform: arm64 |
|
instance: macos-15 |
|
suffix: -macos-aarch64-none |
|
|
|
python: ["3.10", "3.11", "3.12", "3.13", "3.14"] |
|
|
|
exclude: |
|
# Fails with initfs_encoding error |
|
- os: |
|
category: windows |
|
platform: x86 |
|
python: "3.10" |
|
|
|
# Fails to find pytest |
|
- os: |
|
category: windows |
|
platform: x64 |
|
python: '3.10' |
|
|
|
# fails to call mono methods |
|
- os: |
|
category: windows |
|
platform: x86 |
|
python: '3.13' |
|
|
|
env: |
|
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages |
|
steps: |
|
- name: Checkout code |
|
uses: actions/checkout@v6 |
|
|
|
# Use main until support for architecture lands |
|
- name: Setup .NET |
|
uses: actions/setup-dotnet@main |
|
with: |
|
dotnet-version: '10.0' |
|
architecture: ${{ matrix.os.platform }} |
|
|
|
- run: dotnet restore |
|
|
|
- name: Install Mono |
|
uses: pythonnet/clr-loader/.github/actions/install-mono@main |
|
with: |
|
arch: ${{ matrix.os.platform }} |
|
|
|
- name: Set up Python ${{ matrix.python }} |
|
uses: astral-sh/setup-uv@v7 |
|
with: |
|
python-version: cpython-${{ matrix.python }}${{ matrix.os.suffix }} |
|
cache-python: true |
|
activate-environment: true |
|
enable-cache: true |
|
|
|
- name: Synchronize the virtual environment |
|
run: uv sync --managed-python |
|
|
|
- name: Embedding tests (Mono/.NET Framework) |
|
if: always() |
|
run: dotnet test --runtime any-${{ matrix.os.platform }} --framework net472 --logger "console;verbosity=detailed" src/embed_tests/ |
|
env: |
|
MONO_THREADS_SUSPEND: preemptive # https://github.com/mono/mono/issues/21466 |
|
|
|
- name: Embedding tests (.NET Core) |
|
if: always() |
|
run: dotnet test --runtime any-${{ matrix.os.platform }} --framework net10.0 --logger "console;verbosity=detailed" src/embed_tests/ |
|
|
|
- name: Python Tests (.NET Core) |
|
if: always() |
|
run: pytest --runtime coreclr |
|
|
|
- name: Python Tests (Mono) |
|
if: always() |
|
run: pytest --runtime mono |
|
|
|
- name: Python Tests (.NET Framework) |
|
if: ${{ matrix.os.category == 'windows' }} |
|
run: pytest --runtime netfx |
|
|
|
- name: Python tests run from .NET |
|
run: dotnet test --runtime any-${{ matrix.os.platform }} src/python_tests_runner/ |