Skip to content

Conversation

@adity1raut
Copy link
Contributor

@adity1raut adity1raut commented Jan 21, 2026

Ⅰ. Describe what this PR does

  • refactor(tests): migrate to Ginkgo and Gomega for improved test structure

Ⅱ. Does this pull request fix one issue?

Part of #5407

Ⅲ. List the added test cases (unit test/integration test) if any, please explain if no tests are needed.

Ⅳ. Describe how to verify it

Ⅴ. Special notes for reviews

Signed-off-by: adity1raut <araut7798@gmail.com>
@fluid-e2e-bot
Copy link

fluid-e2e-bot bot commented Jan 21, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign ronggu for approval by writing /assign @ronggu in a comment. For more information see:The Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @adity1raut, 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 establishes a foundational test suite for the updatedbconf package, migrating testing efforts to the Ginkgo framework. The primary objective is to enhance the reliability and maintainability of the package by introducing structured tests for its core functionalities, including file modification detection and backup procedures. While some tests are temporarily skipped due to current architectural constraints, this change significantly improves test coverage and sets the stage for future code improvements.

Highlights

  • New Test Suite: An initial test suite has been added for the updatedbconf package, utilizing the Ginkgo testing framework.
  • Ginkgo Migration: Existing or new tests are now structured using Ginkgo's Describe and Context blocks for better readability and organization.
  • Skipped Tests for Refactoring: Several tests for the Register function are currently skipped, indicating a dependency on future refactoring of the Register function to accept file paths for easier testing.
  • Logic Testing: Specific logic within the Register function, such as comment detection and backup decision-making, now has dedicated unit tests.
  • Conditional Integration Test: A placeholder for an integration test has been added, which can be enabled by setting the RUN_INTEGRATION_TESTS environment variable.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

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.

@fluid-e2e-bot
Copy link

fluid-e2e-bot bot commented Jan 21, 2026

Hi @adity1raut. Thanks for your PR.

I'm waiting for a fluid-cloudnative member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

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

This pull request introduces an initial test suite for the updatedbconf package, migrating existing tests to use Ginkgo and Gomega. While the PR adds a good foundation for testing, several key tests for the Register function are currently skipped due to its design not being conducive to isolated testing. Additionally, the integration test is set up but lacks actual test logic. Addressing these points will significantly improve the test coverage and maintainability of the updatedbconf package.

}

tempDir := GinkgoT().TempDir()
Expect(tempDir).ToNot(BeEmpty())
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

The integration test is currently incomplete. While it correctly sets up a temporary directory, it doesn't contain any actual test logic to verify the integration of the updatedbconf package components. Please add specific assertions and steps to truly test the integration aspects of the Register function, such as writing to the temporary file and verifying its content after Register is called.

…ture

Signed-off-by: adity1raut <araut7798@gmail.com>
@adity1raut adity1raut changed the title test: add initial test suite and register tests for updatedbconf package and migrate tests into ginkgo refactor(tests): migrate to Ginkgo and Gomega for improved test structure Jan 21, 2026
@adity1raut
Copy link
Contributor Author

/cc @cheyang @RongGu

@fluid-e2e-bot fluid-e2e-bot bot requested review from RongGu and cheyang January 21, 2026 03:08
@codecov
Copy link

codecov bot commented Jan 21, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 56.77%. Comparing base (7b2a096) to head (bbaf15a).
⚠️ Report is 14 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5430      +/-   ##
==========================================
- Coverage   57.46%   56.77%   -0.69%     
==========================================
  Files         443      443              
  Lines       30735    30735              
==========================================
- Hits        17661    17449     -212     
- Misses      11460    11732     +272     
+ Partials     1614     1554      -60     

☔ 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.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@adity1raut
Copy link
Contributor Author

/gemini review

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

This pull request successfully migrates existing tests to use Ginkgo and Gomega and adds new tests for the updatedbconf package. The new test structure is more descriptive, which is a good improvement.

However, there are a few areas for improvement:

  • In pkg/csi/updatedbconf/updatedbconf_test.go, the refactored tests have become more verbose and contain duplicated code. I've suggested using Ginkgo's DescribeTable to make them more concise and maintainable.
  • In the new pkg/csi/updatedbconf/register_test.go, there is some test code duplication that can be removed. Also, all tests for the Register function itself are currently skipped, which should ideally be addressed in a follow-up to provide full test coverage.

