From cbd1c1473da0dc34051c332170544529d59eda03 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Sun, 22 Oct 2017 08:52:23 -0700 Subject: [PATCH] fix: address issue with class instrumentation (#111) --- packages/istanbul-lib-instrument/src/visitor.js | 2 +- .../istanbul-lib-instrument/test/specs/classes.yaml | 4 ++-- packages/istanbul-lib-instrument/test/varia.test.js | 11 +++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/istanbul-lib-instrument/src/visitor.js b/packages/istanbul-lib-instrument/src/visitor.js index 14cb0511..fe841fba 100644 --- a/packages/istanbul-lib-instrument/src/visitor.js +++ b/packages/istanbul-lib-instrument/src/visitor.js @@ -436,7 +436,7 @@ const codeVisitor = { AssignmentPattern: entries(coverAssignmentPattern), BlockStatement: entries(), // ignore processing only ClassMethod: entries(coverFunction), - ClassDeclaration: entries(parenthesizedExpressionProp('superClass'), coverStatement), + ClassDeclaration: entries(parenthesizedExpressionProp('superClass')), ExpressionStatement: entries(coverStatement), BreakStatement: entries(coverStatement), ContinueStatement: entries(coverStatement), diff --git a/packages/istanbul-lib-instrument/test/specs/classes.yaml b/packages/istanbul-lib-instrument/test/specs/classes.yaml index 836f0289..3af23c09 100644 --- a/packages/istanbul-lib-instrument/test/specs/classes.yaml +++ b/packages/istanbul-lib-instrument/test/specs/classes.yaml @@ -20,7 +20,7 @@ code: | tests: - name: properly instruments code out: 'MyClass' - lines: {'1': 1, '2': 1} + lines: {'2': 1} functions: {} - statements: {'0': 1, '1': 1} + statements: {'0': 1} branches: {'0': [1, 0]} diff --git a/packages/istanbul-lib-instrument/test/varia.test.js b/packages/istanbul-lib-instrument/test/varia.test.js index f8339f3e..9ba07c08 100644 --- a/packages/istanbul-lib-instrument/test/varia.test.js +++ b/packages/istanbul-lib-instrument/test/varia.test.js @@ -131,4 +131,15 @@ describe('varia', function () { assert.ok(!generated); }); }); + + // see: https://github.com/istanbuljs/istanbuljs/issues/110 + // TODO: it feels like we should be inserting line counters + // for class exports and class declarations. + it('properly exports named classes', function () { + var v = verifier.create('export class App extends Component {};', { generateOnly: true }, { esModules: true }), + code; + assert.ok(!v.err); + code = v.getGeneratedCode(); + assert.ok(code.match(/cov_(.+);export class App extends/)); + }); });