jejacks0n / teaspoon

Teaspoon: Javascript test runner for Rails. Use Selenium, BrowserStack, or PhantomJS.
1.43k stars 243 forks source link

`coverage.ignore` is respected by `bundle exec teaspoon` but not by `rake teaspoon` #429

Open ronen opened 8 years ago

ronen commented 8 years ago

Hi, I'm starting up a new project and getting my infrastructure in place, setting up teaspoon. Since I'm using chruby my gems aren't excluded by the default config.ignore, so I added a pattern (%r{/gems/}). I also customized coverage.output_path but aside from that it's just the vanilla installation -- I haven't even written any specs yet!

I found that running bundle exec teaspoon ignores the gems as expected, but running rake teaspoon includes the gems in the coverage report. rake teaspoon does however respect coverage.output_path set in the same config block.

Any thoughts? Is this a bug or might there be there something about my environment or setup that's causing trouble?

Thanks!

TL;DR: Here's a shell session illustrating the issue. With annotation interspersed but otherwise verbatim:

versions...
$ teaspoon --version
1.1.1
$ ruby --version
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.11.1
BuildVersion:   15B42
coverage configuration... custom output path & ignore gems:
$ grep '^ *coverage' spec/teaspoon_env.rb
    coverage.reports = ["text-summary", "html"]
    coverage.output_path = "coverage-js"
    coverage.ignore += [%r{/gems/}]
run teaspoon using rake...
$ rake teaspoon
Starting the Teaspoon server...
Puma 2.14.0 starting...
* Min threads: 0, max threads: 16
* Environment: test
* Listening on tcp://0.0.0.0:53831
Teaspoon running default suite at http://127.0.0.1:53831/teaspoon/default

