-
-
Notifications
You must be signed in to change notification settings - Fork 30
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
🧪 Feat: callHandler test coverage #1232
🧪 Feat: callHandler test coverage #1232
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
🦋 Changeset detectedLatest commit: 2f95bb8 The changes in this PR will be included in the next version bump. This PR includes changesets to release 30 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Important Review skippedMore than 25% of the files skipped due to max files limit. The review is being skipped to prevent a low-quality review. 157 files out of 296 files are above the max files limit of 50. Please upgrade to Pro plan to get higher limits. You can disable this status message by setting the WalkthroughThe updates introduce new test cases for multiple functions, enhance error handling, and refine class constructors within the codebase. Key changes include adding test files for functions like Changes
Poem
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 as PR comments)
Additionally, you can add CodeRabbit Configration File (
|
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @roninjin10 and the rest of your teammates on Graphite |
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: 0
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files ignored due to path filters (3)
packages/actions/src/Call/__snapshots__/cloneVmWithBlock.spec.ts.snap
is excluded by!**/*.snap
packages/actions/src/Call/__snapshots__/executeCall.spec.ts.snap
is excluded by!**/*.snap
packages/actions/src/Call/__snapshots__/handleEvmError.spec.ts.snap
is excluded by!**/*.snap
Files selected for processing (5)
- packages/actions/src/Call/cloneVmWithBlock.spec.ts (1 hunks)
- packages/actions/src/Call/executeCall.spec.ts (1 hunks)
- packages/actions/src/Call/handleEvmError.spec.ts (1 hunks)
- packages/actions/src/Call/shouldCreateTransaction.spec.ts (1 hunks)
- packages/actions/src/Call/validateCallParams.spec.ts (1 hunks)
Files skipped from review due to trivial changes (1)
- packages/actions/src/Call/validateCallParams.spec.ts
Additional comments not posted (4)
packages/actions/src/Call/cloneVmWithBlock.spec.ts (1)
8-61
: Comprehensive Test Coverage forcloneVmWithBlockTag
The test cases cover various scenarios like successful VM cloning, handling unavailable state roots, and error handling during cloning. This is crucial for ensuring the robustness of the
cloneVmWithBlockTag
function. Good use of theexpect
function to assert conditions and the structured approach in each test case enhances readability and maintainability of the test suite.packages/actions/src/Call/shouldCreateTransaction.spec.ts (1)
6-69
: Effective Testing ofshouldCreateTransaction
FunctionThe test cases effectively cover all potential values for
createTransaction
, ensuring that the function behaves as expected under various conditions. The use of parameterized testing for different values ofcreateTransaction
is a good practice as it ensures that all edge cases are covered.packages/actions/src/Call/executeCall.spec.ts (1)
13-120
: Thorough Testing ofexecuteCall
FunctionThe test cases are well-structured and cover a range of scenarios including successful contract calls, handling of contract call errors, and gas price errors. The use of mocked data and assertions ensures that the function's behavior is thoroughly validated under different conditions. This contributes significantly to the reliability and stability of the
executeCall
function.packages/actions/src/Call/handleEvmError.spec.ts (1)
46-165
: Comprehensive Error Handling Tests inhandleRunTxError
The tests for
handleRunTxError
are comprehensive, covering unknown errors, known error types, EvmError instances, and specific EvmError subclasses. The use of a variety of error instances and the structured approach to testing each one ensures that the function can handle a wide range of error scenarios effectively.
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: 3
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files ignored due to path filters (2)
packages/actions/src/Call/__snapshots__/handleEvmError.spec.ts.snap
is excluded by!**/*.snap
pnpm-lock.yaml
is excluded by!**/pnpm-lock.yaml
Files selected for processing (9)
- packages/actions/src/Call/handleEvmError.js (3 hunks)
- packages/actions/src/Call/handleEvmError.spec.ts (1 hunks)
- packages/errors/src/ethereum/BaseError.js (2 hunks)
- packages/errors/src/ethereum/ExecutionErrorError.js (2 hunks)
- packages/errors/src/ethereum/GasLimitExceededError.js (4 hunks)
- packages/errors/src/ethereum/ethereumjs/InternalEvmError.js (1 hunks)
- packages/errors/src/ethereum/ethereumjs/InvalidJumpError.js (1 hunks)
- packages/errors/src/fork/ForkError.js (1 hunks)
- packages/errors/src/fork/NoForkUriSetError.js (1 hunks)
Additional context used
Biome
packages/actions/src/Call/handleEvmError.spec.ts
[error] 121-121: Do not shadow the global "constructor" property. (lint/suspicious/noShadowRestrictedNames)
Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.
Additional comments not posted (5)
packages/errors/src/ethereum/ExecutionErrorError.js (1)
49-57
: Good practice: Inclusion of discriminative tag in constructor.The addition of an optional
tag
parameter in theExecutionError
constructor is a good practice for better error discrimination. The constructor is well-structured and aligns with best practices.packages/errors/src/fork/ForkError.js (1)
75-75
: Improved error instantiation and handlingThe change to instantiate
BaseError
with an empty object{}
if no cause is provided ensures consistent and predictable error handling. This is a good practice and enhances the robustness of error management.packages/errors/src/ethereum/ethereumjs/InvalidJumpError.js (1)
74-83
: Enhanced flexibility in error taggingAllowing an optional
tag
parameter in the constructor enhances flexibility in error handling and logging. This change allows for more granular control over error categorization, which can be beneficial in complex systems.packages/errors/src/ethereum/BaseError.js (1)
44-44
: Required arguments in error constructor enhance robustnessRequiring the
args
parameter in the constructor ensures that essential information is not omitted, enhancing the robustness and clarity of error instantiation. This is a good practice in error handling.packages/actions/src/Call/handleEvmError.js (1)
127-138
: Ensure proper error handling for non-EVM errors.The function
handleRunTxError
defaults to returningInternalEvmError
for any unrecognized error. This catch-all approach may obscure the underlying issue if the error does not fit any known EVM error category. Ensure that this behavior is intentional and consider logging or handling these cases more explicitly to aid in debugging and error tracking.Verification successful
The
handleRunTxError
function is used inexecuteCall.js
to process errors and return them in theerrors
array. The function defaults to returningInternalEvmError
for any unrecognized error, including logging certain conditions.Given the current implementation, the behavior of defaulting to
InternalEvmError
appears intentional. However, the review comment suggests ensuring this behavior is intentional and considering more explicit logging or handling for non-EVM errors.
packages/actions/src/Call/handleEvmError.js
: The function logs when an error is not a validEvmError
or when no error constructor is found.The current implementation does include logging for these specific cases, which aids in debugging and error tracking.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that InternalEvmError is the intended default for unknown errors and check if there's a need for more explicit handling. # Test: Search for the function usage. Expect: Proper handling or logging of unknown errors. rg --type javascript $'handleRunTxError'Length of output: 74
Script:
#!/bin/bash # Description: Verify that InternalEvmError is the intended default for unknown errors and check if there's a need for more explicit handling. # Test: Search for the function usage. Expect: Proper handling or logging of unknown errors. rg --type js $'handleRunTxError'Length of output: 315
Script:
#!/bin/bash # Extract the implementation of handleRunTxError from handleEvmError.js ast-grep --lang javascript --pattern $'export const handleRunTxError = (e) => { $$$ }' packages/actions/src/Call/handleEvmError.jsLength of output: 3787
Script:
#!/bin/bash # Extract the relevant code from executeCall.js where handleRunTxError is used rg -A 10 'handleRunTxError' packages/actions/src/Call/executeCall.jsLength of output: 497
if (e instanceof Error) { | ||
if (e.message.includes("is less than the block's baseFeePerGas")) { | ||
return new InvalidGasPriceError(e.message, { cause: e }) | ||
} | ||
if (e.message.includes('invalid sender address, address is not an EOA (EIP-3607)')) { | ||
return new InvalidAddressError(e.message, { cause: e }) | ||
} | ||
if (e.message.includes('is lower than the minimum gas limit')) { | ||
return new InvalidGasLimitError(e.message, { cause: e }) | ||
} | ||
if (e.message.includes('tx has a higher gas limit than the block')) { | ||
return new GasLimitExceededError(e.message, { cause: e }) | ||
} | ||
if (e.message.includes('block has a different hardfork than the vm')) { | ||
return new MisconfiguredClientError(e.message, { cause: /** @type {any}*/ (e) }) | ||
} | ||
if (e.message.includes("the tx doesn't have the correct nonce.")) { | ||
return new InvalidNonceError(e.message, { cause: e }) | ||
} | ||
if (e.message.includes("sender doesn't have enough funds to send tx.")) { | ||
return new InsufficientBalanceError(e.message, { cause: /** @type {any}*/ (e) }) | ||
} | ||
if (e.message.includes("sender doesn't have enough funds to send tx. The upfront cost is")) { | ||
return new InsufficientBalanceError(e.message, { cause: /** @type {any}*/ (e) }) | ||
} | ||
return new InternalEvmError(e.message, { cause: /** @type {any}*/ (e) }) |
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.
Optimize error handling logic for clarity and maintainability.
The function handleRunTxError
uses multiple if
statements to check the error message and map it to a specific error class. This approach is prone to error and difficult to maintain as the number of conditions grows. Consider using a dictionary or map to associate error messages with their corresponding error classes, which can simplify the code and make it easier to manage.
- if (e.message.includes("is less than the block's baseFeePerGas")) {
- return new InvalidGasPriceError(e.message, { cause: e })
- }
- // other conditions...
+ const errorMap = {
+ "is less than the block's baseFeePerGas": InvalidGasPriceError,
+ "invalid sender address, address is not an EOA (EIP-3607)": InvalidAddressError,
+ // other mappings...
+ };
+
+ const errorClass = Object.keys(errorMap).find(key => e.message.includes(key));
+ if (errorClass) {
+ return new errorMap[errorClass](e.message, { cause: e });
+ }
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
if (e instanceof Error) { | |
if (e.message.includes("is less than the block's baseFeePerGas")) { | |
return new InvalidGasPriceError(e.message, { cause: e }) | |
} | |
if (e.message.includes('invalid sender address, address is not an EOA (EIP-3607)')) { | |
return new InvalidAddressError(e.message, { cause: e }) | |
} | |
if (e.message.includes('is lower than the minimum gas limit')) { | |
return new InvalidGasLimitError(e.message, { cause: e }) | |
} | |
if (e.message.includes('tx has a higher gas limit than the block')) { | |
return new GasLimitExceededError(e.message, { cause: e }) | |
} | |
if (e.message.includes('block has a different hardfork than the vm')) { | |
return new MisconfiguredClientError(e.message, { cause: /** @type {any}*/ (e) }) | |
} | |
if (e.message.includes("the tx doesn't have the correct nonce.")) { | |
return new InvalidNonceError(e.message, { cause: e }) | |
} | |
if (e.message.includes("sender doesn't have enough funds to send tx.")) { | |
return new InsufficientBalanceError(e.message, { cause: /** @type {any}*/ (e) }) | |
} | |
if (e.message.includes("sender doesn't have enough funds to send tx. The upfront cost is")) { | |
return new InsufficientBalanceError(e.message, { cause: /** @type {any}*/ (e) }) | |
} | |
return new InternalEvmError(e.message, { cause: /** @type {any}*/ (e) }) | |
if (e instanceof Error) { | |
const errorMap = { | |
"is less than the block's baseFeePerGas": InvalidGasPriceError, | |
"invalid sender address, address is not an EOA (EIP-3607)": InvalidAddressError, | |
"is lower than the minimum gas limit": InvalidGasLimitError, | |
"tx has a higher gas limit than the block": GasLimitExceededError, | |
"block has a different hardfork than the vm": MisconfiguredClientError, | |
"the tx doesn't have the correct nonce.": InvalidNonceError, | |
"sender doesn't have enough funds to send tx.": InsufficientBalanceError, | |
"sender doesn't have enough funds to send tx. The upfront cost is": InsufficientBalanceError | |
}; | |
const errorClass = Object.keys(errorMap).find(key => e.message.includes(key)); | |
if (errorClass) { | |
return new errorMap[errorClass](e.message, { cause: e }); | |
} | |
return new InternalEvmError(e.message, { cause: /** @type {any}*/ (e) }); | |
} |
ValueOverflowError, | ||
] | ||
|
||
errorCases.forEach((constructor) => { |
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.
Avoid shadowing global properties
Using constructor
as a variable name shadows a global property, which can lead to confusion and potential bugs. Consider renaming this variable to something more descriptive and less likely to conflict with global properties, like errorConstructor
.
- errorCases.forEach((constructor) => {
+ errorCases.forEach((errorConstructor) => {
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
errorCases.forEach((constructor) => { | |
errorCases.forEach((errorConstructor) => { |
Tools
Biome
[error] 121-121: Do not shadow the global "constructor" property. (lint/suspicious/noShadowRestrictedNames)
Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.
super( | ||
message, | ||
{ | ||
...args, | ||
docsBaseUrl: 'https://tevm.sh', | ||
docsPath: '/reference/tevm/errors/classes/noforktransportseterror/', | ||
}, | ||
'NoForkTransportSetError', | ||
) |
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.
Refactor suggestion for constructor parameter handling.
The constructor correctly sets default values for docsBaseUrl
and docsPath
. However, consider checking if these properties are already provided in args
to avoid overriding them with default values.
- docsBaseUrl: 'https://tevm.sh',
- docsPath: '/reference/tevm/errors/classes/noforktransportseterror/',
+ docsBaseUrl: args.docsBaseUrl ?? 'https://tevm.sh',
+ docsPath: args.docsPath ?? '/reference/tevm/errors/classes/noforktransportseterror/',
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
super( | |
message, | |
{ | |
...args, | |
docsBaseUrl: 'https://tevm.sh', | |
docsPath: '/reference/tevm/errors/classes/noforktransportseterror/', | |
}, | |
'NoForkTransportSetError', | |
) | |
super( | |
message, | |
{ | |
...args, | |
docsBaseUrl: args.docsBaseUrl ?? 'https://tevm.sh', | |
docsPath: args.docsPath ?? '/reference/tevm/errors/classes/noforktransportseterror/', | |
}, | |
'NoForkTransportSetError', | |
) |
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ `main` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `main`.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ # Releases ## @tevm/[email protected] ### Patch Changes - [#1232](#1232) [`a170f0f`](a170f0f) Thanks [@roninjin10](https://github.com/roninjin10)! - Fixed issues with error handling and added unit testing ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[]: - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - [#1232](#1232) [`a170f0f`](a170f0f) Thanks [@roninjin10](https://github.com/roninjin10)! - Fixed issues with error handling and added unit testing - Updated dependencies \[[`a170f0f`](a170f0f), [`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f), [`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - [#1232](#1232) [`a170f0f`](a170f0f) Thanks [@roninjin10](https://github.com/roninjin10)! - Fix bug with error tags not being set properly - [#1232](#1232) [`a170f0f`](a170f0f) Thanks [@roninjin10](https://github.com/roninjin10)! - Fixed issues with error handling and added unit testing ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`6595da4`](6595da4), [`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - [#1232](#1232) [`a170f0f`](a170f0f) Thanks [@roninjin10](https://github.com/roninjin10)! - Fixed issues with error handling and added unit testing ## @tevm/[email protected] ### Patch Changes - [#1234](#1234) [`6595da4`](6595da4) Thanks [@roninjin10](https://github.com/roninjin10)! - Add more jsdoc to MemoryClient docs - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f), [`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - [#1232](#1232) [`a170f0f`](a170f0f) Thanks [@roninjin10](https://github.com/roninjin10)! - Fixed issues with error handling and added unit testing - Updated dependencies \[[`a170f0f`](a170f0f), [`6595da4`](6595da4), [`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f), [`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[]: - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f), [`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - [#1232](#1232) [`a170f0f`](a170f0f) Thanks [@roninjin10](https://github.com/roninjin10)! - Fixed issues with error handling and added unit testing - Updated dependencies \[[`a170f0f`](a170f0f), [`a170f0f`](a170f0f)]: - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[[`a170f0f`](a170f0f), [`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] ## @tevm/[email protected] ### Patch Changes - Updated dependencies \[]: - @tevm/[email protected] - @tevm/[email protected] ## [email protected] ### Patch Changes - [#1232](#1232) [`a170f0f`](a170f0f) Thanks [@roninjin10](https://github.com/roninjin10)! - Fixed issues with error handling and added unit testing - Updated dependencies \[[`a170f0f`](a170f0f), [`6595da4`](6595da4), [`a170f0f`](a170f0f)]: - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] - @tevm/[email protected] Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Description
Concise description of proposed changes
Testing
Explain the quality checks that have been done on the code changes
Additional Information
Your ENS/address:
Summary by CodeRabbit
Tests
cloneVmWithBlockTag
,executeCall
,shouldCreateTransaction
, andvalidateCallParams
.Error Handling Improvements
BaseError
,ExecutionError
,GasLimitExceededError
,InternalEvmError
,InvalidJumpError
,ForkError
,NoForkUriSetError
).Refactor