-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Istanbul: Coverage ignore doesn't work for default in switch #6153
Comments
Looks like https://esbuild.egoist.dev/#W1siaW5kZXgudH...: switch (option) {
...
/* This is removed -- @preserve */
/* istanbul ignore next -- @preserve */
default: {
/* This is preserved -- @preserve */
/* istanbul ignore next -- @preserve */
return 'Not a foo, not a bar';
}
} Becomes: switch (option) {
...
default: {
/* This is preserved -- @preserve */
/* istanbul ignore next -- @preserve */
return "Not a foo, not a bar";
}
} I don't think there are any work-arounds for this unfortunately. |
@AriPerkkio thanks for looking into it! I'll file an issue to esbuild. Should this issue be closed or left for tracking purposes? |
We can leave this as open as it's now marked as |
I haven't use vitest's coverage tool before so maybe I'm wrong. Does vitest support sourcemaps in coverage report? At least I know c8 supports it which is working perfectly on my tiny projects (like this one). In addition integrating esbuild in tests like this is quite simple. Here's the source code of my tiny ts loader. Sourcemap support is obviously useful here because the report can find the original comments from the source instead of from the transpiled js. |
@hyrious sure it does support. Without source maps code coverage in Vitest would be useless as most users are using code transforms.
Istanbul's instrumentation is done to the transpiled code, not the source codes. vitest/packages/coverage-istanbul/src/provider.ts Lines 167 to 171 in 073a50c
|
Describe the bug
If
switch...case
is used anddefault
statement is not covered by tests and/* istanbul ignore next -- @preserve */
used for ignoring the branch, it still shows up as uncovered.I tried different combinations with double slash comment and wrapping
default
into a block, which produced the same result.Reproduction
https://stackblitz.com/edit/github-rzcfqv
System Info
Used Package Manager
npm
Validations
The text was updated successfully, but these errors were encountered: