Skip to content

Commit b59ff43

Browse files
committed
Remove the amount of macos based tests in os-check
Reduce the number of tests running on macos in os-check.yml to the minimum required number to cover all mac os specific features. All other platform-agnostic configs and setups are only tested on Linux, which is much faster in GitHub CI.
1 parent 1c9555c commit b59ff43

1 file changed

Lines changed: 62 additions & 38 deletions

File tree

.github/workflows/os-check.yml

Lines changed: 62 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,13 @@ concurrency:
1313
# END OF COMMON SECTION
1414

1515
jobs:
16-
# Configs that interact with platform-specific features (sys-ca-certs,
17-
# Apple Security.framework, OpenSSL compat layer, networking).
18-
# Run on both Ubuntu and macOS.
19-
make_check:
16+
# Ubuntu config matrix. macOS is covered separately by make_check_macos
17+
# below with a curated subset; configs here either have equivalent macOS
18+
# coverage there or exercise no Darwin-specific code.
19+
make_check_linux:
2020
strategy:
2121
fail-fast: false
2222
matrix:
23-
os: [ ubuntu-24.04, macos-latest ]
2423
config: [
2524
# Add new configs here
2625
'',
@@ -89,26 +88,6 @@ jobs:
8988
'--enable-ocsp --enable-ocsp-responder --enable-ocspstapling CPPFLAGS="-DWOLFSSL_NONBLOCK_OCSP" --enable-maxfragment',
9089
'--enable-all CPPFLAGS=-DWOLFSSL_HASH_KEEP',
9190
'--enable-all --enable-writedup',
92-
]
93-
name: make check
94-
if: github.repository_owner == 'wolfssl'
95-
runs-on: ${{ matrix.os }}
96-
# This should be a safe limit for the tests to run.
97-
timeout-minutes: 14
98-
steps:
99-
- name: Build and test wolfSSL
100-
uses: wolfSSL/actions-build-autotools-project@v1
101-
with:
102-
configure: CFLAGS="-pedantic -Wdeclaration-after-statement -Wnull-dereference -Wno-overlength-strings -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" ${{ matrix.config }}
103-
check: true
104-
105-
# Platform-agnostic configs: pure crypto algorithms, preprocessor guards,
106-
# or features with no macOS-specific code paths. Linux only.
107-
make_check_linux:
108-
strategy:
109-
fail-fast: false
110-
matrix:
111-
config: [
11291
'--enable-ascon --enable-experimental',
11392
'--enable-ascon CPPFLAGS=-DWOLFSSL_ASCON_UNROLL --enable-experimental',
11493
# PKCS#7 with RSA-PSS (CMS RSASSA-PSS signers)
@@ -130,7 +109,7 @@ jobs:
130109
'--enable-curve25519=nonblock --enable-ecc=nonblock --enable-sp=yes,nonblock CPPFLAGS="-DWOLFSSL_PUBLIC_MP -DWOLFSSL_DEBUG_NONBLOCK"',
131110
'--enable-certreq --enable-certext --enable-certgen --disable-secure-renegotiation-info CPPFLAGS="-DNO_TLS"',
132111
]
133-
name: make check (Linux only)
112+
name: make check linux
134113
if: github.repository_owner == 'wolfssl'
135114
runs-on: ubuntu-24.04
136115
# This should be a safe limit for the tests to run.
@@ -142,6 +121,55 @@ jobs:
142121
configure: CFLAGS="-pedantic -Wdeclaration-after-statement -Wnull-dereference -Wno-overlength-strings -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" ${{ matrix.config }}
143122
check: true
144123

