simplecov 0.21.2 → 0.22.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e5385d84c9f26fc48afe9fb5b4883d431a7f346c116ea21ca7b65a744e19db8
4
- data.tar.gz: 78f2089648f1167fac351d819c7eb7579ae4a4cae323882a2b56f245481296e7
3
+ metadata.gz: 53fa0b46a6da5abd78be052c332c7bc956bb9a432e929965f1cfd460d637c21d
4
+ data.tar.gz: 714c61ef2abd25f9fc78e0f56681811eb571904c9348775acf5b7b13ad002dfe
5
5
  SHA512:
6
- metadata.gz: 071375d821a918217c1318bca354dde933d04c572761c247ecb77f976b8085a489d3dfe7463994b88705685f1c0f5d1e7861d79df0f949935982f45e342ad862
7
- data.tar.gz: ca85cde65a7f2f6987be16d542e571312cd763f6fadca1ebcc1f44be7a7fc70f7375ba79a3afe44c893f4db118fd6e6ef81292e858f962647df19defa80f0ebc
6
+ metadata.gz: f2e715ac3b3067755b2f32981359736cbb5335606b83e84523b03b37d93804d39bbd1f40099d78058d21dad038623911eb031d672fbad97f1fdaa292b2c3652b
7
+ data.tar.gz: 9155c02eba7b6389c8e19de0c28a2b78017999ca404cadfbaa3cde1ee2012e0420d86471af81b0ced38dedef26bde60e7130fb86965fbb4021663fbb75c96554
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ 0.22.0 (2022-12-23)
2
+ ==========
3
+
4
+ ## Enhancements
5
+
6
+ * On Ruby 3.2+, you can now use the new Coverage library feature for `eval` - See https://github.com/simplecov-ruby/simplecov/pull/1037. Thanks [@mame](https://github.com/mame)!
7
+
8
+ ## Bugfixes
9
+ * Fix for making the test suite pass against the upcoming Ruby 3.2 - See https://github.com/simplecov-ruby/simplecov/pull/1035. Thanks [@mame](https://github.com/mame)
10
+
1
11
  0.21.2 (2021-01-09)
2
12
  ==========
3
13
 
data/README.md CHANGED
@@ -69,6 +69,8 @@ Getting started
69
69
  The `SimpleCov.start` **must** be issued **before any of your application
70
70
  code is required!**
71
71
 
