simplecov 0.9.2 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. checksums.yaml +7 -7
  2. data/.gitignore +0 -1
  3. data/.rubocop.yml +69 -0
  4. data/CHANGELOG.md +39 -22
  5. data/Gemfile +16 -15
  6. data/MIT-LICENSE +1 -1
  7. data/README.md +183 -178
  8. data/Rakefile +16 -7
  9. data/doc/alternate-formatters.md +36 -0
  10. data/doc/commercial-services.md +20 -0
  11. data/doc/editor-integration.md +13 -0
  12. data/features/rspec_basic.feature +3 -2
  13. data/features/rspec_groups_and_filters_complex.feature +2 -0
  14. data/features/rspec_groups_using_filter_class.feature +3 -2
  15. data/features/step_definitions/html_steps.rb +6 -7
  16. data/features/step_definitions/simplecov_steps.rb +18 -16
  17. data/features/step_definitions/transformers.rb +2 -2
  18. data/features/step_definitions/web_steps.rb +4 -4
  19. data/features/support/env.rb +17 -15
  20. data/lib/simplecov.rb +35 -24
  21. data/lib/simplecov/command_guesser.rb +33 -34
  22. data/lib/simplecov/configuration.rb +238 -234
  23. data/lib/simplecov/defaults.rb +37 -36
  24. data/lib/simplecov/exit_codes.rb +7 -5
  25. data/lib/simplecov/file_list.rb +38 -36
  26. data/lib/simplecov/filter.rb +12 -2
  27. data/lib/simplecov/formatter.rb +2 -2
  28. data/lib/simplecov/formatter/simple_formatter.rb +1 -1
  29. data/lib/simplecov/jruby_fix.rb +4 -4
  30. data/lib/simplecov/last_run.rb +15 -13
  31. data/lib/simplecov/merge_helpers.rb +26 -27
  32. data/lib/simplecov/no_defaults.rb +2 -2
  33. data/lib/simplecov/profiles.rb +21 -19
  34. data/lib/simplecov/railtie.rb +1 -1
  35. data/lib/simplecov/railties/tasks.rake +7 -7
  36. data/lib/simplecov/result.rb +5 -5
  37. data/lib/simplecov/result_merger.rb +65 -62
  38. data/lib/simplecov/source_file.rb +23 -24
  39. data/lib/simplecov/version.rb +20 -1
  40. data/simplecov.gemspec +14 -12
  41. data/test/faked_project/Gemfile +5 -5
  42. data/test/faked_project/Rakefile +4 -4
  43. data/test/faked_project/features/step_definitions/my_steps.rb +3 -4
  44. data/test/faked_project/features/support/env.rb +5 -5
  45. data/test/faked_project/lib/faked_project.rb +1 -1
  46. data/test/faked_project/lib/faked_project/some_class.rb +3 -4
  47. data/test/faked_project/spec/faked_spec.rb +2 -2
  48. data/test/faked_project/spec/forking_spec.rb +7 -0
  49. data/test/faked_project/spec/meta_magic_spec.rb +1 -1
  50. data/test/faked_project/spec/some_class_spec.rb +3 -3
  51. data/test/faked_project/spec/spec_helper.rb +4 -8
  52. data/test/faked_project/test/faked_test.rb +2 -2
  53. data/test/faked_project/test/meta_magic_test.rb +1 -1
  54. data/test/faked_project/test/some_class_test.rb +3 -3
  55. data/test/faked_project/test/test_helper.rb +5 -9
  56. data/test/fixtures/app/controllers/sample_controller.rb +1 -1
  57. data/test/fixtures/app/models/user.rb +1 -1
  58. data/test/fixtures/deleted_source_sample.rb +3 -3
  59. data/test/fixtures/frameworks/rspec_bad.rb +4 -4
  60. data/test/fixtures/frameworks/rspec_good.rb +4 -4
  61. data/test/fixtures/frameworks/testunit_bad.rb +3 -3
  62. data/test/fixtures/frameworks/testunit_good.rb +3 -3
  63. data/test/fixtures/resultset2.rb +0 -1
  64. data/test/fixtures/sample.rb +1 -1
  65. data/test/fixtures/utf-8.rb +1 -1
  66. data/test/helper.rb +8 -8
  67. data/test/test_1_8_fallbacks.rb +6 -6
  68. data/test/test_command_guesser.rb +7 -7
  69. data/test/test_deleted_source.rb +2 -2
  70. data/test/test_file_list.rb +8 -6
  71. data/test/test_filters.rb +29 -13
  72. data/test/test_merge_helpers.rb +26 -23
  73. data/test/test_result.rb +32 -23
  74. data/test/test_return_codes.rb +3 -3
  75. data/test/test_source_file.rb +4 -4
  76. data/test/test_source_file_line.rb +13 -13
  77. metadata +145 -63
  78. data/lib/simplecov/json.rb +0 -27
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env rake
2
2
 
