Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix coverage.branchMap else location. #633

Merged
merged 3 commits into from Oct 6, 2021
Merged

Fix coverage.branchMap else location. #633

merged 3 commits into from Oct 6, 2021

Conversation

adrian-burlacu-software
Copy link
Contributor

@adrian-burlacu-software adrian-burlacu-software commented Sep 30, 2021

The else statement in an if ... else statement is not correct.
Input code:
if (x) { output = x; } else { output = false; }

Problem output:
branchMap: ..."1": { "loc": { "start": { "line": 7, "column": 2 }, "end": { "line": 12, "column": 3 } }, "type": "if", "locations": [{ "start": { "line": 7, "column": 2 }, "end": { "line": 12, "column": 3 } }, { "start": { "line": 7, // PROBLEM "column": 2 }, "end": { "line": 12, "column": 3 } } ], "line": 7 }

Expected output:
branchMap: ..."1": { "loc": { "start": { "line": 7, "column": 2 }, "end": { "line": 12, "column": 3 } }, "type": "if", "locations": [{ "start": { "line": 7, "column": 2 }, "end": { "line": 12, "column": 3 } }, { "start": { "line": 10, // CORRECT "column": 7 }, "end": { "line": 12, "column": 3 } } ], "line": 7 }

Caveats: Your testing code on fails to test the map properties, so I also omitted those tests because they are too far outside the scope of fixing this single bug. Cheerio to the team of my fave JavaScript coverage library.

@@ -420,7 +420,7 @@ function coverIfBranches(path) {
if (ignoreElse) {
this.setAttr(n.alternate, 'skip-all', true);
} else {
this.insertBranchCounter(path.get('alternate'), branch, n.loc);
this.insertBranchCounter(path.get('alternate'), branch);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I'm understanding correctly, does this end up using the column position of the alternate node, whereas before it was the start of the if?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

exactly,
before: the line and column was both at the start of the if.
after: line+col at the else. If no else/next alternate, then result is alternate locations[1]: {start: {}, end: {}}
thank you!!

Copy link
Member

@bcoe bcoe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left nit and a question.

Version # updated by the tooling.

Co-authored-by: Benjamin E. Coe <bencoe@google.com>
@bcoe bcoe merged commit eb4b4ec into istanbuljs:master Oct 6, 2021
@bcoe
Copy link
Member

bcoe commented Oct 6, 2021

@adrian-burlacu-software thank you for the contribution 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants