simplecov 0.17.1 → 0.18.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +77 -1
  3. data/CODE_OF_CONDUCT.md +76 -0
  4. data/README.md +275 -76
  5. data/doc/alternate-formatters.md +5 -0
  6. data/lib/simplecov.rb +225 -61
  7. data/lib/simplecov/combine.rb +30 -0
  8. data/lib/simplecov/combine/branches_combiner.rb +32 -0
  9. data/lib/simplecov/combine/files_combiner.rb +24 -0
  10. data/lib/simplecov/combine/lines_combiner.rb +43 -0
  11. data/lib/simplecov/combine/results_combiner.rb +60 -0
  12. data/lib/simplecov/command_guesser.rb +6 -3
  13. data/lib/simplecov/configuration.rb +110 -9
  14. data/lib/simplecov/coverage_statistics.rb +56 -0
  15. data/lib/simplecov/defaults.rb +4 -2
  16. data/lib/simplecov/file_list.rb +66 -13
  17. data/lib/simplecov/filter.rb +2 -1
  18. data/lib/simplecov/formatter/multi_formatter.rb +2 -2
  19. data/lib/simplecov/formatter/simple_formatter.rb +4 -4
  20. data/lib/simplecov/last_run.rb +3 -1
  21. data/lib/simplecov/lines_classifier.rb +2 -2
  22. data/lib/simplecov/profiles.rb +9 -7
  23. data/lib/simplecov/result.rb +39 -6
  24. data/lib/simplecov/result_adapter.rb +30 -0
  25. data/lib/simplecov/result_merger.rb +18 -11
  26. data/lib/simplecov/simulate_coverage.rb +29 -0
  27. data/lib/simplecov/source_file.rb +226 -125
  28. data/lib/simplecov/source_file/branch.rb +84 -0
  29. data/lib/simplecov/source_file/line.rb +72 -0
  30. data/lib/simplecov/useless_results_remover.rb +16 -0
  31. data/lib/simplecov/version.rb +1 -1
  32. metadata +32 -166
  33. data/lib/simplecov/jruby_fix.rb +0 -44
  34. data/lib/simplecov/railtie.rb +0 -9
  35. data/lib/simplecov/railties/tasks.rake +0 -13
  36. data/lib/simplecov/raw_coverage.rb +0 -41
@@ -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