Implemented contract instantiation and invocation for integration tests #1988
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
cargo-contract
orpallet-contracts
?This PR implements instantiate_contract(), invoke_contract(), invoke_contract_delegate() and a few other functions for the integration testing environment. More specifically, it permits calling these functions from inside contracts transparently, as if the contract was running on the blockchain.
Description
()
, instead of!
. A further modification was needed on execute_dispatchable() to avoid a compiler error when return_value() doesn't return!
. When test_instantiate is enabled, AnOk(())
is added at the end of the functions (for constructor as well as for message dispatch), thus allowing the test-case to proceed.CHANGELOG.md
Other notes
To test a contract that uses instantiate_contract() in the off-chain environment, use
cargo test --features test_instantiate
.Regarding the build errors in the doc tests, I've been trying to resolve them, but it's difficult without any way to see the macro expansion. When I move the code inside the comments to an actual contract it compiles correctly. Is there any way to move forward with this? Can I mark the comments as no_compile and add equivalent integration tests to catch breaking changes?