Add fork option to describe and blockchainTests

This commit is contained in:
Amir Bandeali 2019-12-05 13:07:39 -08:00
parent cb5384c2fb
commit c0c6154ec1

View File

@ -18,6 +18,7 @@ export type BlockchainSuiteCallback = (this: ISuiteCallbackContext, env: Blockch
export type BlockchainContextDefinitionCallback<T> = (description: string, callback: BlockchainSuiteCallback) => T; export type BlockchainContextDefinitionCallback<T> = (description: string, callback: BlockchainSuiteCallback) => T;
export interface ContextDefinition extends mocha.IContextDefinition { export interface ContextDefinition extends mocha.IContextDefinition {
optional: ContextDefinitionCallback<ISuite | void>; optional: ContextDefinitionCallback<ISuite | void>;
fork: ContextDefinitionCallback<ISuite | void>;
} }
/** /**
@ -31,6 +32,7 @@ interface BlockchainContextDefinitionPartial {
only: BlockchainContextDefinitionCallback<ISuite>; only: BlockchainContextDefinitionCallback<ISuite>;
skip: BlockchainContextDefinitionCallback<void>; skip: BlockchainContextDefinitionCallback<void>;
optional: BlockchainContextDefinitionCallback<ISuite | void>; optional: BlockchainContextDefinitionCallback<ISuite | void>;
fork: BlockchainContextDefinitionCallback<ISuite | void>;
(description: string, callback: BlockchainSuiteCallback): ISuite; (description: string, callback: BlockchainSuiteCallback): ISuite;
} }
@ -97,6 +99,10 @@ export const describe = _.assign(mochaDescribe, {
const describeCall = process.env.TEST_ALL ? mochaDescribe : mochaDescribe.skip; const describeCall = process.env.TEST_ALL ? mochaDescribe : mochaDescribe.skip;
return describeCall(description, callback); 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; }) as ContextDefinition;
/** /**
@ -116,6 +122,13 @@ export const blockchainTests: BlockchainContextDefinition = _.assign(
optional(description: string, callback: BlockchainSuiteCallback): ISuite | void { optional(description: string, callback: BlockchainSuiteCallback): ISuite | void {
return defineBlockchainSuite(description, callback, process.env.TEST_ALL ? describe : describe.skip); 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( resets: _.assign(
function(description: string, callback: BlockchainSuiteCallback): ISuite { function(description: string, callback: BlockchainSuiteCallback): ISuite {
return defineBlockchainSuite(description, callback, function( return defineBlockchainSuite(description, callback, function(
@ -150,6 +163,14 @@ export const blockchainTests: BlockchainContextDefinition = _.assign(
return defineResetsSuite(_description, _callback, describe.optional); 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);
});
},
}, },
), ),
}, },