3838 run : ruff check
3939
4040 test :
41- runs-on : ${{ matrix.os }}
41+ runs-on : ${{ matrix.os.instance }}
4242 needs : build
4343 strategy :
4444 fail-fast : false
@@ -48,15 +48,39 @@ jobs:
4848 # - Install mono via install-package action
4949 # - Update macos images to at least 14 as 13 is retired
5050 # - Update ubuntu images
51- os : [ubuntu-22.04, ubuntu-22.04-arm, windows-latest, macos-13]
51+ os :
52+ - category : windows
53+ platform : x64
54+ instance : windows-latest
55+ suffix : -windows-x86_64-none
56+
57+ - category : ubuntu
58+ platform : x64
59+ instance : ubuntu-22.04
60+ suffix : " "
61+
62+ - category : ubuntu
63+ platform : arm64
64+ instance : ubuntu-22.04-arm
65+ suffix : " "
66+
67+ - category : macos
68+ platform : x64
69+ instance : macos-15
70+ suffix : -macos-x86_64-none
71+
72+ - category : macos
73+ platform : arm64
74+ instance : macos-15
75+ suffix : -macos-aarch64-none
76+
5277 python : ['3.14', '3.13', '3.12', '3.11', '3.10'] # pypy3
5378
5479 steps :
55- - name : Set Environment on macOS
56- uses : maxim-lobanov/setup-xamarin@v1
57- if : ${{ matrix.os.category == 'macos' }}
80+ - name : Install Mono
81+ uses : ./.github/actions/install-mono
5882 with :
59- mono-version : latest
83+ arch : ${{ matrix.os.platform }}
6084
6185 - name : Setup .NET
6286 uses : actions/setup-dotnet@v5
@@ -66,19 +90,10 @@ jobs:
6690 - name : Set up Python ${{ matrix.python }}
6791 uses : astral-sh/setup-uv@v7
6892 with :
69- python-version : ${{ matrix.python }}
70-
71- - name : Cache Mono
72- if : runner.os == 'Windows'
73- uses : actions/cache@v5
74- with :
75- path : ${{ env.TEMP }}\chocolatey
76- key : ${{ runner.os }}-chocolatey-${{ matrix.python == 'pypy3' && '32' || '64' }}
77-
78- - name : Install Mono
79- if : runner.os == 'Windows'
80- run : |
81- choco install -y mono ${{ matrix.python == 'pypy3' && '--x86' || '' }}
93+ python-version : cpython-${{ matrix.python }}${{ matrix.os.suffix }}
94+ cache-python : true
95+ activate-environment : true
96+ enable-cache : true
8297
8398 - uses : actions/checkout@v6
8499
0 commit comments