vuejs / rollup-plugin-vue

Roll .vue files
https://vuejs.github.io/rollup-plugin-vue
MIT License
843 stars 148 forks source link

Error creating istanbul html report due to invalid file name #336

Open albertodeago opened 4 years ago

albertodeago commented 4 years ago

Version

5.0.0

Reproduction link

https://github.com/albertodeago/vue-webcomponent/tree/feature/coverage-issue

Steps to reproduce

What is expected?

The coverage step should not fail and a coverage report should be collected

What is actually happening?

The coverage step (with istanbul) is failing


Looks like it's failing because the html is trying to create files with invalid names. This is because it tries to create the files for the Vue component with the rollup-plugin-vue queryparams

e.g. file named TodoList.vue?rollup-plugin-vue=script.js

Looks like in the dist the bundled contains code like this

....
function cov_18z3v2j7yj() {
  var path = "C:\\wamp64\\www\\tests\\vue-webcomponent\\src\\components\\todoList\\TodoList.vue?rollup-plugin-vue=script.js";
  var hash = "e531caef3b1a08cf4b4cbc787bd69c985ff3e66d";
  var global = new Function("return this")();
  var gcv = "__coverage__";
  var coverageData = {
    path: "C:\\wamp64\\www\\tests\\vue-webcomponent\\src\\components\\todoList\\TodoList.vue?rollup-plugin-vue=script.js",
....

I think istanbul then is trying to create files with the name contained in "path" and thus it fails. I opened an issue to babel-plugin-istanbul here because i though it was the babel plugin to do this but they say it's not there.

hy-inger commented 4 years ago

Got the same problem. The path '*?rollup-plugin-vue=script.js' is invalid. Is there any solution?

wxsms commented 4 years ago

My coverage runs, but results:

image

the report for MultiSelect.vue is broken and incorrect:

image

the report data for MultiSelect.vue?rollup-plugin-vue=script.js seems correct but not viewable:

image

What I expect:

  1. *.vue file should have correct coverage.
  2. *?rollup-plugin-vue=script.js file should not appear.