-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
feat: don't use vite-node in coverage packages #8304
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
feat: don't use vite-node in coverage packages #8304
Conversation
✅ Deploy Preview for vitest-dev ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
@AriPerkkio can you help me with this one? Coverage went up for some files and I am not sure why |
The web transformed result is producing invalid coverage. In Object.defineProperty(__vite_ssr_exports__, "padding", { enumerable: true, configurable: true, get(){ try { return padding } catch {} }});
Object.defineProperty(__vite_ssr_exports__, "sum", { enumerable: true, configurable: true, get(){ try { return sum } catch {} }});
const padding = `transformMode is csr
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****`;
function sum(a, b) {
if (a === 8 && b === 9) {
return 17;
} else if (a === 2 && b === 2) {
return 4;
} else if (a === 11 && b === 22) {
return 33;
} else if (a === 10 && b === 23) {
return 33;
};
return a + b;
}
//# sourceMappingSource=vite-node
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6Ijs7QUFHTyxNQUFNLFVBQVU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFaEIsU0FBUyxJQUFJLEdBQVcsR0FBVztBQUt4QyxNQUFJLE1BQU0sS0FBSyxNQUFNLEdBQUc7QUFFdEIsV0FBTztBQUFBLEVBQ1QsV0FFUyxNQUFNLEtBQUssTUFBTSxHQUFHO0FBRTNCLFdBQU87QUFBQSxFQUNULFdBQ1MsTUFBTSxNQUFNLE1BQU0sSUFBSTtBQUU3QixXQUFPO0FBQUEsRUFDVCxXQUNTLE1BQU0sTUFBTSxNQUFNLElBQUk7QUFFN0IsV0FBTztBQUFBLEVBQ1Q7QUFHQSxTQUFPLElBQUk7QUFDYiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsibXVsdGktZW52aXJvbm1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgdmFyaWFibGUgYmVsb3cgaXMgbW9kaWZpZWQgYnkgY3VzdG9tIFZpdGUgcGx1Z2luXG4gKi9cbmV4cG9ydCBjb25zdCBwYWRkaW5nID0gJ2RlZmF1bHQtcGFkZGluZydcblxuZXhwb3J0IGZ1bmN0aW9uIHN1bShhOiBudW1iZXIsIGI6IG51bWJlcikge1xuICAvKlxuICAgKiBUaGVzZSBpZi1icmFuY2hlcyBzaG91bGQgc2hvdyBjb3JyZWN0bHkgb24gY292ZXJhZ2UgcmVwb3J0LlxuICAgKiBPdGhlcndpc2Ugc291cmNlIG1hcHMgYXJlIG9mZi5cbiAgICovXG4gIGlmIChhID09PSA4ICYmIGIgPT09IDkpIHtcbiAgICAvLyBUaGlzIGlzIG5vdCBjb3ZlcmVkIGJ5IGFueSB0ZXN0XG4gICAgcmV0dXJuIDE3XG4gIH1cbiAgLy8gQ29tbWVudFxuICBlbHNlIGlmIChhID09PSAyICYmIGIgPT09IDIpIHtcbiAgICAvLyBUaGlzIGlzIGNvdmVyZWQgYnkgU1NSIHRlc3RcbiAgICByZXR1cm4gNFxuICB9XG4gIGVsc2UgaWYgKGEgPT09IDExICYmIGIgPT09IDIyKSB7XG4gICAgLy8gVGhpcyBpcyBub3QgY292ZXJlZCBieSBhbnkgdGVzdFxuICAgIHJldHVybiAzM1xuICB9XG4gIGVsc2UgaWYgKGEgPT09IDEwICYmIGIgPT09IDIzKSB7XG4gICAgLy8gVGhpcyBpcyBjb3ZlcmVkIGJ5IFdlYiB0ZXN0XG4gICAgcmV0dXJuIDMzXG4gIH1cblxuICAvLyBUaGlzIGlzIGNvdmVyZWQgYnkgU1NSIGFuZCBXZWIgdGVzdCwgc2hvdWxkIHNob3cgMnggaGl0c1xuICByZXR1cm4gYSArIGJcbn1cbiJdLCJmaWxlIjoiL2ZpeHR1cmVzL3NyYy9tdWx0aS1lbnZpcm9ubWVudC50cyJ9 In this PR it's: export const padding = `transformMode is csr
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****`;
export function sum(a, b) {
if (a === 8 && b === 9) {
return 17;
} else if (a === 2 && b === 2) {
return 4;
} else if (a === 11 && b === 22) {
return 33;
} else if (a === 10 && b === 23) {
return 33;
}
return a + b;
} When comparing the SSR transformed ones, they are both 100% identical: Object.defineProperty(__vite_ssr_exports__, "padding", { enumerable: true, configurable: true, get(){ try { return padding } catch {} }});
Object.defineProperty(__vite_ssr_exports__, "sum", { enumerable: true, configurable: true, get(){ try { return sum } catch {} }});
const padding = `transformMode is ssr `;
function sum(a, b) {
if (a === 8 && b === 9) {
return 17;
} else if (a === 2 && b === 2) {
return 4;
} else if (a === 11 && b === 22) {
return 33;
} else if (a === 10 && b === 23) {
return 33;
};
return a + b;
}
//# sourceMappingSource=vite-node
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6Ijs7QUFHTyxNQUFNLFVBQVU7QUFFaEIsU0FBUyxJQUFJLEdBQVcsR0FBVztBQUt4QyxNQUFJLE1BQU0sS0FBSyxNQUFNLEdBQUc7QUFFdEIsV0FBTztBQUFBLEVBQ1QsV0FFUyxNQUFNLEtBQUssTUFBTSxHQUFHO0FBRTNCLFdBQU87QUFBQSxFQUNULFdBQ1MsTUFBTSxNQUFNLE1BQU0sSUFBSTtBQUU3QixXQUFPO0FBQUEsRUFDVCxXQUNTLE1BQU0sTUFBTSxNQUFNLElBQUk7QUFFN0IsV0FBTztBQUFBLEVBQ1Q7QUFHQSxTQUFPLElBQUk7QUFDYiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsibXVsdGktZW52aXJvbm1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgdmFyaWFibGUgYmVsb3cgaXMgbW9kaWZpZWQgYnkgY3VzdG9tIFZpdGUgcGx1Z2luXG4gKi9cbmV4cG9ydCBjb25zdCBwYWRkaW5nID0gJ2RlZmF1bHQtcGFkZGluZydcblxuZXhwb3J0IGZ1bmN0aW9uIHN1bShhOiBudW1iZXIsIGI6IG51bWJlcikge1xuICAvKlxuICAgKiBUaGVzZSBpZi1icmFuY2hlcyBzaG91bGQgc2hvdyBjb3JyZWN0bHkgb24gY292ZXJhZ2UgcmVwb3J0LlxuICAgKiBPdGhlcndpc2Ugc291cmNlIG1hcHMgYXJlIG9mZi5cbiAgICovXG4gIGlmIChhID09PSA4ICYmIGIgPT09IDkpIHtcbiAgICAvLyBUaGlzIGlzIG5vdCBjb3ZlcmVkIGJ5IGFueSB0ZXN0XG4gICAgcmV0dXJuIDE3XG4gIH1cbiAgLy8gQ29tbWVudFxuICBlbHNlIGlmIChhID09PSAyICYmIGIgPT09IDIpIHtcbiAgICAvLyBUaGlzIGlzIGNvdmVyZWQgYnkgU1NSIHRlc3RcbiAgICByZXR1cm4gNFxuICB9XG4gIGVsc2UgaWYgKGEgPT09IDExICYmIGIgPT09IDIyKSB7XG4gICAgLy8gVGhpcyBpcyBub3QgY292ZXJlZCBieSBhbnkgdGVzdFxuICAgIHJldHVybiAzM1xuICB9XG4gIGVsc2UgaWYgKGEgPT09IDEwICYmIGIgPT09IDIzKSB7XG4gICAgLy8gVGhpcyBpcyBjb3ZlcmVkIGJ5IFdlYiB0ZXN0XG4gICAgcmV0dXJuIDMzXG4gIH1cblxuICAvLyBUaGlzIGlzIGNvdmVyZWQgYnkgU1NSIGFuZCBXZWIgdGVzdCwgc2hvdWxkIHNob3cgMnggaGl0c1xuICByZXR1cm4gYSArIGJcbn1cbiJdLCJmaWxlIjoiL2ZpeHR1cmVzL3NyYy9tdWx0aS1lbnZpcm9ubWVudC50cyJ9 What's causing the difference? This makes the V8 script coverages With following we can see that the executed module had the injected $ pwd
/x/vitest/test/coverage-test
$ VITE_NODE_DEBUG_DUMP=1 pnpm exec vitest --config fixtures/configs/vitest.config.multi-transform.ts fixtures/test/multi-environment-fixture-web.test.ts
$ code .vite-node/dump/_fixtures_src_multi-environment_* |
|
V8 coverage report for that web/client transformed file has coverage for the We are not adding these offsets ourselves. |
Hm, this seems like a bug in Vite then. The module graph only keeps the web transform even though |
Ah, wait, it holds this value because we don't actually use the module runner transform here yet 🤦 It's part of a different PR. Seems like the changes can't be applied without fully moving to the module runner |
Description
Copied from #8208 to reduce the amount of changes and make debugging easier
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
pnpm-lock.yaml
unless you introduce a new test example.Tests
pnpm test:ci
.Documentation
pnpm run docs
command.Changesets
feat:
,fix:
,perf:
,docs:
, orchore:
.