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

Coverage analysis under rails 8 beta seems to not be working #1111

Open
gnarfle opened this issue Oct 9, 2024 · 2 comments
Open

Coverage analysis under rails 8 beta seems to not be working #1111

gnarfle opened this issue Oct 9, 2024 · 2 comments

Comments

@gnarfle
Copy link

gnarfle commented Oct 9, 2024

I recently updated an app to the rails 8 beta to play around with it and found the simplecov analysis reports a lot of missing code coverage. Attached is an example of a controller where the rails 7 version has 100% coverage and the rails 8 version says a lot of coverage is missing. These controllers are slightly reworked but the baffling part to me is that the rails 8 version declares I'm missing coverage for things like @user = User.new and params.permit not to mention saving the user, and I definitely have request specs and feature specs covering new and create here that get me 100% coverage in the rails version.

Screenshot 2024-10-09 at 8 15 01 AM Screenshot 2024-10-09 at 8 15 30 AM
@Cosmo
Copy link

Cosmo commented Oct 22, 2024

We have the same issue.
As a quick workaround, we disabled parallelize(workers: :number_of_processors) in test/test_helper.rb.

@Dandush03
Copy link

Dandush03 commented Nov 18, 2024

here is my file, it's working fine with parallelize processes

#=> test/test_helper.rb
# frozen_string_literal: true

ENV['RAILS_ENV'] ||= 'test'

require_relative 'supports/simplecov'
require_relative '../config/environment'
require 'rails/test_help'

module ActiveSupport
  class TestCase
    I18n.locale = :en
    # Run tests in parallel with specified workers

    parallelize_setup do |_worker|
      SimpleCov.command_name "Job::#{Process.pid}" if const_defined?(:SimpleCov)
    end

    parallelize(workers: :number_of_processors)

    # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
    fixtures :all

    # Add more helper methods to be used by all tests here...
  end
end
#=> test/supports/simplecov.rb
# frozen_string_literal: true

require 'simplecov'

Rake.respond_to?(:application) &&
  Rake.application.respond_to?(:top_level_tasks) &&
  Rake.application.top_level_tasks.any? { |e| e.eql?('test:prepare') }

FileUtils.rm_f('coverage/.resultset.json')

SimpleCov.minimum_coverage 100
SimpleCov.start(:rails) do
  add_filter do |source_file|
    removed_lines = 0
    relevant_lines = source_file.src.count do |line|
      line = line.strip # remove leading and trailing whitespaces
      next if line.empty? # skip empty lines
      next if line.start_with?('#') # skip comments
      next removed_lines += 1 if line.start_with?('class', 'module') # skip class, module declarations
      next if line == 'end' # skip ends

      true
    end
    relevant_lines -= removed_lines
    relevant_lines <= 1
  end

  add_filter 'vendor/gems'
  add_filter 'preview/'

  at_exit do
    SimpleCov.formatter = SimpleCov::Formatter::SimpleFormatter
    SimpleCov.result.format!
  end
end

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

No branches or pull requests

3 participants