9227e78c79
* use stack of contexts to implement snapshot revert Closes #338 add exception revert test case verify partial revert mutate state after the reverted subcall polish update comments name the module after the type name remove the unnecessary Snapshot in outer layer and add snapshot unit test assert context stack is clean after tx processing cleanups fix context revert fix comments update comments it's ok to commit in failed case too Update x/evm/keeper/context_stack.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Update x/evm/keeper/context_stack.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Update x/evm/keeper/context_stack.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> update comment and error message add comment to cacheContext k -> cs Update x/evm/keeper/context_stack.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> evm can handle state revert renames and unit tests * use table driven tests * keep all the cosmos events * changelog * check for if commit function is nil * fix changelog * Update x/evm/keeper/context_stack.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
36 lines
1.0 KiB
JavaScript
36 lines
1.0 KiB
JavaScript
const TestRevert = artifacts.require("TestRevert")
|
|
const truffleAssert = require('truffle-assertions');
|
|
|
|
async function expectRevert(promise) {
|
|
try {
|
|
await promise;
|
|
} catch (error) {
|
|
if (error.message.indexOf('revert') === -1) {
|
|
expect('revert').to.equal(error.message, 'Wrong kind of exception received');
|
|
}
|
|
return;
|
|
}
|
|
expect.fail('Expected an exception but none was received');
|
|
}
|
|
|
|
contract('TestRevert', (accounts) => {
|
|
let revert
|
|
|
|
beforeEach(async () => {
|
|
revert = await TestRevert.new()
|
|
})
|
|
it('should revert', async () => {
|
|
await revert.try_set(10)
|
|
no = await revert.query_a()
|
|
assert.equal(no, '0', 'The modification on a should be reverted')
|
|
no = await revert.query_b()
|
|
assert.equal(no, '10', 'The modification on b should not be reverted')
|
|
no = await revert.query_c()
|
|
assert.equal(no, '10', 'The modification on c should not be reverted')
|
|
|
|
await revert.set(10)
|
|
no = await revert.query_a()
|
|
assert.equal(no, '10', 'The force set should not be reverted')
|
|
})
|
|
})
|