3
- require 'rubygems'
4
- require 'bundler/setup'
3
+ require "rubygems"
4
+ require "bundler/setup"
5
5
  Bundler::GemHelper.install_tasks
6
6
 
7
7
  # See https://github.com/colszowka/simplecov/issues/171
@@ -12,19 +12,28 @@ end
12
12
  # Enforce proper permissions on each build
13
13
  Rake::Task[:build].prerequisites.unshift :fix_permissions
14
14
 
15
- require 'rake/testtask'
15
+ require "rake/testtask"
16
16
  Rake::TestTask.new(:test) do |test|
17
- test.libs << 'lib' << 'test'
18
- test.test_files = FileList['test/test_*.rb']
17
+ test.libs << "lib" << "test"
18
+ test.test_files = FileList["test/test_*.rb"]
19
19
  test.verbose = true
20
20
  test.warning = true
21
21
  end
22
22
 
23
+ begin
24
+ require "rubocop/rake_task"
25
+ RuboCop::RakeTask.new
26
+ rescue LoadError
27
+ task :rubocop do
28
+ $stderr.puts "Rubocop is disabled"
29
+ end
30
+ end
31
+
23
32
  # Cucumber integration test suite is for impls that work with simplecov only - a.k.a. 1.9+
24
33
  if RUBY_VERSION >= "1.9"
25
- require 'cucumber/rake/task'
34
+ require "cucumber/rake/task"
26
35
  Cucumber::Rake::Task.new
27
- task :default => [:test, :cucumber]
36
+ task :default => [:test, :cucumber, :rubocop]
28
37
  else
29
38
  task :default => [:test]
30
39
  end
