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

Avoid hanging with parallel_tests #746

Merged
merged 1 commit into from
Sep 16, 2019
Merged

Avoid hanging with parallel_tests #746

merged 1 commit into from
Sep 16, 2019

Conversation

annaswims
Copy link
Contributor

@annaswims annaswims commented Sep 11, 2019

ParallelTests.last_process? returns true if the process is the last one to start. We are
interested in the last test to finish so we want to use ParallelTests.number_of_running_processes

Because it's possible to have the parallel_tests gem in your project and still run tests serially we
want to also check if tests are currently being run in parallel. If ENV['TEST_ENV_NUMBER'] is defined we know tests are currently being run in parallel.

ParallelTests.last_process? retuns true if the process is the last one to start.  We are
interested in the last test to finish so we want to use ParallelTests.number_of_running_processes

Because it's possible to have the parallel_tests gem in your project and still run tests serially we
want to also check if tests are currently being run in parallel.  If ENV['TEST_ENV_NUMBER'] is defined
we know tests are currently being run in parallel.
@mcmoyer
Copy link

mcmoyer commented Sep 11, 2019

applying this fix is allowing me to run parallel specs with SimpleCov v0.17.0 again

@annaswims
Copy link
Contributor Author

Glad to hear it @mcmoyer! By any chance is your coverage report correct? My tests don't hang any more, but the coverage report is way low and I haven't had a chance to look into it yet.

@mcmoyer
Copy link

mcmoyer commented Sep 11, 2019

@annaswims - my coverage report appears correct.

@deivid-rodriguez
Copy link
Collaborator

This seems to have fixed some hangs in the activeadmin's test suite as well.

Copy link
Collaborator

@PragTob PragTob left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🙏

Hey, thanks a bunch @annaswims for the fix and for others to try it out. 💚

I'll cut try to cut a patch release for 0.17.0 with this right after the merge.

I wasn't aware that the new version introduced problems :( Bug reports would have been appreciated. I'm currently not actively using SimpleCov myself.

image

@PragTob PragTob merged commit 5e550da into simplecov-ruby:master Sep 16, 2019
@PragTob
Copy link
Collaborator

PragTob commented Sep 16, 2019

New version is released: https://rubygems.org/gems/simplecov/versions/0.17.1

@PragTob
Copy link
Collaborator

PragTob commented Sep 16, 2019

There was an open issue, I missed it. Sorry everyone 😞

@mcmoyer
Copy link

mcmoyer commented Sep 16, 2019

heck, I’m just happy to see it addressed so quickly. Thanks for the quick turn around.

@PragTob
Copy link
Collaborator

PragTob commented Sep 16, 2019

@mcmoyer sure, thanks :) However it's sad that it was in the wild for 2.5 months, one of the drawbacks of not working on a big ruby app where I'd test out every release immediately any more. Plus reduced OSS time :| I'm glad I checked in today.

@annaswims annaswims deleted the parallel_test_finish branch September 16, 2019 19:16
@deivid-rodriguez
Copy link
Collaborator

Thanks everyone for fixing and releasing this! Will upgrade activeadmin test suite to use 0.17.1, and get back here after I confirm the issue is really gone.

@deivid-rodriguez
Copy link
Collaborator

We did get a jruby crash after the upgrade, but haven't seen any hangs while using this code. My guess is that the crash was previously happening too, but being hidden by the hang. So I think this PR should be good, but I'll update again if I see any issues.

@PragTob
Copy link
Collaborator

PragTob commented Sep 17, 2019

@deivid-rodriguez thanks! You might want to report the crash to our JRuby friends so that they can have a look :)

@deivid-rodriguez
Copy link
Collaborator

Yes, I'll definitely report it! :)

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Nov 2, 2019
Update ruby-simplecov to 0.17.1.


0.17.1 (2019-09-16)
===================

Bugfix release for problems with ParallelTests.

## Bugfixes

