-
Notifications
You must be signed in to change notification settings - Fork 126
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
refactor: simplify error messages in test cases #795
base: main
Are you sure you want to change the base?
refactor: simplify error messages in test cases #795
Conversation
WalkthroughThis pull request introduces modifications to various test files, specifically focusing on the formatting of expected error messages in multiple test cases. The changes involve replacing the use of Changes
Possibly related issues
Possibly related PRs
Suggested reviewers
Poem
📜 Recent review detailsConfiguration used: .coderabbit.yaml 📒 Files selected for processing (5)
🚧 Files skipped from review as they are similar to previous changes (5)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
Documentation and Community
|
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.
Actionable comments posted: 1
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
📒 Files selected for processing (5)
- x/logic/predicate/bank_test.go (3 hunks)
- x/logic/predicate/crypto_test.go (2 hunks)
- x/logic/predicate/did_test.go (1 hunks)
- x/logic/predicate/encoding_test.go (1 hunks)
- x/logic/predicate/uri_test.go (1 hunks)
🧰 Additional context used
📓 Learnings (1)
x/logic/predicate/bank_test.go (4)
Learnt from: ccamel PR: axone-protocol/axoned#769 File: x/logic/predicate/bank_test.go:170-172 Timestamp: 2024-10-05T09:28:45.913Z Learning: In test cases, error messages may involve transformations like `strings.Join(strings.Split(...))` because error messages used to be atoms, but now they are strings (lists of characters). This transformation was initially implemented to update the tests without much hassle.
Learnt from: ccamel PR: axone-protocol/axoned#769 File: x/logic/predicate/bank_test.go:170-172 Timestamp: 2024-10-08T17:06:13.771Z Learning: In test cases, error messages may involve transformations like `strings.Join(strings.Split(...))` because error messages used to be atoms, but now they are strings (lists of characters). This transformation was initially implemented to update the tests without much hassle.
Learnt from: ccamel PR: axone-protocol/axoned#769 File: x/logic/predicate/bank_test.go:465-466 Timestamp: 2024-10-05T08:52:06.607Z Learning: In the tests in the `x/logic/predicate/bank_test.go` file, setting the Bech32 prefix using `sdk.GetConfig().SetBech32PrefixForAccount` is acceptable, even though it modifies global configuration, because it's part of a third-party library and the team considers this state as shared across all tests.
Learnt from: ccamel PR: axone-protocol/axoned#769 File: x/logic/predicate/bank_test.go:465-466 Timestamp: 2024-10-08T17:06:13.771Z Learning: In the tests in the `x/logic/predicate/bank_test.go` file, setting the Bech32 prefix using `sdk.GetConfig().SetBech32PrefixForAccount` is acceptable, even though it modifies global configuration, because it's part of a third-party library and the team considers this state as shared across all tests.
🔇 Additional comments (7)
x/logic/predicate/encoding_test.go (1)
61-61
: LGTM! Improved error message readability.The simplified error message format is clearer and more direct compared to the previous
strings.Join
approach. This change aligns well with the PR's objective of enhancing test case maintainability.x/logic/predicate/did_test.go (1)
82-82
: LGTM! Error message simplification looks good.The simplified error message format improves readability while maintaining the necessary error information.
Let's verify the consistency of error message formatting across related files:
✅ Verification successful
Error message format is consistent with codebase patterns
The search results confirm that the error message format in the test case follows the established pattern across the codebase:
- Domain errors consistently use the format
error(domain_error(type, value), [message], predicate)
- The simplified error message
[invalid DID]
aligns with similar error messages in other test files- Other DID-related errors in the same file follow the same structure
- The change maintains consistency with error handling patterns in related predicates (uri_encoded, hex_bytes, bank_balances)
The error message simplification is appropriate and maintains the established error formatting conventions throughout the codebase.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Check for similar error message patterns in other test files # to ensure consistent formatting approach # Search for error message patterns in test files rg -g '*_test.go' 'error\(domain_error\([^)]+\),\[[^\]]+\],'Length of output: 62
Script:
#!/bin/bash # Let's try a broader search pattern to find error message patterns in test files # First, let's look for domain_error patterns rg -g '*_test.go' 'domain_error' -B 1 -A 1 # Also search for wantError patterns in test files to see the general error formatting rg -g '*_test.go' 'wantError.*fmt\.Errorf' -B 1 -A 1Length of output: 21822
x/logic/predicate/uri_test.go (2)
Line range hint
1-200
: LGTM! Test coverage is comprehensive and well-structured.The test suite demonstrates thorough coverage of the
uri_encoded
predicate, including:
- Various URI component types (path, query_value, segment, fragment)
- Special character handling
- Error cases and invalid inputs
- Type checking and variable bindings
170-170
: LGTM! Error message format is now more explicit and informative.The updated error message format provides clearer context by including the specific invalid URL escape sequence. This change aligns well with the PR's objective of improving error message readability.
Let's verify the consistency of error message formats across similar predicates:
✅ Verification successful
The previous command failed because of incorrect glob pattern. Let's try with specific paths and a broader search to understand the error message patterns in the codebase.
The previous search gave us one instance of the domain_error pattern, but we need to see more context from other test files to verify consistency. Let's first locate all test files and then search for error patterns within them.
Error message format is consistent with codebase patterns
The updated error message in
uri_test.go
follows the established error pattern used throughout the codebase:
- It uses the standard
error(error_type(...), [details], predicate/arity)
format- The domain_error pattern is consistently used for encoding errors across different predicates (uri, hex, bech32)
- The error details are consistently enclosed in square brackets
- The predicate reference with arity is always included at the end
The change aligns perfectly with similar error messages found in other predicate tests, particularly matching the pattern seen in
did_test.go
,hex_test.go
, andbank_test.go
for domain-specific encoding errors.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Check for similar domain_error patterns in test files # Expected: Similar error message patterns in other predicate tests # Search for domain_error patterns in test files rg -A 2 "domain_error\(" "**/*_test.go"Length of output: 94
Script:
#!/bin/bash # Let's try a more precise search for domain_error patterns in test files rg -A 2 "domain_error" "x/logic/predicate/uri_test.go" # Also search for similar error patterns in other test files within the predicate directory rg -A 2 "error\(" "x/logic/predicate/*_test.go"Length of output: 302
Script:
#!/bin/bash # Let's find all test files in the x/logic/predicate directory first fd "_test.go$" x/logic/predicate/ # Then search for error patterns in all test files fd "_test.go$" x/logic/predicate/ -x rg -A 2 "error\("Length of output: 7747
x/logic/predicate/crypto_test.go (2)
207-207
: LGTM! Improved error message readability.The simplified error message format is clearer while maintaining the same semantic meaning.
258-258
: LGTM! Improved error message readability.The simplified error message format is clearer while maintaining the same semantic meaning.
x/logic/predicate/bank_test.go (1)
176-176
: LGTM! Error messages have been simplified effectively.The changes successfully simplify the error messages by removing unnecessary string transformations while maintaining consistency across different test cases. This aligns well with the PR's objective of enhancing readability and maintainability.
Also applies to: 310-310, 454-454
354a3eb
to
602ff84
Compare
Codecov ReportAll modified and coverable lines are covered by tests ✅ @@ Coverage Diff @@
## main #795 +/- ##
==========================================
- Coverage 43.28% 42.32% -0.97%
==========================================
Files 110 110
Lines 5205 6221 +1016
==========================================
+ Hits 2253 2633 +380
- Misses 2828 3464 +636
Partials 124 124 |
602ff84
to
d0830d1
Compare
@@ -36,6 +36,7 @@ import ( | |||
) | |||
|
|||
func TestBank(t *testing.T) { | |||
bench32DecodingFail := strings.Join(strings.Split("decoding bech32 failed: invalid bech32 string length 3", ""), ",") |
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.
You should simplify this. The idea proposed in the GitHub issue #771, as flagged by Dependabot, was to remove string processing and directly insert the final string result. While this may reduce readability, I tend to agree with the approach because it directly represents the content we get, simplifying maintenance.
For instance:
bench32DecodingFail := strings.Join(strings.Split("decoding bech32 failed: invalid bech32 string length 3", ""), ",") | |
bench32DecodingFail := "d,e,c,o,d,i,n,g, ,b,e,c,h,3,2, ,f,a,i,l,e,d,:, ,i,n,v,a,l,i,d, ,b,e,c,h,3,2, ,s,t,r,i,n,g, ,l,e,n,g,t,h, ,3" |
So basically, wherever you see strings.Join
+ strings.Split
on a constant string in the tests, just replace it with the final result.
Pull Request: Simplify Error Messages in Test Cases
Description:
This pull request aims to improve the readability and maintainability of the error messages in the test cases.
Changes Made:
Related Issues:
Testing:
Additional Notes:
Summary by CodeRabbit
These changes ensure that error messages are more straightforward, providing better context for users when issues arise.