Skip to content
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

Fix issue #64 #185

Merged
merged 4 commits into from
Sep 11, 2013
Merged

Fix issue #64 #185

merged 4 commits into from
Sep 11, 2013

Conversation

jshraibman-mdsol
Copy link
Contributor

This fixes the data corruption problem seen in this comment of issue #64.

Finished tests in 4.232778s, 27.4052 tests/s, 33.3115 assertions/s.

116 tests, 141 assertions, 0 failures, 0 errors, 0 skips
/Users/jshraibman/.rvm/rubies/ruby-1.9.3-p125/bin/ruby -S bundle exec cucumber
Using the default profile...
.............................................................................................................................................................................................................................

44 scenarios (44 passed)
217 steps (217 passed)
1m59.931s

@jshraibman-mdsol
Copy link
Contributor Author

UPDATE: Thanks to changes in parallel_tests this PR now totally fixes issue #64 (when run with parallel_tests >= 0.9.2)

@brendandoyle
Copy link

Any idea if you will accept this pull request? Run into an error quite often running with parallel_test, it would be nice to have the locking implemented

@colszowka
Copy link
Collaborator

Oh, bloody hell, I didn't yet? I was feeling all comfortable for the last months for having people smarter than me solving the hard problems, in the belief I had merged and shipped this. Thanks for bringing this back up. I will be shipping 0.8.0 over easter, and this will be part of it.

@michaelglass
Copy link

sweet.

@flomotlik
Copy link

Any update on this?

@greygoo
Copy link

greygoo commented Apr 29, 2013

Will this still be in 0.8.0?

@mikezter
Copy link

ship it! 👍

@ronwsmith
Copy link

👍

3 similar comments
@baburdick
Copy link

👍

@zekefast
Copy link

zekefast commented Jul 1, 2013

👍

@kostya
Copy link

kostya commented Jul 7, 2013

👍

@rtlong
Copy link

rtlong commented Aug 6, 2013

:shipit:

@tgaff
Copy link

tgaff commented Aug 21, 2013

@jshraibman-mdsol I'm actually having more issues with this.
Any thoughts?

/Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/json-1.8.0/lib/json/common.rb:155:in `parse': 795: unexpected token at '42962 (MultiJson::LoadError)
  }
}
'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/json-1.8.0/lib/json/common.rb:155:in `parse'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/multi_json-1.7.9/lib/multi_json/adapters/json_common.rb:16:in `load'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/multi_json-1.7.9/lib/multi_json/adapter.rb:19:in `load'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/multi_json-1.7.9/lib/multi_json.rb:118:in `load'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/bundler/gems/simplecov-10186bca60c3/lib/simplecov/json.rb:8:in `parse'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/bundler/gems/simplecov-10186bca60c3/lib/simplecov/result_merger.rb:16:in `resultset'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/bundler/gems/simplecov-10186bca60c3/lib/simplecov/result_merger.rb:65:in `store_result'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/bundler/gems/simplecov-10186bca60c3/lib/simplecov.rb:60:in `block in result'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/lockfile-2.1.0/lib/lockfile.rb:275:in `block in lock'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/lockfile-2.1.0/lib/lockfile.rb:517:in `block (2 levels) in attempt'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/lockfile-2.1.0/lib/lockfile.rb:517:in `catch'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/lockfile-2.1.0/lib/lockfile.rb:517:in `block in attempt'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/lockfile-2.1.0/lib/lockfile.rb:517:in `loop'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/lockfile-2.1.0/lib/lockfile.rb:517:in `attempt'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/gems/lockfile-2.1.0/lib/lockfile.rb:201:in `lock'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/bundler/gems/simplecov-10186bca60c3/lib/simplecov.rb:59:in `result'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/bundler/gems/simplecov-10186bca60c3/lib/simplecov/configuration.rb:133:in `block in at_exit'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/bundler/gems/simplecov-10186bca60c3/lib/simplecov/defaults.rb:52:in `call'
    from /Users/dev/.rvm/gems/ruby-2.0.0-p247@r10/bundler/gems/simplecov-10186bca60c3/lib/simplecov/defaults.rb:52:in `block in <top (required)>'

@ronwsmith
Copy link

@tgaff, every time I've seen that it's been fixed by blowing away the coverage directory. I have a feeling it has something to do with attempting to merge older results.

@jshraibman-mdsol
Copy link
Contributor Author