Overall, this is a positive change for the test suite, and with a few adjustments, it can be even better.

Signed-off-by: adity1raut <araut7798@gmail.com>
Signed-off-by: adity1raut <araut7798@gmail.com>
Signed-off-by: adity1raut <araut7798@gmail.com>
@adity1raut
Copy link
Contributor Author

/cc @TrafalgarZZZ

@fluid-e2e-bot fluid-e2e-bot bot requested a review from TrafalgarZZZ January 22, 2026 04:10
var _ = Describe("updateLine", func() {
Context("when adding new values to existing line", func() {
It("should append new values and return true", func() {
line := `PRUNEFS="foo bar"`
Copy link
Member

Choose a reason for hiding this comment

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

I suggest using real data for testing.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

sure

Signed-off-by: adity1raut <araut7798@gmail.com>
Signed-off-by: adity1raut <araut7798@gmail.com>
@cheyang
Copy link
Collaborator

cheyang commented Jan 23, 2026

/gemini test

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR migrates the test suite for the updatedbconf package from testify to Ginkgo and Gomega as part of a broader initiative to modernize Fluid's testing framework and improve test coverage from 57% to 70%. The migration transforms table-driven tests into BDD-style (Behavior-Driven Development) tests with clear Describe, Context, and It blocks for better readability and organization.

Changes:

  • Migrated existing test cases from testify to Ginkgo/Gomega with improved test structure
  • Added comprehensive new test cases covering edge cases for updateLine and updateConfig functions
  • Created a new test file for testing register-related helper logic and the Enabled function
  • Removed a redundant comment in the production code

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.

File Description
pkg/csi/updatedbconf/updatedbconf_test.go Converted from testify to Ginkgo/Gomega; expanded from 3 to 15+ test scenarios with better edge case coverage
pkg/csi/updatedbconf/updatedbconf_suite_test.go New Ginkgo test suite initialization file following standard pattern
pkg/csi/updatedbconf/register_test.go New test file covering register helper logic, comment detection, and various scenarios (412 lines)
pkg/csi/updatedbconf/updatedbconf.go Removed redundant comment before config append logic

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@gemini-code-assist
Copy link
Contributor

It looks like you tried to use the /gemini test command, but test is not a recognized command.

Here are the available commands you can use:

  • /gemini review: Performs a code review for the current pull request in its current state.
  • /gemini summary: Provides a summary of the current pull request in its current state.
  • @gemini-code-assist: Responds in comments when explicitly tagged, both in pull request comments and review comments.
  • /gemini help: Displays a list of available commands.

@RongGu
Copy link
Member

RongGu commented Jan 23, 2026

/gemini review

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

This pull request successfully migrates tests to Ginkgo and Gomega, which improves the structure and readability of the test suite, especially in pkg/csi/updatedbconf/updatedbconf_test.go. However, the new test file, pkg/csi/updatedbconf/register_test.go, introduces many tests that are either redundant or test the Go standard library's functionality. This can increase maintenance overhead without adding significant value. I have provided specific comments to help streamline the tests by removing unnecessary and redundant code.

Comment on lines +71 to +95
Describe("backup decision", func() {
Context("when content is not modified by Fluid", func() {
It("should decide to create backup", func() {
existingContent := `PRUNEFS = "9p afs"`
shouldBackup := !strings.HasPrefix(existingContent, modifiedByFluidComment)
Expect(shouldBackup).To(BeTrue())
})
})

Context("when content is already modified by Fluid", func() {
It("should decide not to create backup", func() {
existingContent := modifiedByFluidComment + "\n" + `PRUNEFS = "9p afs fuse.alluxio"`
shouldBackup := !strings.HasPrefix(existingContent, modifiedByFluidComment)
Expect(shouldBackup).To(BeFalse())
})
})

Context("when content has comment but with extra content before", func() {
It("should decide to create backup", func() {
existingContent := "# Some other comment\n" + modifiedByFluidComment + "\nPRUNEFS = \"9p afs\""
shouldBackup := !strings.HasPrefix(existingContent, modifiedByFluidComment)
Expect(shouldBackup).To(BeTrue())
})
})
})
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

The tests in Describe("backup decision", ...) are also testing strings.HasPrefix, which is already covered elsewhere. This block can be removed to reduce redundancy.

Signed-off-by: adity1raut <araut7798@gmail.com>
@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants