From 20eacb1cd0d277aca4f7b118359a6a341e5ab57c Mon Sep 17 00:00:00 2001 From: azu Date: Sun, 25 Aug 2019 17:50:56 +0900 Subject: [PATCH] feat(@power-doctest/javascript): support preTransform options --- .../@power-doctest/javascript/src/power-doctest-runner.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/@power-doctest/javascript/src/power-doctest-runner.ts b/packages/@power-doctest/javascript/src/power-doctest-runner.ts index 7b431f4..51bd1ae 100644 --- a/packages/@power-doctest/javascript/src/power-doctest-runner.ts +++ b/packages/@power-doctest/javascript/src/power-doctest-runner.ts @@ -28,6 +28,11 @@ export interface PowerDoctestRunnerOptions { // If runMode is any, anyone assertion is finished and resolve it // In Both, anyone is failed and reject it runMode?: "any" | "all"; + // transform function + // set code => code function if need + // Apply this transform before power-doctest transform + preTransform?: (code:string) => string; + // Internal Option powerDoctestCallbackFunctionName?: string; } @@ -37,6 +42,7 @@ export function run(code: string, options: PowerDoctestRunnerOptions = {}) { const runMode = options.runMode || "all"; const timeout = options.timeout !== undefined ? options.timeout : 2000; const postCallbackName = options.powerDoctestCallbackFunctionName || CALLBACK_FUNCTION_NAME; + const preTransform = options.preTransform ? options.preTransform : (code: string) => code; const context = options.context || {}; return new Promise((resolve, reject) => { let isSettled = false; @@ -80,7 +86,7 @@ Also, you should consider to use { "runMode": "any" }` : ""}`)); }; process.on("uncaughtException", uncaughtException); process.on("unhandledRejection", unhandledRejection as any); - const poweredCode = convertCode(code, { + const poweredCode = convertCode(preTransform(code), { assertAfterCallbackName: postCallbackName }); // total count of assert