simplecov 0.17.1 → 0.21.1

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +100 -434
  3. data/README.md +375 -93
  4. data/doc/alternate-formatters.md +16 -1
  5. data/doc/commercial-services.md +5 -0
  6. data/lib/minitest/simplecov_plugin.rb +15 -0
  7. data/lib/simplecov.rb +294 -128
  8. data/lib/simplecov/combine.rb +30 -0
  9. data/lib/simplecov/combine/branches_combiner.rb +32 -0
  10. data/lib/simplecov/combine/files_combiner.rb +24 -0
  11. data/lib/simplecov/combine/lines_combiner.rb +43 -0
  12. data/lib/simplecov/combine/results_combiner.rb +60 -0
  13. data/lib/simplecov/command_guesser.rb +6 -3
  14. data/lib/simplecov/configuration.rb +191 -15
  15. data/lib/simplecov/coverage_statistics.rb +56 -0
  16. data/lib/simplecov/default_formatter.rb +20 -0
  17. data/lib/simplecov/defaults.rb +14 -13
  18. data/lib/simplecov/exit_codes.rb +5 -0
  19. data/lib/simplecov/exit_codes/exit_code_handling.rb +29 -0
  20. data/lib/simplecov/exit_codes/maximum_coverage_drop_check.rb +73 -0
  21. data/lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb +54 -0
  22. data/lib/simplecov/exit_codes/minimum_overall_coverage_check.rb +53 -0
  23. data/lib/simplecov/file_list.rb +72 -13
  24. data/lib/simplecov/filter.rb +9 -6
  25. data/lib/simplecov/formatter.rb +2 -2
  26. data/lib/simplecov/formatter/multi_formatter.rb +5 -7
  27. data/lib/simplecov/formatter/simple_formatter.rb +4 -4
  28. data/lib/simplecov/last_run.rb +3 -1
  29. data/lib/simplecov/lines_classifier.rb +5 -5
  30. data/lib/simplecov/no_defaults.rb +1 -1
  31. data/lib/simplecov/process.rb +19 -0
  32. data/lib/simplecov/profiles.rb +9 -7
  33. data/lib/simplecov/result.rb +18 -12
  34. data/lib/simplecov/result_adapter.rb +30 -0
  35. data/lib/simplecov/result_merger.rb +130 -59
  36. data/lib/simplecov/simulate_coverage.rb +29 -0
  37. data/lib/simplecov/source_file.rb +272 -126
  38. data/lib/simplecov/source_file/branch.rb +84 -0
  39. data/lib/simplecov/source_file/line.rb +72 -0
  40. data/lib/simplecov/useless_results_remover.rb +18 -0
  41. data/lib/simplecov/version.rb +1 -1
  42. metadata +44 -158
  43. data/CONTRIBUTING.md +0 -51
  44. data/ISSUE_TEMPLATE.md +0 -23
  45. data/lib/simplecov/jruby_fix.rb +0 -44
  46. data/lib/simplecov/railtie.rb +0 -9
  47. data/lib/simplecov/railties/tasks.rake +0 -13
  48. data/lib/simplecov/raw_coverage.rb +0 -41