@tgaff Are you having that issue with my branch? (sorry I didn't see your post when you originally made it)

@colszowka colszowka merged commit 10186bc into simplecov-ruby:master Sep 11, 2013
@colszowka
Copy link
Collaborator

Believe it or not everyone, but I finally got my act together and merged this! Thanks a lot for your patience! I will ship 0.8.0.pre2 right away, a regular release should be coming within a few days (mostly, I gotta bring the Changelog up to shape...)

@colszowka
Copy link
Collaborator

In other news, there was recently another pull request on this, #223. What I like about the approach there is that it does not require a dependency on the Lockfile gem. Simplecov being a rather lowlevel library should cause as little dependency hell as possible, and while the lockfile gem is very stable, using built-in ruby functionality is preferrable. Any thoughts?

Edit: Point in case, the Lockfile Gem yields a lot of warnings on the test suite. This is a major annoyance for people running Ruby at a non-default warning level and simplecov should avoid these as best as it can. Example:

/home/travis/.rvm/rubies/ruby-1.9.3-p448/bin/ruby -w -I"lib:lib:test" -I"/home/travis/.rvm/gems/ruby-1.9.3-p448/gems/rake-10.0.4/lib" "/home/travis/.rvm/gems/ruby-1.9.3-p448/gems/rake-10.0.4/lib/rake/rake_test_loader.rb" "test/test_1_8_fallbacks.rb" "test/test_command_guesser.rb" "test/test_deleted_source.rb" "test/test_file_list.rb" "test/test_filters.rb" "test/test_merge_helpers.rb" "test/test_result.rb" "test/test_return_codes.rb" "test/test_source_file.rb" "test/test_source_file_line.rb" 
/home/travis/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/openssl/ssl-internal.rb:91: warning: assigned but unused variable - id
/home/travis/.rvm/gems/ruby-1.9.3-p448/gems/lockfile-2.1.0/lib/lockfile.rb:71: warning: optional boolean argument is obsoleted
/home/travis/.rvm/gems/ruby-1.9.3-p448/gems/lockfile-2.1.0/lib/lockfile.rb:72: warning: optional boolean argument is obsoleted
/home/travis/.rvm/gems/ruby-1.9.3-p448/gems/lockfile-2.1.0/lib/lockfile.rb:73: warning: optional boolean argument is obsoleted
/home/travis/.rvm/gems/ruby-1.9.3-p448/gems/lockfile-2.1.0/lib/lockfile.rb:74: warning: optional boolean argument is obsoleted
/home/travis/.rvm/gems/ruby-1.9.3-p448/gems/lockfile-2.1.0/lib/lockfile.rb:75: warning: optional boolean argument is obsoleted

@jshraibman-mdsol
Copy link
Contributor Author

I think the lockfile gem is more likely to work on more platforms. I could try patching lockfile to get rid of those warnings but I don't know where the master repo is right now (rubygems.org seems to be point to an older github repo).

I added lockfile as a simple hack that worked. A more complete solution would have each test run dump its own json file, and the last one would then combine all of those, so there wouldn't be a lot of locking (if any) required.

@colszowka
Copy link
Collaborator

You're right, especially on JRuby that flock aproach might fail. Gotta research that. Actually I would like to make the resultset storage more flexible and independent from the current File-backed implementation, but that might end up in a mess. Use case for some other storage endpoint would be exemplified by https://github.com/engineyard/simplecov-s3, which has to jump through an awful lot of hoops to accomplish what they want. Having a pluggable i.e. redis backend would make this much easier, but obviously the Lockfile approach would utterly fail there.

@baburdick
Copy link

Thanks @colszowka!

@Bredoxon
Copy link

I was having this same problem after I've updated a few gems, it was happening when running my cucumber features with and without parallel. So deleting the coverage folder solve the problem.

/home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/json-1.8.0/lib/json/common.rb:155:in `parse': 795: unexpected token at '' (MultiJson::LoadError)
        from /home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/json-1.8.0/lib/json/common.rb:155:in `parse'
        from /home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.8.0/lib/multi_json/adapters/json_common.rb:16:in `load'
        from /home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.8.0/lib/multi_json/adapter.rb:20:in `load'
        from /home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.8.0/lib/multi_json.rb:120:in `load'
        from /home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/json.rb:8:in `parse'
        from /home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/result_merger.rb:16:in `resultset'
        from /home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/result_merger.rb:65:in `store_result'
        from /home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov.rb:48:in `result'
        from /home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/configuration.rb:133:in `block in at_exit'
        from /home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/defaults.rb:52:in `call'
        from /home/fpaterno/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/defaults.rb:52:in `block in <top (required)>'

@tgaff
Copy link

tgaff commented Nov 6, 2013

@jshraibman-mdsol sorry for the late reply. Yes, I was having that issue with your branch. I'm now trying with 0.8.0.pre2. The issue seems to only occur in the parallel_tests env.

@jshraibman-mdsol
Copy link
Contributor Author

To be clear you are starting w/o a coverage directory, running parallel_tests, and then you run into that problem? What version of parallel_tests?

jsonn pushed a commit to jsonn/pkgsrc that referenced this pull request Mar 15, 2014
v0.8.2, 2013-11-20 ([changes](simplecov-ruby/simplecov@v0.8.1...v0.8.2))
=====================

## Bugfixes

  * Replaced the locking behaviour [via lockfile gem](simplecov-ruby/simplecov#185) with
    plain Ruby explicit file locking when merging results. This should make simplecov merging to behave well
    on Windows again.
    See [#258](simplecov-ruby/simplecov#258) and
    [#223](simplecov-ruby/simplecov#223) (thanks to @tomykaira)

v0.8.1, 2013-11-10 ([changes](simplecov-ruby/simplecov@v0.8.0...v0.8.1))
=====================

## Bugfixes

  * Fixed a regression introduced in 0.8.0 - the Forwardable STDLIB module is now required explicitly.
    See [#256](simplecov-ruby/simplecov#256) (thanks to @kylev)

v0.8.0, 2013-11-10 ([changes](simplecov-ruby/simplecov@v0.7.1...v0.8.0))
=====================

**Note: Yanked the same day because of the regression that 0.8.1 fixes, see above**

## TL;DR

It's been way too long since the last official release 0.7.1, but this was partly due to it proving itself
quite stable in most circumstances. This release brings various further stability improvements to result set merging
(especially when working with parallel_tests), the configuration, source file encodings, and command name guessing.

The 0.8 line is the last one to cooperate with Ruby < 1.9. Starting with 0.9, SimpleCov will assume to be running in
Ruby 1.9+, and will not try to detect or bail silently on older Ruby versions. An appropriate deprecation warning
has been added.

## Features

  * Configuration blocks now have access to variables and methods outside of the block's scope.
    See [#238](simplecov-ruby/simplecov#238) (thanks to @ms-tg)
  * You can now have a global `~/.simplecov` configuration file.
    See [#195](simplecov-ruby/simplecov#195) (thanks to @spagalloco)
  * simplecov-html now uses the MIT-licensed colorbox plugin. Some adjustments when viewing source files,
    including retaining the currently open file on refresh have been added.
    See [simplecov-html #15](simplecov-ruby/simplecov-html#15) (thanks to @chetan)
  * Adds support for Rails 4 command guessing, removes default group `vendor/plugins`.
    See [#181](simplecov-ruby/simplecov#181) and
    [#203](simplecov-ruby/simplecov#203) (thanks to @semanticart and @phallstrom)
  * You can now load simplecov without the default settings by doing `require 'simplecov/no_defaults'`
    or setting `ENV['SIMPLECOV_NO_DEFAULTS']`. Check `simplecov/defaults` to see what preconfigurations are getting
    dropped by using this. See [#209](simplecov-ruby/simplecov#209) (thanks to @ileitch)
  * The result set merging now uses the `lockfile` gem to avoid race conditions.
    See [#185](simplecov-ruby/simplecov#185) (thanks to @jshraibman-mdsol).
  * Automatically detect the usage of parallel_tests and adjust the command name with the test env number accordingly,
    See [#64](simplecov-ruby/simplecov#64) and
    [#185](simplecov-ruby/simplecov#185) (thanks to @jshraibman-mdsol).

## Enhancements

  * Rename adapters to "profiles" given that they are bundles of settings. The old adapter methods are
    deprecated, but remain available for now.
    See [#207](simplecov-ruby/simplecov#207) (thanks to @mikerobe)
  * Tweaks to the automatic test suite naming. In particular, `rspec/features` should now
    be correctly attributed to RSpec, not Cucumber.
    See [#212](simplecov-ruby/simplecov#212) (thanks to @ersatzryan and @betelgeuse)
  * MiniTest should now be identified correctly by the command name guesser.
    See [#244](simplecov-ruby/simplecov#244) (thanks to @envygeeks)
  * Makes SimpleCov resilient to inclusion of mathn library.
    See [#175](simplecov-ruby/simplecov#175) and
    [#140](simplecov-ruby/simplecov#140) (thanks to @scotje)
  * Allow coverage_dir to be an absolute path.
  * See [#190](simplecov-ruby/simplecov#190) (thanks to @jshraibman-mdsol)
  * The internal cucumber test suite now uses Capybara 2.
    See [#206](simplecov-ruby/simplecov#206) (thanks to @infertux)
  * Work-arounds for the Coverage library shipped in JRuby 1.6 to behave in line with MRI.
    See [#174](simplecov-ruby/simplecov#174) (thanks to @grddev)
  * Fix warning: instance variable @exit_status not initialized.
    See [#242](simplecov-ruby/simplecov#242) and
    [#213](simplecov-ruby/simplecov#213) (thanks to @sferik and @infertux)

## Bugfixes

  * Correct result calculations for people using :nocov: tags.
    See [#215](simplecov-ruby/simplecov#215) (thanks to @aokolish)
  * Average hits per line for groups of files is now computed correctly.
    See [#192](http://github.com/colszowka/simplecov/pull/192) and
    [#179](http://github.com/colszowka/simplecov/issues/179) (thanks to @Graysonwright)
  * Compatability with BINARY internal encoding.
    See [#194](simplecov-ruby/simplecov#194) and
    [#127](simplecov-ruby/simplecov#127) (thanks to @justfalter)
  * Special characters in `SimpleCov.root` are now correctly escaped before being used as a RegExp.
    See [#204](simplecov-ruby/simplecov#204) and
    [#237](simplecov-ruby/simplecov#237) (thanks to @rli9)
jsonn pushed a commit to jsonn/pkgsrc that referenced this pull request Mar 17, 2014
v0.8.2, 2013-11-20 ([changes](simplecov-ruby/simplecov@v0.8.1...v0.8.2))
=====================

## Bugfixes

  * Replaced the locking behaviour [via lockfile gem](simplecov-ruby/simplecov#185) with
    plain Ruby explicit file locking when merging results. This should make simplecov merging to behave well
    on Windows again.
    See [#258](simplecov-ruby/simplecov#258) and
    [#223](simplecov-ruby/simplecov#223) (thanks to @tomykaira)

v0.8.1, 2013-11-10 ([changes](simplecov-ruby/simplecov@v0.8.0...v0.8.1))
=====================

## Bugfixes

  * Fixed a regression introduced in 0.8.0 - the Forwardable STDLIB module is now required explicitly.
    See [#256](simplecov-ruby/simplecov#256) (thanks to @kylev)

v0.8.0, 2013-11-10 ([changes](simplecov-ruby/simplecov@v0.7.1...v0.8.0))
=====================

**Note: Yanked the same day because of the regression that 0.8.1 fixes, see above**

## TL;DR

It's been way too long since the last official release 0.7.1, but this was partly due to it proving itself
quite stable in most circumstances. This release brings various further stability improvements to result set merging
(especially when working with parallel_tests), the configuration, source file encodings, and command name guessing.

The 0.8 line is the last one to cooperate with Ruby < 1.9. Starting with 0.9, SimpleCov will assume to be running in
Ruby 1.9+, and will not try to detect or bail silently on older Ruby versions. An appropriate deprecation warning
has been added.

## Features

  * Configuration blocks now have access to variables and methods outside of the block's scope.
    See [#238](simplecov-ruby/simplecov#238) (thanks to @ms-tg)
  * You can now have a global `~/.simplecov` configuration file.
    See [#195](simplecov-ruby/simplecov#195) (thanks to @spagalloco)
  * simplecov-html now uses the MIT-licensed colorbox plugin. Some adjustments when viewing source files,
    including retaining the currently open file on refresh have been added.
    See [simplecov-html #15](simplecov-ruby/simplecov-html#15) (thanks to @chetan)
  * Adds support for Rails 4 command guessing, removes default group `vendor/plugins`.
    See [#181](simplecov-ruby/simplecov#181) and
    [#203](simplecov-ruby/simplecov#203) (thanks to @semanticart and @phallstrom)
  * You can now load simplecov without the default settings by doing `require 'simplecov/no_defaults'`
    or setting `ENV['SIMPLECOV_NO_DEFAULTS']`. Check `simplecov/defaults` to see what preconfigurations are getting
    dropped by using this. See [#209](simplecov-ruby/simplecov#209) (thanks to @ileitch)
  * The result set merging now uses the `lockfile` gem to avoid race conditions.
    See [#185](simplecov-ruby/simplecov#185) (thanks to @jshraibman-mdsol).
  * Automatically detect the usage of parallel_tests and adjust the command name with the test env number accordingly,
    See [#64](simplecov-ruby/simplecov#64) and
    [#185](simplecov-ruby/simplecov#185) (thanks to @jshraibman-mdsol).

## Enhancements

  * Rename adapters to "profiles" given that they are bundles of settings. The old adapter methods are
    deprecated, but remain available for now.
    See [#207](simplecov-ruby/simplecov#207) (thanks to @mikerobe)
  * Tweaks to the automatic test suite naming. In particular, `rspec/features` should now
    be correctly attributed to RSpec, not Cucumber.
    See [#212](simplecov-ruby/simplecov#212) (thanks to @ersatzryan and @betelgeuse)
  * MiniTest should now be identified correctly by the command name guesser.
    See [#244](simplecov-ruby/simplecov#244) (thanks to @envygeeks)
  * Makes SimpleCov resilient to inclusion of mathn library.
    See [#175](simplecov-ruby/simplecov#175) and
    [#140](simplecov-ruby/simplecov#140) (thanks to @scotje)
  * Allow coverage_dir to be an absolute path.
  * See [#190](simplecov-ruby/simplecov#190) (thanks to @jshraibman-mdsol)
  * The internal cucumber test suite now uses Capybara 2.
    See [#206](simplecov-ruby/simplecov#206) (thanks to @infertux)
  * Work-arounds for the Coverage library shipped in JRuby 1.6 to behave in line with MRI.
    See [#174](simplecov-ruby/simplecov#174) (thanks to @grddev)
  * Fix warning: instance variable @exit_status not initialized.
    See [#242](simplecov-ruby/simplecov#242) and
    [#213](simplecov-ruby/simplecov#213) (thanks to @sferik and @infertux)

## Bugfixes

  * Correct result calculations for people using :nocov: tags.
    See [#215](simplecov-ruby/simplecov#215) (thanks to @aokolish)
  * Average hits per line for groups of files is now computed correctly.
    See [#192](http://github.com/colszowka/simplecov/pull/192) and
    [#179](http://github.com/colszowka/simplecov/issues/179) (thanks to @Graysonwright)
  * Compatability with BINARY internal encoding.
    See [#194](simplecov-ruby/simplecov#194) and
    [#127](simplecov-ruby/simplecov#127) (thanks to @justfalter)
  * Special characters in `SimpleCov.root` are now correctly escaped before being used as a RegExp.
    See [#204](simplecov-ruby/simplecov#204) and
    [#237](simplecov-ruby/simplecov#237) (thanks to @rli9)
jsonn pushed a commit to jsonn/pkgsrc that referenced this pull request Oct 11, 2014
v0.8.2, 2013-11-20 ([changes](simplecov-ruby/simplecov@v0.8.1...v0.8.2))
=====================

## Bugfixes

  * Replaced the locking behaviour [via lockfile gem](simplecov-ruby/simplecov#185) with
    plain Ruby explicit file locking when merging results. This should make simplecov merging to behave well
    on Windows again.
    See [#258](simplecov-ruby/simplecov#258) and
    [#223](simplecov-ruby/simplecov#223) (thanks to @tomykaira)

v0.8.1, 2013-11-10 ([changes](simplecov-ruby/simplecov@v0.8.0...v0.8.1))
=====================

## Bugfixes

  * Fixed a regression introduced in 0.8.0 - the Forwardable STDLIB module is now required explicitly.
    See [#256](simplecov-ruby/simplecov#256) (thanks to @kylev)

v0.8.0, 2013-11-10 ([changes](simplecov-ruby/simplecov@v0.7.1...v0.8.0))
=====================

**Note: Yanked the same day because of the regression that 0.8.1 fixes, see above**

## TL;DR

It's been way too long since the last official release 0.7.1, but this was partly due to it proving itself
quite stable in most circumstances. This release brings various further stability improvements to result set merging
(especially when working with parallel_tests), the configuration, source file encodings, and command name guessing.

The 0.8 line is the last one to cooperate with Ruby < 1.9. Starting with 0.9, SimpleCov will assume to be running in
Ruby 1.9+, and will not try to detect or bail silently on older Ruby versions. An appropriate deprecation warning
has been added.

## Features

  * Configuration blocks now have access to variables and methods outside of the block's scope.
    See [#238](simplecov-ruby/simplecov#238) (thanks to @ms-tg)
  * You can now have a global `~/.simplecov` configuration file.
    See [#195](simplecov-ruby/simplecov#195) (thanks to @spagalloco)
  * simplecov-html now uses the MIT-licensed colorbox plugin. Some adjustments when viewing source files,
    including retaining the currently open file on refresh have been added.
    See [simplecov-html #15](simplecov-ruby/simplecov-html#15) (thanks to @chetan)
  * Adds support for Rails 4 command guessing, removes default group `vendor/plugins`.
    See [#181](simplecov-ruby/simplecov#181) and
    [#203](simplecov-ruby/simplecov#203) (thanks to @semanticart and @phallstrom)
  * You can now load simplecov without the default settings by doing `require 'simplecov/no_defaults'`
    or setting `ENV['SIMPLECOV_NO_DEFAULTS']`. Check `simplecov/defaults` to see what preconfigurations are getting
    dropped by using this. See [#209](simplecov-ruby/simplecov#209) (thanks to @ileitch)
  * The result set merging now uses the `lockfile` gem to avoid race conditions.
    See [#185](simplecov-ruby/simplecov#185) (thanks to @jshraibman-mdsol).
  * Automatically detect the usage of parallel_tests and adjust the command name with the test env number accordingly,
    See [#64](simplecov-ruby/simplecov#64) and
    [#185](simplecov-ruby/simplecov#185) (thanks to @jshraibman-mdsol).

## Enhancements

  * Rename adapters to "profiles" given that they are bundles of settings. The old adapter methods are
    deprecated, but remain available for now.
    See [#207](simplecov-ruby/simplecov#207) (thanks to @mikerobe)
  * Tweaks to the automatic test suite naming. In particular, `rspec/features` should now
    be correctly attributed to RSpec, not Cucumber.
    See [#212](simplecov-ruby/simplecov#212) (thanks to @ersatzryan and @betelgeuse)
  * MiniTest should now be identified correctly by the command name guesser.
    See [#244](simplecov-ruby/simplecov#244) (thanks to @envygeeks)
  * Makes SimpleCov resilient to inclusion of mathn library.
    See [#175](simplecov-ruby/simplecov#175) and
    [#140](simplecov-ruby/simplecov#140) (thanks to @scotje)
  * Allow coverage_dir to be an absolute path.
  * See [#190](simplecov-ruby/simplecov#190) (thanks to @jshraibman-mdsol)
  * The internal cucumber test suite now uses Capybara 2.
    See [#206](simplecov-ruby/simplecov#206) (thanks to @infertux)
  * Work-arounds for the Coverage library shipped in JRuby 1.6 to behave in line with MRI.
    See [#174](simplecov-ruby/simplecov#174) (thanks to @grddev)
  * Fix warning: instance variable @exit_status not initialized.
    See [#242](simplecov-ruby/simplecov#242) and
    [#213](simplecov-ruby/simplecov#213) (thanks to @sferik and @infertux)

## Bugfixes

  * Correct result calculations for people using :nocov: tags.
    See [#215](simplecov-ruby/simplecov#215) (thanks to @aokolish)
  * Average hits per line for groups of files is now computed correctly.
    See [#192](http://github.com/colszowka/simplecov/pull/192) and
    [#179](http://github.com/colszowka/simplecov/issues/179) (thanks to @Graysonwright)
  * Compatability with BINARY internal encoding.
    See [#194](simplecov-ruby/simplecov#194) and
    [#127](simplecov-ruby/simplecov#127) (thanks to @justfalter)
  * Special characters in `SimpleCov.root` are now correctly escaped before being used as a RegExp.
    See [#204](simplecov-ruby/simplecov#204) and
    [#237](simplecov-ruby/simplecov#237) (thanks to @rli9)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.