@@ -0,0 +1,36 @@
1
+ ## Alternate coverage report formatters
2
+
3
+ The community around simplecov provides a whole bunch of alternate formatters beyond the official
4
+ [simplecov-html](https://github.com/colszowka/simplecov-html) gem.
5
+
6
+ If you have built or found one that is missing here, please send a Pull Request for this document!
7
+
8
+ #### [simplecov-badge](https://github.com/matthew342/simplecov-badge)
9
+ *by Matt Hale*
10
+
11
+ A formatter that generates a coverage badge for use in your project's readme using ImageMagick.
12
+
13
+ #### [simplecov-cobertura](https://github.com/dashingrocket/simplecov-cobertura)
14
+ *by Jesse Bowes*
15
+
16
+ A formatter that generates Cobertura XML.
17
+
18
+ #### [simplecov-csv](https://github.com/fguillen/simplecov-csv)
19
+ *by Fernando Guillen*
20
+
21
+ CSV formatter for SimpleCov
22
+
23
+ #### [simplecov-json](https://github.com/vicentllongo/simplecov-json)
24
+ *by Vicent Llongo*
25
+
26
+ JSON formatter for SimpleCov
27
+
28
+ #### [simplecov-rcov](https://github.com/fguillen/simplecov-rcov)
29
+ *by Fernando Guillen*
30
+
31
+ "The target of this formatter is to cheat on Hudson so I can use the Ruby metrics plugin with SimpleCov."
32
+
33
+ #### [simplecov-single_file_reporter](https://github.com/grosser/simplecov-single_file_reporter)
34
+ *by [Michael Grosser](http://grosser.it)*
35
+
36
+ A formatter that prints the coverage of the file under test when you run a single test file.
@@ -0,0 +1,20 @@
1
+ ## Commercial Services with SimpleCov integration
2
+
3
+ There is a bunch of services that offer integration with your existing CI pipeline and SimpleCov coverage
4
+ reports. Please note these are not associated with the SimpleCov project itself, so please report problems with
5
+ these integrations with their respective owners.
6
+
7
+ #### [codeclimate](https://github.com/codeclimate/ruby-test-reporter)
8
+ *by [Code Climate](https://codeclimate.com/)*
9
+
10
+ Upload coverage reports to [codeclimate.com](https://codeclimate.com/), a hosted software quality analysis and that also includes coverage reporting.
11
+
12
+ #### [codecov](https://github.com/codecov/codecov-ruby)
13
+ *by [Codecov](https://codecov.io/)*
14
+
15
+ Upload coverage reports to [codecov.io](https://codecov.io/), a hosted coverage reporting solution.
16
+
17
+ #### [coveralls](https://github.com/lemurheavy/coveralls-ruby)
18
+ *by [Coveralls](https://coveralls.io/)*
19
+
20
+ Upload coverage reports to [coveralls.io](https://coveralls.io/), a hosted coverage reporting solution.
@@ -0,0 +1,13 @@
1
+ ## Editor integration
2
+
3
+ Some editors have a graphical integration for the simplecov gem.
4
+
5
+ #### [Atom Editor: coverage](https://atom.io/packages/coverage)
6
+ *by Philip Giuliani*
7
+
8
+ Adds an overview of your current test coverage to Atom.
9
+
10
+ #### [cadre](https://github.com/nyarly/cadre)
11
+ *by Judson Lester*
12
+
13
+ Includes a formatter for Simplecov that emits a Vim script to mark up code files with coverage information.
@@ -14,14 +14,15 @@ Feature:
14
14
  When I open the coverage report generated with `bundle exec rspec spec`
15
15
  Then I should see the groups:
16
16
  | name | coverage | files |
17
- | All Files | 91.23% | 6 |
17
+ | All Files | 91.8% | 7 |
18
18
 
19
19
  And I should see the source files:
20
20
  | name | coverage |
21
21
  | lib/faked_project.rb | 100.0 % |
22
- | lib/faked_project/some_class.rb | 80.0 % |
22
+ | lib/faked_project/some_class.rb | 80.0 % |
23
23
  | lib/faked_project/framework_specific.rb | 75.0 % |
24
24
  | lib/faked_project/meta_magic.rb | 100.0 % |
25
+ | spec/forking_spec.rb | 100.0 % |
25
26
  | spec/meta_magic_spec.rb | 100.0 % |
26
27
  | spec/some_class_spec.rb | 100.0 % |
27
28
 
@@ -15,6 +15,7 @@ Feature: Sophisticated grouping and filtering on RSpec
15
15
  src_file.filename =~ /MaGiC/i
16
16
  end
17
17
  add_group 'By string', 'project/meta_magic'
18
+ add_group 'By array', ['project/meta_magic']
18
19
 
19
20
  add_filter 'faked_project.rb'
20
21
  # Remove all files that include "describe" in their source
@@ -29,6 +30,7 @@ Feature: Sophisticated grouping and filtering on RSpec
29
30
  | All Files | 100.0% | 1 |
30
31
  | By block | 100.0% | 1 |
31
32
  | By string | 100.0% | 1 |
33
+ | By array | 100.0% | 1 |
32
34
 
33
35
  And I should see the source files:
34
36
  | name | coverage |
@@ -24,10 +24,10 @@ Feature: Grouping on RSpec using a custom filter class
24
24
  When I open the coverage report generated with `bundle exec rspec spec`
25
25
  Then I should see the groups:
26
26
  | name | coverage | files |
27
- | All Files | 91.23% | 6 |
27
+ | All Files | 91.8% | 7 |
28
28
  | By filter class | 78.26% | 2 |
29
29
  | By string | 100.0% | 1 |
30
- | Ungrouped | 100.0% | 3 |
30
+ | Ungrouped | 100.0% | 4 |
31
31
 
32
32
  And I should see the source files:
33
33
  | name | coverage |
@@ -35,6 +35,7 @@ Feature: Grouping on RSpec using a custom filter class
35
35
  | lib/faked_project/some_class.rb | 80.0 % |
36
36
  | lib/faked_project.rb | 100.0 % |
37
37
  | lib/faked_project/meta_magic.rb | 100.0 % |
38
+ | spec/forking_spec.rb | 100.0 % |
38
39
  | spec/meta_magic_spec.rb | 100.0 % |
39
40
  | spec/some_class_spec.rb | 100.0 % |
40
41
 
@@ -1,15 +1,14 @@
1
1
  module GroupHelpers
2
2
  def available_groups
3
- all('#content .file_list_container')
3
+ all("#content .file_list_container")
4
4
  end
5
5
 
6
6
  def available_source_files
7
- all('.source_files .source_table')
7
+ all(".source_files .source_table")
8
8
  end
9
9
  end
10
10
  World(GroupHelpers)
11
11
 
12
-
13
12
  Then /^I should see the groups:$/ do |table|
14
13
  expected_groups = table.hashes
15
14
  # Given group names should be the same number than those rendered in report
@@ -18,8 +17,8 @@ Then /^I should see the groups:$/ do |table|
18
17
  # Verify each of the expected groups has a file list container and corresponding title and coverage number
19
18
  # as well as the correct number of links to files.
20
19
  expected_groups.each do |group|
21
- with_scope "#content ##{group["name"].gsub(/[^a-z]/i, '')}.file_list_container" do
22
- file_count_in_group = page.all('a.src_link').count
20
+ with_scope "#content ##{group['name'].gsub(/[^a-z]/i, '')}.file_list_container" do
21
+ file_count_in_group = page.all("a.src_link").count
23
22
  expect(file_count_in_group).to eq(group["files"].to_i)
24
23
 
25
24
  with_scope "h2" do
@@ -35,9 +34,9 @@ Then /^I should see the source files:$/ do |table|
35
34
  expect(expected_files.length).to eq(available_source_files.count)
36
35
 
37
36
  # Find all filenames and their coverage present in coverage report
38
- files = available_source_files.map {|f| {"name" => f.find('h3').text, "coverage" => f.find('h4 > span').text} }
37
+ files = available_source_files.map { |f| {"name" => f.find("h3").text, "coverage" => f.find("h4 > span").text} }
39
38
 
40
- expect(files.sort_by {|hsh| hsh["name"] }).to eq(expected_files.sort_by {|hsh| hsh["name"] })
39
+ expect(files.sort_by { |hsh| hsh["name"] }).to eq(expected_files.sort_by { |hsh| hsh["name"] })
41
40
  end
42
41
 
43
42
  Then /^there should be (\d+) skipped lines in the source files$/ do |expected_count|
@@ -2,7 +2,8 @@
2
2
  # The test project is using separate config files to avoid specifying all of
3
3
  # test/spec_helper in the features every time.
4
4
  Given /^SimpleCov for (.*) is configured with:$/ do |framework, config_body|
5
- framework_dir = case framework
5
+ framework_dir = begin
6
+ case framework
6
7
  when /RSpec/i
7
8
  "spec"
8
9
  when /Test\/Unit/i
@@ -10,53 +11,54 @@ Given /^SimpleCov for (.*) is configured with:$/ do |framework, config_body|
10
11
  when /Cucumber/i
11
12
  "features/support"
12
13
  else
13
- raise ArgumentError, "Could not identify test framework #{framework}!"
14
+ fail ArgumentError, "Could not identify test framework #{framework}!"
15
+ end
14
16
  end
15
17
 
16
- steps %Q{
18
+ steps %(
17
19
  Given a file named "#{framework_dir}/simplecov_config.rb" with:
18
20
  """
19
21
  #{config_body}
20
22
  """
21
- }
23
+ )
22
24
  end
23
25
 
24
26
  When /^I open the coverage report generated with `([^`]+)`$/ do |command|
25
- steps %Q{
27
+ steps %(
26
28
  When I successfully run `#{command}`
27
29
  Then a coverage report should have been generated
28
30
  When I open the coverage report
29
- }
31
+ )
30
32
  end
31
33
 
32
34
  Then /^a coverage report should have been generated(?: in "([^"]*)")?$/ do |coverage_dir|
33
- coverage_dir ||= 'coverage'
34
- steps %Q{
35
+ coverage_dir ||= "coverage"
36
+ steps %(
35
37
  Then the output should contain "Coverage report generated"
36
38
  And a directory named "#{coverage_dir}" should exist
37
39
  And the following files should exist:
38
40
  | #{coverage_dir}/index.html |
39
41
  | #{coverage_dir}/.resultset.json |
40
- }
42
+ )
41
43
  end
42
44
 
43
45
  Then /^no coverage report should have been generated(?: in "([^"]*)")?$/ do |coverage_dir|
44
- coverage_dir ||= 'coverage'
45
- steps %Q{
46
+ coverage_dir ||= "coverage"
47
+ steps %(
46
48
  Then the output should not contain "Coverage report generated"
47
49
  And a directory named "#{coverage_dir}" should not exist
48
50
  And the following files should not exist:
49
51
  | #{coverage_dir}/index.html |
50
52
  | #{coverage_dir}/.resultset.json |
51
- }
53
+ )
52
54
  end
53
55
 
54
56
  Then /^the report should be based upon:$/ do |table|
55
57
  frameworks = table.raw.flatten
56
- steps %Q{
57
- Then the output should contain "Coverage report generated for #{frameworks.join(", ")}"
58
- And I should see "using #{frameworks.join(", ")}" within "#footer"
59
- }
58
+ steps %(
59
+ Then the output should contain "Coverage report generated for #{frameworks.join(', ')}"
60
+ And I should see "using #{frameworks.join(', ')}" within "#footer"
61
+ )
60
62
  end
61
63
 
62
64
  # This is neccessary to ensure timing-dependant tests like the merge timeout
@@ -6,8 +6,8 @@
6
6
  # This is due to the fact that coverage will not include the first loaded spec/test file.
7
7
  # To get predictable coverage results, we need to know which one that is...
8
8
  #
9
- Transform "bundle exec rspec spec" do |t|
9
+ Transform "bundle exec rspec spec" do |_|
10
10
  files = nil # Avoid shadowing
11
- in_current_dir { files = Dir['spec/**/*_spec.rb'] }
11
+ in_current_dir { files = Dir["spec/**/*_spec.rb"] }
12
12
  "bundle exec rspec #{files.sort.join(' ')}"
13
13
  end
@@ -6,7 +6,7 @@ end
6
6
  World(WithinHelpers)
7
7
 
8
8
  When /^I open the coverage report$/ do
9
- visit '/'
9
+ visit "/"
10
10
  end
11
11
 
12
12
  Given /^(?:|I )am on (.+)$/ do |path|
@@ -38,7 +38,7 @@ end
38
38
  Then /^(?:|I )should see \/([^\/]*)\/(?: within "([^"]*)")?$/ do |regexp, selector|
39
39
  regexp = Regexp.new(regexp)
40
40
  with_scope(selector) do
41
- expect(page).to have_xpath('//*', :text => regexp)
41
+ expect(page).to have_xpath("//*", :text => regexp)
42
42
  end
43
43
  end
44
44
 
@@ -51,12 +51,12 @@ end
51
51
  Then /^(?:|I )should not see \/([^\/]*)\/(?: within "([^"]*)")?$/ do |regexp, selector|
