Skip to content

Conversation

@gaby
Copy link
Member

@gaby gaby commented Jun 17, 2025

Summary

  • Improve test coverage of hooks.go

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jun 17, 2025

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (2)
  • .github/codecov.yml is excluded by !**/*.yml
  • .github/workflows/test.yml is excluded by !**/*.yml

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

Multiple new test functions have been added to hooks_test.go to verify error handling and mount path prefixing in Fiber's hook execution methods. These tests cover various hook types, including route, group, listening, pre-shutdown, fork, and mount hooks, ensuring correct error propagation and logging behavior.

Changes

File(s) Change Summary
hooks_test.go Added test functions for error handling and mount path prefixing in various Fiber hook methods

Suggested reviewers

  • sixcolors
  • efectn
  • ReneWerner87

Poem

A bunny hopped through code so bright,
Testing hooks from left to right.
Errors caught and paths aligned,
Mounts and logs all intertwined.
With every test, the bugs took flight—
The Fiber garden’s running right! 🐇✨


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@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.

Summary of Changes

Hello @gaby, 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 significantly improves the robustness of the application's hook system by expanding its test coverage. The primary focus is on validating how various hook execution functions behave when a registered hook returns an error, ensuring that such scenarios are gracefully handled and reported. It also confirms correct path resolution for mounted applications within the hook context.

Highlights

  • Enhanced Test Coverage: Added a suite of new unit tests to hooks_test.go to specifically increase test coverage for error handling paths within the application's hook execution functions.
  • Error Scenario Validation: Introduced dedicated tests for executeOnRouteHooks, executeOnNameHooks, executeOnGroupHooks, executeOnGroupNameHooks, executeOnListenHooks, executeOnPreShutdownHooks, executeOnForkHooks, and executeOnMountHooks to ensure they correctly handle and propagate errors returned by registered hooks.
  • Mounted Application Context Testing: New tests verify that the mountPath is correctly prefixed to Route and Group paths when hooks are executed within the context of a mounted application.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

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 issue 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 is currently in preview and 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 to provide feedback.

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.

@gaby gaby changed the title Increase hooks.go test coverage 🧹 chore: Improve hooks test coverage Jun 17, 2025
@gaby gaby added the v3 label Jun 17, 2025
@gaby gaby added this to v3 Jun 17, 2025
@gaby gaby added this to the v3 milestone Jun 17, 2025
@gaby gaby moved this to In Progress in v3 Jun 17, 2025
@gaby gaby marked this pull request as ready for review June 17, 2025 13:18
@gaby gaby requested a review from a team as a code owner June 17, 2025 13:18
@codecov
Copy link

codecov bot commented Jun 17, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 89.28%. Comparing base (528462d) to head (3419fd0).
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3524      +/-   ##
==========================================
+ Coverage   89.06%   89.28%   +0.22%     
==========================================
  Files         111      111              
  Lines       11163    11163              
==========================================
+ Hits         9942     9967      +25     
+ Misses        920      903      -17     
+ Partials      301      293       -8     
Flag Coverage Δ
unittests 89.28% <ø> (+0.22%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Contributor

@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

The code changes add new test cases to increase the test coverage for the hooks.go file, specifically focusing on error scenarios for various hook types when a mount path is involved. The new tests cover OnRoute, OnName, OnGroup, OnGroupName, OnListen, OnPreShutdown, OnFork, and OnMount hooks, ensuring that errors returned by these hooks are properly handled and asserted.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
hooks_test.go (1)

350-400: Extract the mount path literal into a shared constant to silence goconst and improve maintainability

The string "/api" appears four times across the newly-added tests (lines 350, 366, 382 and 398).
golangci-lint is already flagging this duplication. Moving the literal to a package-level constant keeps the tests DRY and removes the lint failure.

+const testMountPath = "/api"-	app.mountFields.mountPath = "/api"
+	app.mountFields.mountPath = testMountPath

Apply the same replacement in the other three occurrences.
This keeps the intent clear and prevents future copy-paste errors.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0590709 and 2872398.

📒 Files selected for processing (1)
  • hooks_test.go (2 hunks)
🧰 Additional context used
🪛 GitHub Check: lint
hooks_test.go

[failure] 350-350:
string /api has 4 occurrences, make it a constant (goconst)

🪛 GitHub Actions: golangci-lint
hooks_test.go

[error] 350-350: golangci-lint: string /api has 4 occurrences, make it a constant (goconst)

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: repeated
  • GitHub Check: Compare

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.50.

Benchmark suite Current: 38d5e32 Previous: 0590709 Ratio
Benchmark_Ctx_SendString_B 16.17 ns/op 0 B/op 0 allocs/op 9.049 ns/op 0 B/op 0 allocs/op 1.79
Benchmark_Ctx_SendString_B - ns/op 16.17 ns/op 9.049 ns/op 1.79
BenchmarkDecoderedirectionMsg - MB/s 414.92 MB/s 250.12 MB/s 1.66

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (2)
hooks_test.go (2)

448-451: Same global-logger race in fork-hook test
Issue & fix are identical to the previous comment – reuse the same pattern.


425-437: Parallel test mutates global logger – data race & flaky output

log.SetOutput(&buf) changes a global singleton while this test is flagged t.Parallel().
Any other parallel test that writes to or re-configures the logger will race.

- t.Parallel()
- var buf bytes.Buffer
- log.SetOutput(&buf)
+ // Cannot run in parallel because we mutate global logger state.
+ // t.Parallel()
+
+ orig := log.Writer() // preserve
+ var buf bytes.Buffer
+ log.SetOutput(&buf)
+ defer log.SetOutput(orig)

Either serialise the test (drop t.Parallel()), or guard log.SetOutput with a shared mutex used by every test touching the logger.

🧹 Nitpick comments (1)
hooks_test.go (1)

4-10: Avoid confusing alias ‑ import Fiber logger under a distinct name

Importing github.com/gofiber/fiber/v3/log as plain log shadows the standard library’s log package and can surprise future readers/tools.
Consider a clearer alias such as fiberlog:

-	"github.com/gofiber/fiber/v3/log"
+	fiberlog "github.com/gofiber/fiber/v3/log"

All subsequent references (log.SetOutput, etc.) would then use fiberlog.*, making intent unambiguous.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2872398 and 38d5e32.

📒 Files selected for processing (1)
  • hooks_test.go (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (8)
  • GitHub Check: lint
  • GitHub Check: unit (1.24.x, windows-latest)
  • GitHub Check: unit (1.24.x, macos-latest)
  • GitHub Check: unit (1.24.x, macos-13)
  • GitHub Check: unit (1.24.x, ubuntu-latest)
  • GitHub Check: Compare
  • GitHub Check: repeated
  • GitHub Check: Analyse

@ReneWerner87 ReneWerner87 merged commit a68b0e0 into main Jun 18, 2025
18 of 19 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in v3 Jun 18, 2025
@gaby gaby deleted the codex/2025-06-17-13-17-04 branch June 18, 2025 13:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants