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 incompatibility with simplecov < 0.18 #25

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

RobinDaugherty
Copy link

@RobinDaugherty RobinDaugherty commented Nov 4, 2020

SimpleCov.branch_coverage? was added in simplecov 0.18. When an older version of simplecov is installed, the lcov formatter dies in the middle of generating the output.

Formatter SimpleCov::Formatter::LcovFormatter failed with NoMethodError: undefined method branch_coverage?' for SimpleCov:Module (/usr/local/var/rbenv/versions/2.3.8/lib/ruby/gems/2.3.0/gems/simplecov-lcov-0.8.0/lib/simplecov-lcov.rb:90:in format_file')

Unfortunately this project's gemspec doesn't specify the version of simplecov that it requires. So the solution is to check for the existence of this method before calling it.

This doesn't fix release 0.8.0 of simplecov-lcov. So a project could still install an incompatible combination of simplecov and simplecov-lcov. But with this change in a newer release, they should end up with a compatible combination of the two packages.

@lnxbil
Copy link

lnxbil commented Apr 20, 2022

Thank you for posting the solution, which works but is still not merged.

If you need a simple local fix, just monkeypatch via .simplecov:

require 'simplecov-lcov'
SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter

if ! SimpleCov.respond_to?(:branch_coverage?)
    module SimpleCov
        def self.branch_coverage?
            false
        end
    end
end

SimpleCov::Formatter::LcovFormatter.config do |c|
    c.output_directory = 'coverage' # default: "coverage/lcov"
end

lnxbil added a commit to lnxbil/vscode-code-coverage that referenced this pull request Apr 20, 2022
With `bashcov` and the following configuration for `simplecov` can you get coverage reports for you shell scripts.

```ruby
# gem install simplecov-lcov simplecov-console
require 'simplecov-lcov'
require 'simplecov-console'

SimpleCov.start do
    add_filter %r{^/.git}
end

# Monkeypatch
# fortissimo1997/simplecov-lcov#25
if ! SimpleCov.respond_to?(:branch_coverage?)
    module SimpleCov
        def self.branch_coverage?
            false
        end
    end
end
SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true
SimpleCov::Formatter::LcovFormatter.config do |c|
    c.output_directory = 'coverage' # default: "coverage/lcov"
    c.lcov_file_name = 'lcov.info'

end

SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
    SimpleCov::Formatter::LcovFormatter,
    SimpleCov::Formatter::HTMLFormatter,
    SimpleCov::Formatter::Console
])
```
markis pushed a commit to markis/vscode-code-coverage that referenced this pull request Apr 20, 2022
With `bashcov` and the following configuration for `simplecov` can you get coverage reports for you shell scripts.

```ruby
# gem install simplecov-lcov simplecov-console
require 'simplecov-lcov'
require 'simplecov-console'

SimpleCov.start do
    add_filter %r{^/.git}
end

# Monkeypatch
# fortissimo1997/simplecov-lcov#25
if ! SimpleCov.respond_to?(:branch_coverage?)
    module SimpleCov
        def self.branch_coverage?
            false
        end
    end
end
SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true
SimpleCov::Formatter::LcovFormatter.config do |c|
    c.output_directory = 'coverage' # default: "coverage/lcov"
    c.lcov_file_name = 'lcov.info'

end

SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
    SimpleCov::Formatter::LcovFormatter,
    SimpleCov::Formatter::HTMLFormatter,
    SimpleCov::Formatter::Console
])
```
markis pushed a commit to markis/vscode-code-coverage that referenced this pull request Apr 22, 2022
With `bashcov` and the following configuration for `simplecov` can you get coverage reports for you shell scripts.

```ruby
# gem install simplecov-lcov simplecov-console
require 'simplecov-lcov'
require 'simplecov-console'

SimpleCov.start do
    add_filter %r{^/.git}
end

# Monkeypatch
# fortissimo1997/simplecov-lcov#25
if ! SimpleCov.respond_to?(:branch_coverage?)
    module SimpleCov
        def self.branch_coverage?
            false
        end
    end
end
SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true
SimpleCov::Formatter::LcovFormatter.config do |c|
    c.output_directory = 'coverage' # default: "coverage/lcov"
    c.lcov_file_name = 'lcov.info'

end

SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
    SimpleCov::Formatter::LcovFormatter,
    SimpleCov::Formatter::HTMLFormatter,
    SimpleCov::Formatter::Console
])
```
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.

2 participants