52
52
  regexp = Regexp.new(regexp)
53
53
  with_scope(selector) do
54
- expect(page).to have_no_xpath('//*', :text => regexp)
54
+ expect(page).to have_no_xpath("//*", :text => regexp)
55
55
  end
56
56
  end
57
57
 
58
58
  Then /^show me the page$/ do
59
- save_and_open_page
59
+ save_and_open_page # rubocop:disable Lint/Debugger
60
60
  end
61
61
 
62
62
  Then /^print the page$/ do
@@ -3,35 +3,37 @@ if RUBY_VERSION < "1.9"
3
3
  exit 0
4
4
  end
5
5
 
6
- require 'bundler'
6
+ require "bundler"
7
7
  Bundler.setup
8
- require 'aruba/cucumber'
9
- require 'aruba/jruby' if RUBY_ENGINE == 'jruby'
10
- require 'capybara/cucumber'
11
- require 'minitest/autorun'
12
- require 'phantomjs/poltergeist'
8
+ require "aruba/cucumber"
9
+ require "aruba/jruby" if RUBY_ENGINE == "jruby"
10
+ require "capybara/cucumber"
11
+ require "minitest/autorun"
12
+ require "phantomjs/poltergeist"
13
13
 
14
14
  # Fake rack app for capybara that just returns the latest coverage report from aruba temp project dir
