bcoe / c8

output coverage reports using Node.js' built in coverage
ISC License
2k stars 91 forks source link

Missing files using `c8 report` on windows #183

Open j03m opened 4 years ago

j03m commented 4 years ago

I'm observing that we are ignoring certain files from the coverage report on windows due to a quirk in the way test-exclude works.

When we get here on windows: https://github.com/bcoe/c8/blob/master/lib/report.js#L253

We end up at this block in include/exclude: https://github.com/istanbuljs/test-exclude/blob/master/is-outside-dir-win32.js#L9 (which is for win32)

This code is sensitive to case. :( The fix will need to go there, but I need to get an approval before I can PR.

But in summary, given the case of paths like dir/filename: D:\dev\some\long / d:\dev\some\long\path\to\my.js this code:

return !minimatch(path.resolve(dir, filename), path.join(dir, '**'), dot);

Will return true, incorrectly indicating that the file is outside our cwd, Whereas including nocase in the options (supplied as dot) will correctly return false.

bcoe commented 4 years ago

CC: @coreyfarrell

coreyfarrell commented 4 years ago

@bcoe I've commented on the test-exclude issue, I need some guidance before I can implement a patch for this issue.

connor4312 commented 9 months ago

I hit this again recently trying to build coverage instrumentation for VS Code's extensions. This is pretty nasty since it seems like V8's coverage reports don't have any specific drive letter casing; I observe both uppercase and lowercase drive letters in the same coverage file.