From f53068d64de3679637c13807a858b777c81cfba5 Mon Sep 17 00:00:00 2001 From: Shinnosuke Watanabe Date: Wed, 1 May 2019 05:25:30 +0900 Subject: [PATCH] create a separate file to detect bridges --- lib/is-cjs-esm-bridge.js | 10 ++++++++++ lib/report.js | 12 ++---------- 2 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 lib/is-cjs-esm-bridge.js diff --git a/lib/is-cjs-esm-bridge.js b/lib/is-cjs-esm-bridge.js new file mode 100644 index 00000000..1be7b2bf --- /dev/null +++ b/lib/is-cjs-esm-bridge.js @@ -0,0 +1,10 @@ +module.exports = ({functions}) => { + // https://github.com/nodejs/node/blob/v12.1.0/lib/internal/modules/esm/create_dynamic_module.js#L11-L19 + return v8ScriptCov.functions.length === 3 && + v8ScriptCov.functions[0].functionName === '' && + v8ScriptCov.functions[0].isBlockCoverage === true && + v8ScriptCov.functions[1].functionName === 'get' && + v8ScriptCov.functions[1].isBlockCoverage === false && + v8ScriptCov.functions[2].functionName === 'set' && + v8ScriptCov.functions[2].isBlockCoverage === true +}; diff --git a/lib/report.js b/lib/report.js index 5f005717..0c9fbad2 100644 --- a/lib/report.js +++ b/lib/report.js @@ -8,6 +8,7 @@ const { isAbsolute, resolve } = require('path') // TODO: switch back to @c88/v8-coverage once patch is landed. const { mergeProcessCovs } = require('@bcoe/v8-coverage') const v8toIstanbul = require('v8-to-istanbul') +const isCjsEsmBridgeCov = require('./is-cjs-mjs-bridge') class Report { constructor ({ @@ -70,16 +71,7 @@ class Report { resultCountPerPath.set(path, 0) } - // https://github.com/nodejs/node/blob/v12.0.0/lib/internal/modules/esm/create_dynamic_module.js#L12-L20 - if ( - v8ScriptCov.functions.length === 3 && - v8ScriptCov.functions[0].functionName === '' && - v8ScriptCov.functions[0].isBlockCoverage === true && - v8ScriptCov.functions[1].functionName === 'get' && - v8ScriptCov.functions[1].isBlockCoverage === false && - v8ScriptCov.functions[2].functionName === 'set' && - v8ScriptCov.functions[2].isBlockCoverage === true - ) { + if (isCjsEsmBridgeCov(v8ScriptCov)) { possibleCjsEsmBridges.set(script, { path, functions: v8ScriptCov.functions