15
15
  Capybara.app = lambda { |env|
16
- request_path = env['REQUEST_PATH'] || '/'
17
- request_path = '/index.html' if request_path == '/'
18
-
19
- [200, {'Content-Type' => 'text/html'},
20
- [File.read(File.join(File.dirname(__FILE__), '../../tmp/aruba/project/coverage', request_path))]]
16
+ request_path = env["REQUEST_PATH"] || "/"
17
+ request_path = "/index.html" if request_path == "/"
18
+ [
19
+ 200,
20
+ {"Content-Type" => "text/html"},
21
+ [File.read(File.join(File.dirname(__FILE__), "../../tmp/aruba/project/coverage", request_path))],
22
+ ]
21
23
  }
22
24
 
23
25
  Capybara.default_driver = Capybara.javascript_driver = :poltergeist
24
26
 
25
27
  Before do
26
28
  # JRuby takes it's time... See https://github.com/cucumber/aruba/issues/134
27
- @aruba_timeout_seconds = RUBY_ENGINE == 'jruby' ? 60 : 20
29
+ @aruba_timeout_seconds = RUBY_ENGINE == "jruby" ? 60 : 20
28
30
 
29
31
  this_dir = File.dirname(__FILE__)
30
32
 
31
33
  # Clean up and create blank state for fake project
