test(core): improve testing for API request/response parsing#21227
test(core): improve testing for API request/response parsing#21227
Conversation
|
Hi @sehoon38, thank you so much for your contribution to Gemini CLI! We really appreciate the time and effort you've put into this. We're making some updates to our contribution process to improve how we track and review changes. Please take a moment to review our recent discussion post: Improving Our Contribution Process & Introducing New Guidelines. Key Update: Starting January 26, 2026, the Gemini CLI project will require all pull requests to be associated with an existing issue. Any pull requests not linked to an issue by that date will be automatically closed. Thank you for your understanding and for being a part of our community! |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request enhances the robustness of API request and response parsing, particularly for streaming responses. It introduces new tests at both the component and system levels to ensure the application gracefully handles malformed JSON and metadata-only chunks within API streams, preventing crashes and maintaining stability. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request enhances the integration tests for API response parsing by adding resilience checks for malformed and metadata-only chunks in streaming responses. The new tests in server.test.ts and the new E2E test in api-resilience.test.ts are well-structured and effectively cover the intended scenarios. I have one suggestion to improve the compatibility of the new E2E test with a wider range of Node.js versions, which aligns with our guideline to use node: prefixes for built-in modules.
|
Size Change: -2 B (0%) Total Size: 26 MB ℹ️ View Unchanged
|
Added component-level and E2E integration tests to verify resilience against malformed JSON and metadata-only chunks in API response streams. Linked to #20190
257fbc4 to
fa1cf13
Compare
Summary
This PR improves the integration testing for API request and response parsing, specifically addressing resilience against metadata-only or malformed chunks in streaming responses.
Details
packages/core/src/code_assist/server.test.tsto verify the SSE parser handles malformed JSON correctly (loggingInvalidChunkEventinstead of crashing) and yields metadata-only chunks (e.g., chunks containingusageMetadataorconsumedCreditsbut nocandidates).integration-tests/api-resilience.test.tsalong with its response mockintegration-tests/api-resilience.responses. This test verifies that the full application stack remains stable when receiving logically incomplete streaming chunks.Related Issues
Fixes #20190
How to Validate
Run component-level tests:
npm test -w @google/gemini-cli-core -- src/code_assist/server.test.tsExpect all 32 tests to pass, including the new robustness test cases.
Run E2E integration test:
Expect the test to pass, confirming the CLI doesn't crash on metadata-only chunks.
Pre-Merge Checklist