Finished in 0.00200 seconds
0 examples, 0 failures
OOPS! lots of code in the summary, it's almost all from the gems...
=============================== Coverage summary ===============================
Statements   : 20.38% ( 3810/18694 )
Branches     : 4.28% ( 611/14291 )
Functions    : 17.98% ( 576/3204 )
Lines        : 20.37% ( 3144/15435 )
================================================================================
...and the html output includes a bunch of gems (but notice the custom output path!)
$ grep /gems/ coverage-js/default/index.html
    <td class="file high" data-value=".gem/ruby/2.2.3/gems/jquery-ui-rails-5.0.5/app/assets/javascripts/"><a href=".gem/ruby/2.2.3/gems/jquery-ui-rails-5.0.5/app/assets/javascripts/index.html">.gem/ruby/2.2.3/gems/jquery-ui-rails-5.0.5/app/assets/javascripts/</a></td>
    <td class="file low" data-value=".gem/ruby/2.2.3/gems/jquery-ui-rails-5.0.5/app/assets/javascripts/jquery-ui/"><a href=".gem/ruby/2.2.3/gems/jquery-ui-rails-5.0.5/app/assets/javascripts/jquery-ui/index.html">.gem/ruby/2.2.3/gems/jquery-ui-rails-5.0.5/app/assets/javascripts/jquery-ui/</a></td>
    <td class="file high" data-value=".gem/ruby/2.2.3/gems/rails-assets-keen-js-3.2.7/app/assets/javascripts/"><a href=".gem/ruby/2.2.3/gems/rails-assets-keen-js-3.2.7/app/assets/javascripts/index.html">.gem/ruby/2.2.3/gems/rails-assets-keen-js-3.2.7/app/assets/javascripts/</a></td>
    <td class="file low" data-value=".gem/ruby/2.2.3/gems/rails-assets-keen-js-3.2.7/app/assets/javascripts/keen-js/"><a href=".gem/ruby/2.2.3/gems/rails-assets-keen-js-3.2.7/app/assets/javascripts/keen-js/index.html">.gem/ruby/2.2.3/gems/rails-assets-keen-js-3.2.7/app/assets/javascripts/keen-js/</a></td>
    <td class="file high" data-value=".gem/ruby/2.2.3/gems/rails-assets-listjs-1.1.1/app/assets/javascripts/"><a href=".gem/ruby/2.2.3/gems/rails-assets-listjs-1.1.1/app/assets/javascripts/index.html">.gem/ruby/2.2.3/gems/rails-assets-listjs-1.1.1/app/assets/javascripts/</a></td>
    <td class="file low" data-value=".gem/ruby/2.2.3/gems/rails-assets-listjs-1.1.1/app/assets/javascripts/listjs/"><a href=".gem/ruby/2.2.3/gems/rails-assets-listjs-1.1.1/app/assets/javascripts/listjs/index.html">.gem/ruby/2.2.3/gems/rails-assets-listjs-1.1.1/app/assets/javascripts/listjs/</a></td>
    <td class="file high" data-value=".gem/ruby/2.2.3/gems/rails-assets-lodash-3.10.1/app/assets/javascripts/"><a href=".gem/ruby/2.2.3/gems/rails-assets-lodash-3.10.1/app/assets/javascripts/index.html">.gem/ruby/2.2.3/gems/rails-assets-lodash-3.10.1/app/assets/javascripts/</a></td>
    <td class="file low" data-value=".gem/ruby/2.2.3/gems/rails-assets-lodash-3.10.1/app/assets/javascripts/lodash/"><a href=".gem/ruby/2.2.3/gems/rails-assets-lodash-3.10.1/app/assets/javascripts/lodash/index.html">.gem/ruby/2.2.3/gems/rails-assets-lodash-3.10.1/app/assets/javascripts/lodash/</a></td>
    <td class="file high" data-value=".gem/ruby/2.2.3/gems/rails-assets-react-0.14.2/app/assets/javascripts/"><a href=".gem/ruby/2.2.3/gems/rails-assets-react-0.14.2/app/assets/javascripts/index.html">.gem/ruby/2.2.3/gems/rails-assets-react-0.14.2/app/assets/javascripts/</a></td>
    <td class="file low" data-value=".gem/ruby/2.2.3/gems/rails-assets-react-0.14.2/app/assets/javascripts/react/"><a href=".gem/ruby/2.2.3/gems/rails-assets-react-0.14.2/app/assets/javascripts/react/index.html">.gem/ruby/2.2.3/gems/rails-assets-react-0.14.2/app/assets/javascripts/react/</a></td>
    <td class="file high" data-value=".gem/ruby/2.2.3/gems/rails-assets-stringjs-3.3.1/app/assets/javascripts/"><a href=".gem/ruby/2.2.3/gems/rails-assets-stringjs-3.3.1/app/assets/javascripts/index.html">.gem/ruby/2.2.3/gems/rails-assets-stringjs-3.3.1/app/assets/javascripts/</a></td>
    <td class="file low" data-value=".gem/ruby/2.2.3/gems/rails-assets-stringjs-3.3.1/app/assets/javascripts/stringjs/"><a href=".gem/ruby/2.2.3/gems/rails-assets-stringjs-3.3.1/app/assets/javascripts/stringjs/index.html">.gem/ruby/2.2.3/gems/rails-assets-stringjs-3.3.1/app/assets/javascripts/stringjs/</a></td>
now run teaspoon using bundle exec...
$ bundle exec teaspoon
Starting the Teaspoon server...
Puma 2.14.0 starting...
* Min threads: 0, max threads: 16
* Environment: test
* Listening on tcp://0.0.0.0:53858
Teaspoon running default suite at http://127.0.0.1:53858/teaspoon/default

Finished in 0.00200 seconds
0 examples, 0 failures
YAY! as expected, coverage only includes the app code...
=============================== Coverage summary ===============================
Statements   : 49.18% ( 90/183 )
Branches     : 13.33% ( 4/30 )
Functions    : 41.67% ( 25/60 )
Lines        : 41.67% ( 65/156 )
================================================================================
and similarly, the html report doesn't include the gems:
$ grep /gems/ coverage-js/default/index.html
$
mikepack commented 8 years ago

Thanks for the issue. Can you please provide the entirety of your teaspoon_env.rb?

ronen commented 8 years ago

Sure, pasted it into: https://gist.github.com/ronen/355938f8c68d87ee64fa