32
34
  in_current_dir do
33
- FileUtils.rm_rf 'project'
34
- FileUtils.cp_r File.join(this_dir, '../../test/faked_project/'), 'project'
35
+ FileUtils.rm_rf "project"
36
+ FileUtils.cp_r File.join(this_dir, "../../test/faked_project/"), "project"
35
37
  end
36
38
 
37
39
  step 'I cd to "project"'
@@ -40,6 +42,6 @@ end
40
42
  # Workaround for https://github.com/cucumber/aruba/pull/125
41
43
  Aruba.configure do |config|
42
44
  config.before_cmd do
43
- set_env('JRUBY_OPTS', '-X-C --1.9')
45
+ set_env("JRUBY_OPTS", "-X-C --1.9")
44
46
  end
45
47
  end
@@ -1,9 +1,20 @@
1
1
  #
2
2
  # Code coverage for ruby 1.9. Please check out README for a full introduction.
3
3
  #
4
+ # Coverage may be inaccurate under JRUBY.
5
+ if defined?(JRUBY_VERSION)
6
+ if ENV["JRUBY_OPTS"].to_s !~ /-Xcli.debug=true/
7
+ warn "Coverage may be inaccurate; Try setting JRUBY_OPTS=\"-Xcli.debug=true --debug\""
8
+ # see https://github.com/metricfu/metric_fu/pull/226
9
+ # https://github.com/jruby/jruby/issues/1196
10
+ # https://jira.codehaus.org/browse/JRUBY-6106
11
+ # https://github.com/colszowka/simplecov/issues/86
12
+ end
13
+ end
4
14
  module SimpleCov
5
15
  class << self
6
16
  attr_accessor :running
17
+ attr_accessor :pid
7
18
 
8
19
  #
9
20
  # Sets up SimpleCov to run against your project.
@@ -22,12 +33,13 @@ module SimpleCov
22
33
  #
23
34
  # Please check out the RDoc for SimpleCov::Configuration to find about available config options
24
35
  #
25
- def start(profile=nil, &block)
36
+ def start(profile = nil, &block)
26
37
  if SimpleCov.usable?
