From bb6db7e492bfcfdd02eaa8765e45d49c1c4e72ae Mon Sep 17 00:00:00 2001 From: Yiheng Xu Date: Thu, 31 Jul 2025 15:16:23 +0800 Subject: [PATCH] Fix E2E (#156) --- .github/workflows/e2e.yml | 4 +++- packages/cli/src/gemini.tsx | 26 ++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 745627a1..2997c26f 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -44,5 +44,7 @@ jobs: - name: Run E2E tests env: - GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL }} + OPENAI_MODEL: ${{ secrets.OPENAI_MODEL }} run: npm run test:integration:${{ matrix.sandbox }} -- --verbose --keep-output diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx index fe016d9b..630720cc 100644 --- a/packages/cli/src/gemini.tsx +++ b/packages/cli/src/gemini.tsx @@ -323,16 +323,34 @@ async function validateNonInterActiveAuth( nonInteractiveConfig: Config, ) { // making a special case for the cli. many headless environments might not have a settings.json set - // so if GEMINI_API_KEY is set, we'll use that. However since the oauth things are interactive anyway, we'll + // so if GEMINI_API_KEY or OPENAI_API_KEY is set, we'll use that. However since the oauth things are interactive anyway, we'll // still expect that exists - if (!selectedAuthType && !process.env.GEMINI_API_KEY) { + if ( + !selectedAuthType && + !process.env.GEMINI_API_KEY && + !process.env.OPENAI_API_KEY + ) { console.error( - `Please set an Auth method in your ${USER_SETTINGS_PATH} OR specify GEMINI_API_KEY env variable file before running`, + `Please set an Auth method in your ${USER_SETTINGS_PATH} OR specify GEMINI_API_KEY or OPENAI_API_KEY env variable before running`, ); process.exit(1); } - selectedAuthType = selectedAuthType || AuthType.USE_GEMINI; + // Determine auth type based on available environment variables + if (!selectedAuthType) { + if (process.env.OPENAI_API_KEY) { + selectedAuthType = AuthType.USE_OPENAI; + } else if (process.env.GEMINI_API_KEY) { + selectedAuthType = AuthType.USE_GEMINI; + } + } + + // This should never happen due to the check above, but TypeScript needs assurance + if (!selectedAuthType) { + console.error('No valid authentication method found'); + process.exit(1); + } + const err = validateAuthMethod(selectedAuthType); if (err != null) { console.error(err);