-
Notifications
You must be signed in to change notification settings - Fork 1.1k
refactor(tests): migrate to Ginkgo and Gomega for improved test structure #5430
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: adity1raut <araut7798@gmail.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Summary of ChangesHello @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 Highlights
🧠 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 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
|
|
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 Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions 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. |
There was a problem hiding this 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()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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>
Codecov Report✅ All modified and coverable lines are covered by tests. 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. 🚀 New features to boost your workflow:
|
|
/gemini review |
There was a problem hiding this 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'sDescribeTableto 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 theRegisterfunction 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.
|
/cc @TrafalgarZZZ |
| 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"` |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sure
|
/gemini test |
There was a problem hiding this 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
updateLineandupdateConfigfunctions - Created a new test file for testing register-related helper logic and the
Enabledfunction - 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.
|
It looks like you tried to use the Here are the available commands you can use:
|
|
/gemini review |
There was a problem hiding this 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.
| 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()) | ||
| }) | ||
| }) | ||
| }) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|



Ⅰ. Describe what this PR does
Ⅱ. 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