diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2017-10-05 20:56:28 +0800 |
---|---|---|
committer | Leonid Logvinov <logvinov.leon@gmail.com> | 2017-10-05 20:56:28 +0800 |
commit | 721d969a85f9a3f19542e22c71ec3d43c73510c2 (patch) | |
tree | ec446205bad9e8fcb6928a2be1c46b495504287b /test/utils | |
parent | 7bcedc27b8ed4d710ffc8c4f589211106475d899 (diff) | |
download | dexon-0x-contracts-721d969a85f9a3f19542e22c71ec3d43c73510c2.tar.gz dexon-0x-contracts-721d969a85f9a3f19542e22c71ec3d43c73510c2.tar.zst dexon-0x-contracts-721d969a85f9a3f19542e22c71ec3d43c73510c2.zip |
Make it possible to have multiple layers of snapshots
Diffstat (limited to 'test/utils')
-rw-r--r-- | test/utils/blockchain_lifecycle.ts | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/test/utils/blockchain_lifecycle.ts b/test/utils/blockchain_lifecycle.ts index 50eb57b95..9fdf0e856 100644 --- a/test/utils/blockchain_lifecycle.ts +++ b/test/utils/blockchain_lifecycle.ts @@ -2,19 +2,22 @@ import {RPC} from './rpc'; export class BlockchainLifecycle { private rpc: RPC; - private snapshotId: number; + private snapshotIdsStack: number[]; constructor() { this.rpc = new RPC(); + this.snapshotIdsStack = []; } // TODO: In order to run these tests on an actual node, we should check if we are running against // TestRPC, if so, use snapshots, otherwise re-deploy contracts before every test public async startAsync(): Promise<void> { - this.snapshotId = await this.rpc.takeSnapshotAsync(); + const snapshotId = await this.rpc.takeSnapshotAsync(); + this.snapshotIdsStack.push(snapshotId); } public async revertAsync(): Promise<void> { - const didRevert = await this.rpc.revertSnapshotAsync(this.snapshotId); + const snapshotId = this.snapshotIdsStack.pop() as number; + const didRevert = await this.rpc.revertSnapshotAsync(snapshotId); if (!didRevert) { - throw new Error(`Snapshot with id #${this.snapshotId} failed to revert`); + throw new Error(`Snapshot with id #${snapshotId} failed to revert`); } } } |