@@ -1,51 +0,0 @@
1
- ## Reporting Issues
2
-
3
- You can report issues at https://github.com/colszowka/simplecov/issues
4
-
5
- Before you go ahead please search existing issues for your problem, chances are someone else already reported it.
6
-
7
- To make sure that we can help you quickly please include and check the following information:
8
-
9
- * Include how you run your tests and which testing framework or frameworks you are running.
10
- - please ensure you are requiring and starting SimpleCov before requiring any application code.
11
- - If running via rake, please ensure you are requiring SimpleCov at the top of your Rakefile
12
- For example, if running via RSpec, this would be at the top of your spec_helper.
13
- - Have you tried using a [`.simplecov` file](https://github.com/colszowka/simplecov#using-simplecov-for-centralized-config)?
14
- * Include the SimpleCov version you are running in your report.
15
- * If you are not running the latest version (please check), and you cannot update it,
16
- please specify in your report why you can't update to the latest version.
17
- * Include your `ruby -e "puts RUBY_DESCRIPTION"`.
18
- * Please also specify the gem versions of Rails (if applicable).
19
- * Include any other coverage gems you may be using and their versions.
20
-
21
- Include as much sample code as you can to help us reproduce the issue. (Inline, repo link, or gist, are fine. A failing test would help the most.)
22
-
23
- This is extremely important for narrowing down the cause of your problem.
24
-
25
- Thanks!
26
-
27
- ## Making Contributions
28
-
29
- To fetch & test the library for development, do:
30
-
31
- $ git clone https://github.com/colszowka/simplecov.git
32
- $ cd simplecov
33
- $ bundle
34
- $ bundle exec rake
35
-
36
- If you want to contribute, please:
37
-
38
- * Fork the project.
39
- * Make your feature addition or bug fix.
40
- * Add tests for it. This is important so I don't break it in a future version unintentionally.
41
- * **Bonus Points** go out to anyone who also updates `CHANGELOG.md` :)
42
- * Send me a pull request on GitHub.
43
-
44
- ## Running Individual Tests
45
-
46
- This project uses RSpec and Cucumber. Individual tests can be run like this:
47
-
48
- ```bash
49
- bundle exec rspec path/to/test.rb
50
- bundle exec cucumber path/to/test.feature
51
- ```
@@ -1,23 +0,0 @@
1
- Howdy! Thanks for reporting an issue <3
2
-
3
- Before you go ahead please search existing issues for your problem, chances are someone else already reported it.
4
-
5
- To make sure that we can help you quickly please include and check the following information:
6
-
7
- * Include how you run your tests and which testing framework or frameworks you are running.
8
- - please ensure you are requiring and starting SimpleCov before requiring any application code.
9
- - If running via rake, please ensure you are requiring SimpleCov at the top of your Rakefile
10
- For example, if running via RSpec, this would be at the top of your spec_helper.
11
- - Have you tried using a [`.simplecov` file](https://github.com/colszowka/simplecov#using-simplecov-for-centralized-config)?
12
- * Include the SimpleCov version you are running in your report.
13
- * If you are not running the latest version (please check), and you cannot update it,
14
- please specify in your report why you can't update to the latest version.
15
- * Include your `ruby -e "puts RUBY_DESCRIPTION"`.
16
- * Please also specify the gem versions of Rails (if applicable).
17
- * Include any other coverage gems you may be using and their versions.
18
-
19
- Include as much sample code as you can to help us reproduce the issue. (Inline, repo link, or gist, are fine. A failing test would help the most.)
20
-
21
- This is extremely important for narrowing down the cause of your problem.
22
-
23
- Thanks!
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- if defined?(JRUBY_VERSION) && JRUBY_VERSION.to_f < 1.7
4
- require "jruby"
5
- java_import "org.jruby.ast.NodeType"
6
-
7
- # Coverage for JRuby < 1.7.0 does not work correctly
8
- #
9
- # - does not distinguish lines that cannot be executed
10
- # - does (partial) coverage for files loaded before `Coverage.start`.
11
- # - does not expand a path like `lib/../spec` to `spec`.
12
- #
13
- # This monkey patches Coverage to address those issues
14
- module Coverage
15
- class << self
16
- alias __broken_result__ result
17
-
18
- def result # rubocop:disable Metrics/MethodLength
19
- fixed = {}
20
- __broken_result__.each do |path, executed_lines|
21
- next unless File.file? path
22
-
23
- covered_lines = executed_lines.dup
24
-
25
- process = lambda do |node|
26
- if node.node_type == NodeType::NEWLINENODE
27
- pos = node.position
28
- covered_lines[pos.line] ||= 0
29
- end
30
- node.child_nodes.each(&process)
31
- end
32
-
33
- process[JRuby.parse(File.read(path), path)]
34
-
35
- if (first = covered_lines.detect { |x| x }) && first > 0
36
- fixed[File.expand_path(path)] = covered_lines
37
- end
38
- end
39
-
40
- fixed
41
- end
42
- end
43
- end
44
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SimpleCov
4
- class Railtie < ::Rails::Railtie
5
- rake_tasks do
6
- load "simplecov/railties/tasks.rake"
7
- end
8
- end
9
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rake/testtask"
4
- Rake::TestTask.new do |t|
5
- t.name = "simplecov"
6
- t.loader = :direct # uses require() which skips PWD in Ruby 1.9
7
- t.libs.push "test", "spec", Dir.pwd
8
- t.test_files = FileList["{test,spec}/**/*_{test,spec}.rb"]
9
- t.ruby_opts.push "-r", "simplecov", "-e", "SimpleCov.start(:rails)".inspect
10
- end
11
-
12
- require "rake/clean"
13
- CLOBBER.include "coverage"
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SimpleCov
4
- module RawCoverage
5
- module_function
6
-
7
- # Merges multiple Coverage.result hashes
8
- def merge_results(*results)
9
- results.reduce({}) do |result, merged|
10
- merge_resultsets(result, merged)
11
- end
12
- end
13
-
14
- # Merges two Coverage.result hashes
15
- def merge_resultsets(result1, result2)
16
- (result1.keys | result2.keys).each_with_object({}) do |filename, merged|
17
- file1 = result1[filename]
18
- file2 = result2[filename]
19
- merged[filename] = merge_file_coverage(file1, file2)
20
- end
21
- end
22
-
23
- def merge_file_coverage(file1, file2)
24
- return (file1 || file2).dup unless file1 && file2
25
-
26
- file1.map.with_index do |count1, index|
27
- count2 = file2[index]
28
- merge_line_coverage(count1, count2)
29
- end
30
- end
31
-
32
- def merge_line_coverage(count1, count2)
33
- sum = count1.to_i + count2.to_i
34
- if sum.zero? && (count1.nil? || count2.nil?)
35
- nil
36
- else
37
- sum
38
- end
39
- end
40
- end
41
- end