27
38
  load_profile(profile) if profile
28
39
  configure(&block) if block_given?
29
40
  @result = nil
30
41
  self.running = true
42
+ self.pid = Process.pid
31
43
  Coverage.start
32
44
  else
33
45
  warn "WARNING: SimpleCov is activated, but you're not running Ruby 1.9+ - no coverage analysis will happen"
@@ -59,7 +71,7 @@ module SimpleCov
59
71
  # Otherwise, returns the result
60
72
  #
61
73
  def result?
62
- defined? @result and @result
74
+ defined?(@result) && @result
63
75
  end
64
76
 
65
77
  #
@@ -68,7 +80,7 @@ module SimpleCov
68
80
  def filtered(files)
69
81
  result = files.clone
70
82
  filters.each do |filter|
71
- result = result.reject {|source_file| filter.matches?(source_file) }
83
+ result = result.reject { |source_file| filter.matches?(source_file) }
72
84
  end
73
85
  SimpleCov::FileList.new result
74
86
  end
@@ -80,10 +92,10 @@ module SimpleCov
80
92
  grouped = {}
81
93
  grouped_files = []
82
94
  groups.each do |name, filter|
83
- grouped[name] = SimpleCov::FileList.new(files.select {|source_file| filter.matches?(source_file)})
95
+ grouped[name] = SimpleCov::FileList.new(files.select { |source_file| filter.matches?(source_file) })
84
96
  grouped_files += grouped[name]
85
97
  end
86
- if groups.length > 0 and (other_files = files.reject {|source_file| grouped_files.include?(source_file)}).length > 0
98
+ if groups.length > 0 && (other_files = files.reject { |source_file| grouped_files.include?(source_file) }).length > 0
87
99
  grouped["Ungrouped"] = SimpleCov::FileList.new(other_files)
88
100
  end
89
101
  grouped
@@ -106,11 +118,11 @@ module SimpleCov
106
118
  # provides coverage support
107
119
  #
108
120
  def usable?
109
- return @usable if defined? @usable and !@usable.nil?
121
+ return @usable if defined?(@usable) && !@usable.nil?
110
122
 
111
123
  @usable = begin
112
- require 'coverage'
113
- require 'simplecov/jruby_fix'
124
+ require "coverage"
125
+ require "simplecov/jruby_fix"
114
126
  true
115
127
  rescue LoadError
116
128
  false
@@ -120,24 +132,23 @@ module SimpleCov
120
132
  end
121
133
 
122
134
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__)))
123
- require 'simplecov/configuration'
135
+ require "simplecov/configuration"
124
136
  SimpleCov.send :extend, SimpleCov::Configuration
125
- require 'simplecov/exit_codes'
126
- require 'simplecov/json'
127
- require 'simplecov/profiles'
128
- require 'simplecov/source_file'
129
- require 'simplecov/file_list'
130
- require 'simplecov/result'
131
- require 'simplecov/filter'
132
- require 'simplecov/formatter'
133
- require 'simplecov/last_run'
134
- require 'simplecov/merge_helpers'
135
- require 'simplecov/result_merger'
136
- require 'simplecov/command_guesser'
137
- require 'simplecov/version'
137
+ require "simplecov/exit_codes"
138
+ require "simplecov/profiles"
139
+ require "simplecov/source_file"
140
+ require "simplecov/file_list"
141
+ require "simplecov/result"
142
+ require "simplecov/filter"
143
+ require "simplecov/formatter"
144
+ require "simplecov/last_run"
145
+ require "simplecov/merge_helpers"
146
+ require "simplecov/result_merger"
147
+ require "simplecov/command_guesser"
148
+ require "simplecov/version"
138
149
 
139
150
  # Load default config
140
- require 'simplecov/defaults' unless ENV['SIMPLECOV_NO_DEFAULTS']
151
+ require "simplecov/defaults" unless ENV["SIMPLECOV_NO_DEFAULTS"]
141
152
 
142
153
  # Load Rails integration (only for Rails 3, see #113)
143
- require 'simplecov/railtie' if defined? Rails::Railtie
154
+ require "simplecov/railtie" if defined? Rails::Railtie