From c0c6154ec1294b1287fe75ca27839e04d24cdd6f Mon Sep 17 00:00:00 2001 From: Amir Bandeali Date: Thu, 5 Dec 2019 13:07:39 -0800 Subject: [PATCH] Add fork option to describe and blockchainTests --- contracts/test-utils/src/mocha_blockchain.ts | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/contracts/test-utils/src/mocha_blockchain.ts b/contracts/test-utils/src/mocha_blockchain.ts index aa13658c7e..78b2f75cfa 100644 --- a/contracts/test-utils/src/mocha_blockchain.ts +++ b/contracts/test-utils/src/mocha_blockchain.ts @@ -18,6 +18,7 @@ export type BlockchainSuiteCallback = (this: ISuiteCallbackContext, env: Blockch export type BlockchainContextDefinitionCallback = (description: string, callback: BlockchainSuiteCallback) => T; export interface ContextDefinition extends mocha.IContextDefinition { optional: ContextDefinitionCallback; + fork: ContextDefinitionCallback; } /** @@ -31,6 +32,7 @@ interface BlockchainContextDefinitionPartial { only: BlockchainContextDefinitionCallback; skip: BlockchainContextDefinitionCallback; optional: BlockchainContextDefinitionCallback; + fork: BlockchainContextDefinitionCallback; (description: string, callback: BlockchainSuiteCallback): ISuite; } @@ -97,6 +99,10 @@ export const describe = _.assign(mochaDescribe, { const describeCall = process.env.TEST_ALL ? mochaDescribe : mochaDescribe.skip; return describeCall(description, callback); }, + fork(description: string, callback: SuiteCallback): ISuite | void { + const describeCall = process.env.FORK_RPC_URL ? mochaDescribe.only : mochaDescribe.skip; + return describeCall(description, callback); + }, }) as ContextDefinition; /** @@ -116,6 +122,13 @@ export const blockchainTests: BlockchainContextDefinition = _.assign( optional(description: string, callback: BlockchainSuiteCallback): ISuite | void { return defineBlockchainSuite(description, callback, process.env.TEST_ALL ? describe : describe.skip); }, + fork(description: string, callback: BlockchainSuiteCallback): ISuite | void { + return defineBlockchainSuite( + description, + callback, + process.env.FORK_RPC_URL ? describe.only : describe.skip, + ); + }, resets: _.assign( function(description: string, callback: BlockchainSuiteCallback): ISuite { return defineBlockchainSuite(description, callback, function( @@ -150,6 +163,14 @@ export const blockchainTests: BlockchainContextDefinition = _.assign( return defineResetsSuite(_description, _callback, describe.optional); }); }, + fork(description: string, callback: BlockchainSuiteCallback): ISuite | void { + return defineBlockchainSuite(description, callback, function( + _description: string, + _callback: SuiteCallback, + ): ISuite | void { + return defineResetsSuite(_description, _callback, describe.fork); + }); + }, }, ), },