diff --git a/packages/istanbul-lib-instrument/src/visitor.js b/packages/istanbul-lib-instrument/src/visitor.js index f21bc86f..7a231188 100644 --- a/packages/istanbul-lib-instrument/src/visitor.js +++ b/packages/istanbul-lib-instrument/src/visitor.js @@ -484,6 +484,8 @@ const codeVisitor = { ArrowFunctionExpression: entries(convertArrowExpression, coverFunction), AssignmentPattern: entries(coverAssignmentPattern), BlockStatement: entries(), // ignore processing only + ExportDefaultDeclaration: entries(), // ignore processing only + ExportNamedDeclaration: entries(), // ignore processing only ClassMethod: entries(coverFunction), ClassDeclaration: entries(parenthesizedExpressionProp('superClass')), ObjectMethod: entries(coverFunction), diff --git a/packages/istanbul-lib-instrument/test/varia.test.js b/packages/istanbul-lib-instrument/test/varia.test.js index 8a44ab4a..ef77d92a 100644 --- a/packages/istanbul-lib-instrument/test/varia.test.js +++ b/packages/istanbul-lib-instrument/test/varia.test.js @@ -66,6 +66,41 @@ describe('varia', function() { ); }); + it('honors ignore next for exported functions', function() { + /* https://github.com/istanbuljs/istanbuljs/issues/297 */ + var v = verifier.create( + '/* istanbul ignore next*/ export function fn1() {}' + + '/* istanbul ignore next*/ export default function() {}', + { generateOnly: true }, + { esModules: true } + ), + code; + assert.ok(!v.err); + code = v.getGeneratedCode(); + assert.ok( + code.match( + /}\(\);export function fn1\(\){}export default function\(\){}/ + ) + ); + }); + + it('instruments exported functions', function() { + /* https://github.com/istanbuljs/istanbuljs/issues/297 */ + var v = verifier.create( + 'export function fn1() {}' + 'export default function() {}', + { generateOnly: true }, + { esModules: true } + ), + code; + assert.ok(!v.err); + code = v.getGeneratedCode(); + assert.ok( + code.match( + /}\(\);export function fn1\(\){cov_(.+)\.f\[\d+\]\+\+;}export default function\(\){cov_(.+)\.f\[\d+\]\+\+;}/ + ) + ); + }); + it('returns last coverage object', function(cb) { var instrumenter = new Instrumenter({ coverageVariable: '__testing_coverage__'