28
28
- ' x86_64'
29
29
# NOTE: Required for building the distribution artifact
30
30
- ' universal2'
31
+ run_macos_asan_tests :
32
+ description : ' Run macOS Address Sanitizer tests'
33
+ required : false
34
+ default : false
35
+ type : boolean
31
36
show_notarization_log :
32
37
description : ' Show notarization log for macOS'
33
38
required : false
49
54
# because segfaults more common on macOS
50
55
jobs :
51
56
57
+ # CAUTION: macOS runners cost 10x a Linux runner and 5x a Windows runner.
58
+ # Keep the matrix small to avoid high costs.
52
59
build-macos-asan :
60
+ # Only run this expensive job when explicitly requested or when building distribution artifacts
61
+ if : ${{ github.event.inputs.run_macos_asan_tests == 'true' || github.event.inputs.build_dist_artifact == 'true' }}
53
62
strategy :
54
63
matrix :
55
- # NOTE: Test lots of Python versions to look for segfaults
56
64
python-version :
57
65
- " 3.11.9"
58
66
fail-fast : false
@@ -125,6 +133,8 @@ jobs:
125
133
run : |
126
134
crystal --test ${TEST_NAMES}
127
135
136
+ # CAUTION: macOS runners cost 10x a Linux runner and 5x a Windows runner.
137
+ # Keep the matrix small to avoid high costs.
128
138
build-macos :
129
139
strategy :
130
140
matrix :
@@ -136,16 +146,7 @@ jobs:
136
146
# - macos-15 # ARM-based
137
147
# Test the earliest supported Python version only
138
148
python-version :
139
- # Test earliest to latest Python versions supported by Crystal,
140
- # on at least one OS.
141
- #
142
- # NOTE: Testing all Python versions on Linux would be faster
143
- # than on macOS because Linux runners are faster than
144
- # every other OS. However macOS is the second fastest OS,
145
- # and doesn't require precompiled wxPython .wgn files.
146
149
- " 3.11.9"
147
- - " 3.12.9"
148
- - " 3.13.5"
149
150
fail-fast : false
150
151
runs-on : ${{ matrix.os }}
151
152
timeout-minutes : 31 # 150% of normal time: 21 min, as of 2025-07-21
@@ -465,7 +466,16 @@ jobs:
465
466
# NOTE: Earliest Windows supported by Crystal is Windows 11 (from the README)
466
467
- windows-2025 # based on Windows 11 version 24H2 (Germanium)
467
468
python-version :
469
+ # Test earliest to latest Python versions supported by Crystal,
470
+ # on at least one OS.
471
+ #
472
+ # NOTE: Testing all Python versions on Linux would be faster
473
+ # than on Windows because Linux runners are faster than
474
+ # every other OS. However Windows is the second fastest OS,
475
+ # and doesn't require precompiled wxPython .wgn files.
468
476
- " 3.11.9"
477
+ - " 3.12.9"
478
+ - " 3.13.5"
469
479
fail-fast : false
470
480
runs-on : ${{ matrix.os }}
471
481
timeout-minutes : 43 # 150% of normal time: 29 min, as of 2025-07-21
0 commit comments