72
+ This is especially true if you use anything that keeps your tests application loaded like spring, check out the **[spring section](#want-to-use-spring-with-simplecov)**.
73
+
72
74
  SimpleCov must be running in the process that you want the code coverage
73
75
  analysis to happen on. When testing a server process (e.g. a JSON API
74
76
  endpoint) via a separate test process (e.g. when using Selenium) where you
@@ -105,10 +107,6 @@ Getting started
105
107
  5. Add the following to your `.gitignore` file to ensure that coverage results
106
108
  are not tracked by Git (optional):
107
109
 
108
- ```
109
- echo "coverage" >> .gitignore
110
- ```
111
- Or if you use Windows:
112
110
  ```
113
111
  echo coverage >> .gitignore
114
112
  ```
@@ -356,6 +354,18 @@ Primary coverage determines what will come in first all output, and the type of
356
354
 
357
355
  Note that coverage must first be enabled for non-default coverage types.
358
356
 
357
+ ## Coverage for eval
358
+
359
+ You can measure coverage for code that is evaluated by `Kernel#eval`. Supported in CRuby versions 3.2+.
360
+
361
+ ```ruby
362
+ SimpleCov.start do
363
+ enable_coverage_for_eval
364
+ end
365
+ ```
366
+
367
+ This is typically useful for ERB. Set `ERB#filename=` to make it possible for SimpleCov to trace the original .erb source file.
368
+
359
369
  ## Filters
360
370
 
361
371
  Filters can be used to remove selected files from your coverage data. By default, a filter is applied that removes all
@@ -840,15 +850,17 @@ You can use your own formatter with:
840
850
  SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
841
851
  ```
842
852
 
843
- When calling SimpleCov.result.format!, it will be invoked with SimpleCov::Formatter::YourFormatter.new.format(result),
844
- "result" being an instance of SimpleCov::Result. Do whatever your wish with that!
853
+ Calling `SimpleCov.result.format!` will be invoked with `SimpleCov::Formatter::YourFormatter.new.format(result)`,
854
+ and `result` is an instance of `SimpleCov::Result`. Do whatever your wish with that!
845
855
 
846
856
 
847
857
  ## Using multiple formatters
848
858
 
849
- As of SimpleCov 0.9, you can specify multiple result formats:
859
+ As of SimpleCov 0.9, you can specify multiple result formats. Formatters besides the default HTML formatter require separate gems, however.
850
860
 
851
861
  ```ruby
862
+ require "simplecov-html"
863
+
852
864
  SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new([
853
865
  SimpleCov::Formatter::HTMLFormatter,
854
866
  SimpleCov::Formatter::CSVFormatter,
@@ -877,7 +889,7 @@ SimpleCov.formatter = SimpleCov::Formatter::JSONFormatter
877
889
 
878
890
  ## Ruby version compatibility
879
891
 
880
- SimpleCov is built in [Continuous Integration] on Ruby 2.5+ as well as JRuby 9.2+.
892
+ SimpleCov is built in [Continuous Integration] on Ruby 2.7+ as well as JRuby 9.3+.
881
893
 
882
894
  Note for JRuby => You need to pass JRUBY_OPTS="--debug" or create .jrubyrc and add debug.fullTrace=true
883
895
 
@@ -440,7 +440,26 @@ module SimpleCov
440
440
  end
441
441
  end
442
442
 
443
- alias branch_coverage_supported? coverage_start_arguments_supported?
443
+ def branch_coverage_supported?
444
+ coverage_start_arguments_supported? && RUBY_ENGINE != "jruby"
445
+ end
446
+
447
+ def coverage_for_eval_supported?
448
+ require "coverage"
449
+ defined?(Coverage.supported?) && Coverage.supported?(:eval)
450
+ end
451
+
452
+ def coverage_for_eval_enabled?
453
+ @coverage_for_eval_enabled ||= false
454
+ end
455
+
456
+ def enable_coverage_for_eval
457
+ if coverage_for_eval_supported?
458
+ @coverage_for_eval_enabled = true
459
+ else
460
+ warn "Coverage for eval is not available; Use Ruby 3.2.0 or later"
461
+ end
462
+ end
444
463
 
445
464
  private
446
465
 
@@ -18,7 +18,7 @@ module SimpleCov
18
18
 
19
19
  # The path to this source file relative to the projects directory
20
20
  def project_filename
21
- @filename.sub(Regexp.new("^#{Regexp.escape(SimpleCov.root)}"), "")
21
+ @filename.delete_prefix(SimpleCov.root)
22
22
  end
23
23
 
24
24
  # The source code for this file. Aliased as :source
@@ -217,7 +217,13 @@ module SimpleCov
217
217
  # simplecov-html to have encoding shenaningans in one place. See #866
218
218
  # also setting these option on `file.set_encoding` doesn't seem to work
219
219
  # properly so it has to be done here.
220
- file_lines.each { |line| line.encode!("UTF-8", invalid: :replace, undef: :replace) }
220
+ file_lines.each do |line|
221
+ if line.encoding == Encoding::UTF_8
222
+ line
223
+ else
224
+ line.encode!("UTF-8", invalid: :replace, undef: :replace)
225
+ end
226
+ end
221
227
  end
222
228
 
223
229
  def build_lines
@@ -238,7 +244,7 @@ module SimpleCov
238
244
  end
239
245
 
240
246
  def lines_strength
241
- lines.map(&:coverage).compact.reduce(:+)
247
+ lines.sum { |line| line.coverage.to_i }
242
248
  end
243
249
 
244
250
  # Warning to identify condition from Issue #56
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SimpleCov
4
- VERSION = "0.21.2"
4
+ VERSION = "0.22.0"
5
5
  end
data/lib/simplecov.rb CHANGED
@@ -342,7 +342,7 @@ module SimpleCov
342
342
  if coverage_start_arguments_supported?
343
343
  start_coverage_with_criteria
344
344
  else
345
- Coverage.start
345
+ Coverage.start unless Coverage.running?
346
346
  end
347
347
  end
348
348
 
@@ -351,7 +351,9 @@ module SimpleCov
351
351
  [lookup_corresponding_ruby_coverage_name(criterion), true]
352
352
  end.to_h
353
353
 
354
- Coverage.start(start_arguments)
354
+ start_arguments[:eval] = true if coverage_for_eval_enabled?
355
+
356
+ Coverage.start(start_arguments) unless Coverage.running?
355
357
  end
356
358
 
357
359
  CRITERION_TO_RUBY_COVERAGE = {
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplecov
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.2
4
+ version: 0.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoph Olszowka
8
8
  - Tobias Pfeiffer
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-01-09 00:00:00.000000000 Z
12
+ date: 2022-12-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: docile
@@ -116,10 +116,10 @@ licenses:
116
116
  metadata:
117
117
  bug_tracker_uri: https://github.com/simplecov-ruby/simplecov/issues
118
118
  changelog_uri: https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md
119
- documentation_uri: https://www.rubydoc.info/gems/simplecov/0.21.2
119
+ documentation_uri: https://www.rubydoc.info/gems/simplecov/0.22.0
120
120
  mailing_list_uri: https://groups.google.com/forum/#!forum/simplecov
121
- source_code_uri: https://github.com/simplecov-ruby/simplecov/tree/v0.21.2
122
- post_install_message:
121
+ source_code_uri: https://github.com/simplecov-ruby/simplecov/tree/v0.22.0
122
+ post_install_message:
123
123
  rdoc_options: []
124
124
  require_paths:
125
125
  - lib
@@ -134,8 +134,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
134
  - !ruby/object:Gem::Version
135
135
  version: '0'
136
136
  requirements: []
137
- rubygems_version: 3.2.3
138
- signing_key:
137
+ rubygems_version: 3.3.7
138
+ signing_key:
139
139
  specification_version: 4
140
140
  summary: Code coverage for Ruby
141
141
  test_files: []