Skip to content

fix: etag issues identified in #11#13

Merged
murfffi merged 2 commits intomainfrom
fix/review
Sep 30, 2025
Merged

fix: etag issues identified in #11#13
murfffi merged 2 commits intomainfrom
fix/review

Conversation

@murfffi
Copy link
Owner

@murfffi murfffi commented Sep 30, 2025

No description provided.

@gemini-code-assist
Copy link

Summary of Changes

Hello @murfffi, 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 focuses on resolving ETag-related issues within the download functionality by refining the logic for temporary file creation and enhancing error handling mechanisms. It significantly improves the testability of the download process through dependency injection for the HTTP client and introduces new dedicated tests for critical scenarios, leading to a more robust and reliable file fetching system.

Highlights

  • Improved ETag Handling Logic: The logic for determining when to create temporary files during downloads has been refined, specifically addressing scenarios related to ETag usage.
  • Enhanced Error Handling: Error wrapping using merry.Wrap has been introduced for file creation and closing operations, and a critical check for a nil response body was added to prevent potential panics during data copying.
  • Testability Improvements: The fetchZip function was refactored to delegate to a new fetchZipWithClient function, which accepts an httpClient interface. This makes the HTTP client injectable, significantly improving the testability of the download logic.
  • New Internal Tests: A new internal test file (download_internal_test.go) was added, including tests for fetchZipWithClient to cover edge cases such as empty response bodies and ETag handling.
  • Dependency Update: The github.com/murfffi/gorich dependency has been updated from v0.2.0 to v0.2.1.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request addresses issues with ETag handling by correcting the logic for when to use ETag-based caching. To improve testability, fetchZip has been refactored to use an httpClient interface, and new unit tests have been added to cover edge cases like empty response bodies and missing ETags. The changes are solid, and my feedback focuses on making the error handling more idiomatic with the merry library.

@murfffi murfffi merged commit b399d41 into main Sep 30, 2025
2 checks passed
@murfffi murfffi deleted the fix/review branch September 30, 2025 19:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant