@@ -38,53 +38,90 @@ jobs:
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
4545 matrix :
46- # macos-13-arm64, windows-11-arm
47- # TODO:
48- # - Install mono via install-package action
49- # - Update macos images to at least 14 as 13 is retired
50- # - Update ubuntu images
51- os : [ubuntu-22.04, ubuntu-22.04-arm, windows-latest, macos-13]
52- python : ['3.14', '3.13', '3.12', '3.11', '3.10'] # pypy3
46+ os :
47+ - category : windows
48+ platform : x64
49+ instance : windows-latest
50+ suffix : -windows-x86_64-none
51+
52+ - category : windows
53+ platform : x86
54+ instance : windows-latest
55+ suffix : -windows-x86-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+
77+ python : ['3.14', '3.13', '3.12', '3.11', '3.10']
78+
79+ exclude :
80+ # Broken ctypes find_library
81+ - os :
82+ category : macos
83+ platform : arm64
84+ python : ' 3.10'
85+ - os :
86+ category : macos
87+ platform : arm64
88+ python : ' 3.11'
89+ - os :
90+ category : macos
91+ platform : arm64
92+ python : ' 3.12'
93+
94+ # Fails to call mono methods
95+ - os :
96+ category : windows
97+ platform : x86
98+ python : ' 3.13'
5399
54100 steps :
55- - name : Set Environment on macOS
56- uses : maxim-lobanov/setup-xamarin@v1
57- if : ${{ matrix.os.category == 'macos' }}
101+ - uses : actions/checkout@v6
102+
103+ - name : Install Mono
104+ uses : ./.github/actions/install-mono
58105 with :
59- mono-version : latest
106+ arch : ${{ matrix.os.platform }}
60107
61108 - name : Setup .NET
62- uses : actions/setup-dotnet@v5
109+ # use most current version until architecture: support is released
110+ uses : actions/setup-dotnet@main
63111 with :
64112 dotnet-version : ' 10.0'
113+ architecture : ${{ matrix.os.platform }}
65114
66115 - name : Set up Python ${{ matrix.python }}
67116 uses : astral-sh/setup-uv@v7
68117 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' || '' }}
82-
83- - uses : actions/checkout@v6
118+ python-version : cpython-${{ matrix.python }}${{ matrix.os.suffix }}
119+ cache-python : true
120+ activate-environment : true
121+ enable-cache : true
84122
85123 - name : Install dependencies
86124 run : |
87- uv venv
88125 uv pip install pytest
89126
90127 - name : Download wheel
@@ -100,7 +137,7 @@ jobs:
100137
101138 - name : Test with pytest
102139 run : |
103- uv run pytest
140+ pytest
104141
105142 deploy :
106143 runs-on : ubuntu-latest
0 commit comments