* Avoid hanging with parallel_tests. See [#746](simplecov-ruby/simplecov#746) (thanks [@annaswims](https://github.com/annaswims))

0.17.0 (2019-07-02)
===================

Maintenance release with nice convenience features and important bugfixes.
Notably this **will be the last release to support ruby versions that have reached their end of life**. Moving forward official CRuby support will be 2.4+ and JRuby support will be 9.1+. Older versions might still work but no guarantees.

## Enhancements

* Per default filter hidden files and folders. See [#721](simplecov-ruby/simplecov#721) (thanks [Renuo AG](https://www.renuo.ch))
* Print the exit status explicitly when it's not a successful build so it's easier figure out SimpleCov failed the build in the output. See [#688](simplecov-ruby/simplecov#688) (thanks [@daemonsy](https://github.com/daemonsy))

## Bugfixes

* Avoid a premature failure exit code when setting `minimum_coverage` in combination with using [parallel_tests](https://github.com/grosser/parallel_tests). See [#706](simplecov-ruby/simplecov#706) (thanks [@f1sherman](https://github.com/f1sherman))
* Project roots with special characters no longer cause crashes. See [#717](simplecov-ruby/simplecov#717) (thanks [@deivid-rodriguez](https://github.com/deivid-rodriguez))
* Avoid continously overriding test results with manual `ResultMergere.store_results` usage. See [#674](simplecov-ruby/simplecov#674) (thanks [@tomeon](https://github.com/tomeon))
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Feb 5, 2020
Update ruby-simplecov to  0.18.1.

0.18.1 (2020-01-31)
===================

Small Bugfix release.

## Bugfixes
* Just putting `# :nocov:` on top of a file or having an uneven number of them in general works again and acts as if ignoring until the end of the file. See [#846](simplecov-ruby/simplecov#846) and thanks [@DannyBen](https://github.com/DannyBen) for the report.

0.18.0 (2020-01-28)
===================

Huge release! Highlights are support for branch coverage (Ruby 2.5+) and dropping support for EOL'ed Ruby versions (< 2.4).
Please also read the other beta patch notes.

## Enhancements
* You can now define the minimum expected coverage by criterion like `minimum_coverage line: 90, branch: 80`
* Memoized some internal data structures that didn't change to reduce SimpleCov overhead
* Both `FileList` and `SourceFile` now have a `coverage` method that returns a hash that points from a coverage criterion to a `CoverageStatistics` object for uniform access to overall coverage statistics for both line and branch coverage

## Bugfixes
* we were losing precision by rounding the covered strength early, that has been removed. **For Formatters** this also means that you may need to round it yourself now.
* Removed an inconsistency in how we treat skipped vs. irrelevant lines (see [#565](simplecov-ruby/simplecov#565)) - SimpleCov's definition of 100% is now "You covered everything that you could" so if coverage is 0/0 that's counted as a 100% no matter if the lines were irrelevant or ignored/skipped

## Noteworthy
* `FileList` stopped inheriting from Array, it includes Enumerable so if you didn't use Array specific methods on it in formatters you should be fine

0.18.0.beta3 (2020-01-20)
========================

## Enhancements
* Instead of ignoring old `.resultset.json`s that are inside the merge timeout, adapt and respect them

## Bugfixes
* Remove the constant warning printing if you still have a `.resultset.json` in pre 0.18 layout that is within your merge timeout

0.18.0.beta2 (2020-01-19)
===================

## Enhancements
* only turn on the requested coverage criteria (when activating branch coverage before SimpleCov would also instruct Ruby to take Method coverage)
* Change how branch coverage is displayed, now it's `branch_type: hit_count` which should be more self explanatory. See [#830](simplecov-ruby/simplecov#830) for an example and feel free to give feedback!
* Allow early running exit tasks and avoid the `at_exit` hook through the `SimpleCov.run_exit_tasks!` method. (thanks [@macumber](https://github.com/macumber))
* Allow manual collation of result sets through the `SimpleCov.collate` entrypoint. See the README for more details (thanks [@ticky](https://github.com/ticky))
* Within `case`, even if there is no `else` branch declared show missing coverage for it (aka no branch of it). See [#825](simplecov-ruby/simplecov#825)
* Stop symbolizing all keys when loading cache (should lead to be faster and consume less memory)
* Cache whether we can use/are using branch coverage (should be slightly faster)

## Bugfixes
* Fix a crash that happened when an old version of our internal cache file `.resultset.json` was still present

0.18.0.beta1 (2020-01-05)
===================

This is a huge release highlighted by changing our support for ruby versions to 2.4+ (so things that aren't EOL'ed) and finally adding branch coverage support!

This release is still beta because we'd love for you to test out branch coverage and get your feedback before doing a full release.

On a personal note from [@PragTob](https://github.com/PragTob/) thanks to [ruby together](https://rubytogether.org/) for sponsoring this work on SimpleCov making it possible to deliver this and subsequent releases.

## Breaking
* Dropped support for all EOL'ed rubies meaning we only support 2.4+. Simplecov can no longer be installed on older rubies, but older simplecov releases should still work. (thanks [@deivid-rodriguez](https://github.com/deivid-rodriguez))
* Dropped the `rake simplecov` task that "magically" integreated with rails. It was always undocumented, caused some issues and [had some issues](simplecov-ruby/simplecov#689 (comment)). Use the integration as described in the README please :)

## Enhancements

* Branch coverage is here! Please try it out and test it! You can activate it with `enable_coverage :branch`. See the README for more details. This is thanks to a bunch of people most notably [@som4ik](https://github.com/som4ik), [@tycooon](https://github.com/tycooon), [@stepozer](https://github.com/stepozer),  [@klyonrad](https://github.com/klyonrad) and your humble maintainers also contributed ;)
* If the minimum coverage is set to be greater than 100, a warning will be shown. See [#737](simplecov-ruby/simplecov#737) (thanks [@belfazt](https://github.com/belfazt))
* Add a configuration option to disable the printing of non-successful exit statuses. See [#747](simplecov-ruby/simplecov#746) (thanks [@JacobEvelyn](https://github.com/JacobEvelyn))
* Calculating 100% coverage is now stricter, so 100% means 100%. See [#680](simplecov-ruby/simplecov#680) thanks [@gleseur](https://github.com/gleseur)

## Bugfixes

* Add new instance of `Minitest` constant. The `MiniTest` constant (with the capital T) will be removed in the next major release of Minitest. See [#757](simplecov-ruby/simplecov#757) (thanks [@adam12](https://github.com/adam12))
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.

4 participants