4040 name : Core Provider Tests (OpenAI)
4141 runs-on : ubuntu-latest
4242 needs : core-tests
43+ env :
44+ OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
4345
4446 steps :
4547 - uses : actions/checkout@v2
5153 run : uv python install 3.11
5254 - name : Install the project
5355 run : uv sync --all-extras
56+ - name : Skip core provider tests (OpenAI)
57+ if : ${{ env.OPENAI_API_KEY == '' }}
58+ run : echo "Skipping OpenAI core provider tests (missing OPENAI_API_KEY)."
5459 - name : Run core provider tests (OpenAI)
55- run : uv run pytest tests/llm/test_core_providers -v --asyncio-mode=auto -n auto -k "openai"
60+ if : ${{ env.OPENAI_API_KEY != '' }}
61+ run : |
62+ set +e
63+ uv run pytest tests/llm/test_core_providers -v --asyncio-mode=auto -n auto -k "openai"
64+ status=$?
65+ set -e
66+ if [ $status -eq 5 ]; then
67+ echo "No tests collected; treating as success."
68+ exit 0
69+ fi
70+ exit $status
5671 env :
5772 INSTRUCTOR_ENV : CI
5873 OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
6277 name : Core Provider Tests (Anthropic)
6378 runs-on : ubuntu-latest
6479 needs : core-tests
80+ env :
81+ ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
6582
6683 steps :
6784 - uses : actions/checkout@v2
7390 run : uv python install 3.11
7491 - name : Install the project
7592 run : uv sync --all-extras
93+ - name : Skip core provider tests (Anthropic)
94+ if : ${{ env.ANTHROPIC_API_KEY == '' }}
95+ run : echo "Skipping Anthropic core provider tests (missing ANTHROPIC_API_KEY)."
7696 - name : Run core provider tests (Anthropic)
77- run : uv run pytest tests/llm/test_core_providers -v --asyncio-mode=auto -n auto -k "anthropic"
97+ if : ${{ env.ANTHROPIC_API_KEY != '' }}
98+ run : |
99+ set +e
100+ uv run pytest tests/llm/test_core_providers -v --asyncio-mode=auto -n auto -k "anthropic"
101+ status=$?
102+ set -e
103+ if [ $status -eq 5 ]; then
104+ echo "No tests collected; treating as success."
105+ exit 0
106+ fi
107+ exit $status
78108 env :
79109 INSTRUCTOR_ENV : CI
80110 ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
84114 name : Core Provider Tests (Google)
85115 runs-on : ubuntu-latest
86116 needs : core-tests
117+ env :
118+ GOOGLE_API_KEY : ${{ secrets.GOOGLE_API_KEY }}
119+ GOOGLE_GENAI_MODEL : ${{ secrets.GOOGLE_GENAI_MODEL }}
87120
88121 steps :
89122 - uses : actions/checkout@v2
@@ -95,8 +128,21 @@ jobs:
95128 run : uv python install 3.11
96129 - name : Install the project
97130 run : uv sync --all-extras
131+ - name : Skip core provider tests (Google)
132+ if : ${{ env.GOOGLE_API_KEY == '' || env.GOOGLE_GENAI_MODEL == '' }}
133+ run : echo "Skipping Google core provider tests (missing GOOGLE_API_KEY or GOOGLE_GENAI_MODEL)."
98134 - name : Run core provider tests (Google)
99- run : uv run pytest tests/llm/test_core_providers -v --asyncio-mode=auto -n auto -k "google"
135+ if : ${{ env.GOOGLE_API_KEY != '' && env.GOOGLE_GENAI_MODEL != '' }}
136+ run : |
137+ set +e
138+ uv run pytest tests/llm/test_core_providers -v --asyncio-mode=auto -n auto -k "google"
139+ status=$?
140+ set -e
141+ if [ $status -eq 5 ]; then
142+ echo "No tests collected; treating as success."
143+ exit 0
144+ fi
145+ exit $status
100146 env :
101147 INSTRUCTOR_ENV : CI
102148 GOOGLE_API_KEY : ${{ secrets.GOOGLE_API_KEY }}
@@ -106,6 +152,14 @@ jobs:
106152 name : Core Provider Tests (Other)
107153 runs-on : ubuntu-latest
108154 needs : core-tests
155+ env :
156+ COHERE_API_KEY : ${{ secrets.COHERE_API_KEY }}
157+ XAI_API_KEY : ${{ secrets.XAI_API_KEY }}
158+ MISTRAL_API_KEY : ${{ secrets.MISTRAL_API_KEY }}
159+ CEREBRAS_API_KEY : ${{ secrets.CEREBRAS_API_KEY }}
160+ FIREWORKS_API_KEY : ${{ secrets.FIREWORKS_API_KEY }}
161+ WRITER_API_KEY : ${{ secrets.WRITER_API_KEY }}
162+ PERPLEXITY_API_KEY : ${{ secrets.PERPLEXITY_API_KEY }}
109163
110164 steps :
111165 - uses : actions/checkout@v2
@@ -117,8 +171,29 @@ jobs:
117171 run : uv python install 3.11
118172 - name : Install the project
119173 run : uv sync --all-extras
174+ - name : Skip core provider tests (Other)
175+ if : >-
176+ ${{ env.COHERE_API_KEY == '' && env.XAI_API_KEY == ''
177+ && env.MISTRAL_API_KEY == '' && env.CEREBRAS_API_KEY == ''
178+ && env.FIREWORKS_API_KEY == '' && env.WRITER_API_KEY == ''
179+ && env.PERPLEXITY_API_KEY == '' }}
180+ run : echo "Skipping core provider tests (Other) (missing provider secrets)."
120181 - name : Run core provider tests (Cohere, xAI, Mistral, etc)
121- run : uv run pytest tests/llm/test_core_providers -v --asyncio-mode=auto -n auto -k "cohere or xai or mistral or cerebras or fireworks or writer or perplexity"
182+ if : >-
183+ ${{ env.COHERE_API_KEY != '' || env.XAI_API_KEY != ''
184+ || env.MISTRAL_API_KEY != '' || env.CEREBRAS_API_KEY != ''
185+ || env.FIREWORKS_API_KEY != '' || env.WRITER_API_KEY != ''
186+ || env.PERPLEXITY_API_KEY != '' }}
187+ run : |
188+ set +e
189+ uv run pytest tests/llm/test_core_providers -v --asyncio-mode=auto -n auto -k "cohere or xai or mistral or cerebras or fireworks or writer or perplexity"
190+ status=$?
191+ set -e
192+ if [ $status -eq 5 ]; then
193+ echo "No tests collected; treating as success."
194+ exit 0
195+ fi
196+ exit $status
122197 env :
123198 INSTRUCTOR_ENV : CI
124199 COHERE_API_KEY : ${{ secrets.COHERE_API_KEY }}
@@ -134,6 +209,9 @@ jobs:
134209 name : ${{ matrix.provider.name }} Tests
135210 runs-on : ubuntu-latest
136211 needs : [core-openai, core-anthropic, core-google, core-other]
212+ env :
213+ PROVIDER_API_KEY : ${{ secrets[matrix.provider.env_key] }}
214+ GOOGLE_GENAI_MODEL : ${{ secrets.GOOGLE_GENAI_MODEL }}
137215 strategy :
138216 fail-fast : false
139217 matrix :
@@ -167,8 +245,29 @@ jobs:
167245 run : uv python install 3.11
168246 - name : Install the project
169247 run : uv sync --all-extras
248+ - name : Skip ${{ matrix.provider.name }} tests
249+ if : >-
250+ ${{ env.PROVIDER_API_KEY == '' ||
251+ ((matrix.provider.name == 'Gemini' || matrix.provider.name == 'Google GenAI'
252+ || matrix.provider.name == 'Vertex AI') && env.GOOGLE_GENAI_MODEL == '') }}
253+ run : >-
254+ echo "Skipping ${{ matrix.provider.name }} tests
255+ (missing ${{ matrix.provider.env_key }} or GOOGLE_GENAI_MODEL)."
170256 - name : Run ${{ matrix.provider.name }} tests
171- run : uv run pytest ${{ matrix.provider.test_path }} --asyncio-mode=auto -n auto
257+ if : >-
258+ ${{ env.PROVIDER_API_KEY != '' &&
259+ ((matrix.provider.name != 'Gemini' && matrix.provider.name != 'Google GenAI'
260+ && matrix.provider.name != 'Vertex AI') || env.GOOGLE_GENAI_MODEL != '') }}
261+ run : |
262+ set +e
263+ uv run pytest ${{ matrix.provider.test_path }} --asyncio-mode=auto -n auto
264+ status=$?
265+ set -e
266+ if [ $status -eq 5 ]; then
267+ echo "No tests collected; treating as success."
268+ exit 0
269+ fi
270+ exit $status
172271 env :
173272 INSTRUCTOR_ENV : CI
174273 ${{ matrix.provider.env_key }} : ${{ secrets[matrix.provider.env_key] }}
@@ -178,6 +277,12 @@ jobs:
178277 name : Auto Client Tests
179278 runs-on : ubuntu-latest
180279 needs : [core-openai, core-anthropic, core-google, core-other]
280+ env :
281+ OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
282+ GOOGLE_API_KEY : ${{ secrets.GOOGLE_API_KEY }}
283+ COHERE_API_KEY : ${{ secrets.COHERE_API_KEY }}
284+ ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY }}
285+ XAI_API_KEY : ${{ secrets.XAI_API_KEY }}
181286
182287 steps :
183288 - uses : actions/checkout@v2
@@ -189,8 +294,27 @@ jobs:
189294 run : uv python install 3.11
190295 - name : Install the project
191296 run : uv sync --all-extras
297+ - name : Skip Auto Client tests
298+ if : >-
299+ ${{ env.OPENAI_API_KEY == '' || env.GOOGLE_API_KEY == ''
300+ || env.COHERE_API_KEY == '' || env.ANTHROPIC_API_KEY == ''
301+ || env.XAI_API_KEY == '' }}
302+ run : echo "Skipping Auto Client tests (missing one or more provider secrets)."
192303 - name : Run Auto Client tests
193- run : uv run pytest tests/test_auto_client.py --asyncio-mode=auto -n auto
304+ if : >-
305+ ${{ env.OPENAI_API_KEY != '' && env.GOOGLE_API_KEY != ''
306+ && env.COHERE_API_KEY != '' && env.ANTHROPIC_API_KEY != ''
307+ && env.XAI_API_KEY != '' }}
308+ run : |
309+ set +e
310+ uv run pytest tests/test_auto_client.py --asyncio-mode=auto -n auto
311+ status=$?
312+ set -e
313+ if [ $status -eq 5 ]; then
314+ echo "No tests collected; treating as success."
315+ exit 0
316+ fi
317+ exit $status
194318 env :
195319 INSTRUCTOR_ENV : CI
196320 OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
0 commit comments