tapbundle/ts/tapbundle.classes.taptools.ts

63 lines
1.4 KiB
TypeScript
Raw Permalink Normal View History

import * as plugins from './tapbundle.plugins';
import { TapTest } from './tapbundle.classes.taptest';
2017-04-28 07:49:57 +00:00
2017-10-10 15:14:14 +00:00
export interface IPromiseFunc {
(): Promise<any>;
2017-10-10 15:14:14 +00:00
}
2017-04-28 07:49:57 +00:00
export class TapTools {
/**
* the referenced TapTest
*/
private _tapTest: TapTest;
2017-04-28 07:49:57 +00:00
constructor(TapTestArg) {
this._tapTest = TapTestArg;
2017-04-28 07:49:57 +00:00
}
/**
* allow failure
*/
2019-04-10 10:56:17 +00:00
public allowFailure() {
this._tapTest.failureAllowed = true;
2017-04-28 07:49:57 +00:00
}
/**
* async/await delay method
*/
2019-04-10 10:56:17 +00:00
public async delayFor(timeMilliArg) {
await plugins.smartdelay.delayFor(timeMilliArg);
2017-04-28 07:49:57 +00:00
}
2019-04-10 10:56:17 +00:00
public async delayForRandom(timeMilliMinArg, timeMilliMaxArg) {
await plugins.smartdelay.delayForRandom(timeMilliMinArg, timeMilliMaxArg);
2017-10-10 15:14:14 +00:00
}
2019-04-10 10:56:17 +00:00
public async timeout(timeMilliArg: number) {
const timeout = new plugins.smartdelay.Timeout(timeMilliArg);
timeout.makeUnrefed();
await timeout.promise;
2017-04-28 07:49:57 +00:00
if (this._tapTest.status === 'pending') {
this._tapTest.status = 'timeout';
2017-04-28 07:49:57 +00:00
}
}
2019-04-10 10:56:17 +00:00
public async checkIterationLeak(iterationfuncArg: IPromiseFunc) {
2019-08-22 21:57:27 +00:00
console.log('iteration leakage checks disabled for now due to incompatibilities with node v12');
2019-04-10 10:56:17 +00:00
}
2017-10-10 15:14:14 +00:00
2019-04-10 10:56:17 +00:00
public async returnError(throwingFuncArg: IPromiseFunc) {
let funcErr: Error;
2017-10-10 15:14:14 +00:00
try {
await throwingFuncArg();
2017-10-10 15:14:14 +00:00
} catch (err) {
funcErr = err;
2017-10-10 15:14:14 +00:00
}
return funcErr;
2017-10-10 15:14:14 +00:00
}
2019-04-10 10:56:17 +00:00
2019-04-10 10:56:55 +00:00
public defer() {
2019-04-10 10:56:17 +00:00
return plugins.smartpromise.defer();
}
2017-04-28 07:49:57 +00:00
}