124+
# Curated macOS subset. Each config exists for a Darwin-specific reason;
125+
# do not add entries that only re-test platform-agnostic crypto already
126+
# covered by the corresponding Linux run.
127+
make_check_macos:
128+
strategy:
129+
fail-fast: false
130+
matrix:
131+
config: [
132+
# Default build: --enable-sys-ca-certs is auto-on on macOS, so
133+
# this exercises Apple keychain / system trust loading in
134+
# src/ssl_load.c that has no Linux equivalent.
135+
'',
136+
# Broad key-crypto + Security.framework + opensslextra in one run
137+
# (RSA, ECC, AES, SHA-2/3, ChaCha20-Poly1305, Curve25519/448, HMAC,
138+
# sniffer, DTLS, OCSP, ...). Note: --enable-all does NOT enable
139+
# cryptocb or SHE, so those have their own entries below.
140+
'--enable-all --enable-asn=template',
141+
# Validates the configure-time auto-enable override and that the
142+
# build compiles out the Security.framework code path cleanly --
143+
# macOS is the only OS where sys-ca-certs is auto-on by default.
144+
'--disable-sys-ca-certs',
145+
# DTLS over BSD sockets on Darwin: connection-ID, fragmented
146+
# ClientHello, secure renegotiation, PSK, AES-CCM, null cipher --
147+
# exercises recvmsg/MTU/datagram handling that differs from Linux.
148+
'--enable-dtls --enable-dtlscid --enable-dtls13 --enable-secure-renegotiation
149+
--enable-psk --enable-aesccm --enable-nullcipher
150+
CPPFLAGS=-DWOLFSSL_STATIC_RSA',
151+
# Crypto-callback dispatcher under Apple clang. Not covered by
152+
# --enable-all; verifies the cryptocb find/setkey/keygen path
153+
# compiles and runs on the macOS toolchain.
154+
'--enable-cryptocb --enable-keygen --enable-cryptocbutils=setkey',
155+
]
156+
name: make check macos
157+
if: github.repository_owner == 'wolfssl'
158+
runs-on: macos-latest
159+
# This should be a safe limit for the tests to run.
160+
timeout-minutes: 14
161+
steps:
162+
- name: Build and test wolfSSL
163+
uses: wolfSSL/actions-build-autotools-project@v1
164+
with:
165+
configure: CFLAGS="-pedantic -Wdeclaration-after-statement -Wnull-dereference -Wno-overlength-strings -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" ${{ matrix.config }}
166+
check: true
167+
168+
# Run on both OSes: the user_settings.h header-driven build path is
169+
# distinct from the autotools-driven --enable-all path in
170+
# make_check_linux / make_check_macos, and macOS-specific guard ordering
171+
# (e.g. WOLFSSL_SYS_CA_CERTS pulling in Security.framework) needs to be
172+
# exercised under Apple clang here.
145173
make_user_settings:
146174
strategy:
147175
fail-fast: false
@@ -165,12 +193,11 @@ jobs:
165193
user-settings: ${{ matrix.user-settings }}
166194

167195
make_user_settings_testwolfcrypt:
196+
# testwolfcrypt runs pure crypto tests with no platform-specific
197+
# features, so Linux-only is sufficient for these user_settings.
168198
strategy:
169199
fail-fast: false
170200
matrix:
171-
# testwolfcrypt runs pure crypto tests with no platform-specific
172-
# features, so Linux-only is sufficient for these user_settings.
173-
os: [ ubuntu-24.04 ]
174201
user-settings: [
175202
# Add new user_settings.h here (alphabetical order)
176203
'examples/configs/user_settings_ca.h',
@@ -194,7 +221,7 @@ jobs:
194221
]
195222
name: make user_setting.h (testwolfcrypt only)
196223
if: github.repository_owner == 'wolfssl'
197-
runs-on: ${{ matrix.os }}
224+
runs-on: ubuntu-24.04
198225
# This should be a safe limit for the tests to run.
199226
timeout-minutes: 14
200227
steps:
@@ -208,21 +235,18 @@ jobs:
208235
- name: Run wolfcrypt/test/testwolfcrypt
209236
run: ./wolfcrypt/test/testwolfcrypt
210237

211-
# Has to be dedicated function due to the sed call
238+
# Has to be dedicated function due to the sed call.
239+
# Platform-agnostic; --enable-all macOS coverage in make_check_macos and
240+
# the macOS user_settings_all.h run in make_user_settings already cover
241+
# the equivalent code paths on Darwin.
212242
make_user_all:
213-
strategy:
214-
fail-fast: false
215-
matrix:
216-
os: [ ubuntu-24.04, macos-latest ]
217243
name: make user_setting.h (with sed)
218244
if: github.repository_owner == 'wolfssl'
219-
runs-on: ${{ matrix.os }}
245+
runs-on: ubuntu-24.04
220246
# This should be a safe limit for the tests to run.
221247
timeout-minutes: 14
222248
steps:
223249
- uses: actions/checkout@v4
224-
- if: ${{ matrix.os == 'macos-latest' }}
225-
run: brew install automake libtool
226250
- run: ./autogen.sh
227251
- name: user_settings_all.h with compatibility layer
228252
run: |

0 commit comments

Comments
 (0)