simplecov 0.18.2 → 0.18.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/minitest/simplecov_plugin.rb +11 -0
- data/lib/simplecov.rb +8 -0
- data/lib/simplecov/defaults.rb +3 -6
- data/lib/simplecov/source_file.rb +46 -1
- data/lib/simplecov/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e154e20c4783b0bf086268b9ef996f2137e62db61e383ccb68e271b22e6ebb6
|
4
|
+
data.tar.gz: b14b1151d5935267924bafa9abf436b1aa070bbd4839215abf883afa238f6fea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5c87c16a29b4d6682f2dfeb4a24ce4027751c70fd7594c0651b1b66b5db2c274d458569d9342cdc7a7a03c5b52d5fd7261396748988a16bf23976d850bc7b12
|
7
|
+
data.tar.gz: 87192405c9cf26f88bd59e609322ea8d7516174a22d99de2578e65ee5c916687ef09b0f5fdf7504dee2a58787319c47205a7b9a8286715d97e73917580238114
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
0.18.3 (2020-02-23)
|
2
|
+
===========
|
3
|
+
|
4
|
+
Small bugfix release. It's especially recommended to upgrade simplecov-html as well because of bugs in the 0.12.0 release.
|
5
|
+
|
6
|
+
## Bugfixes
|
7
|
+
* Fix a regression related to file encodings as special characters were missing. Furthermore we now respect the magic `# encoding: ...` comment and read files in the right encoding. Thanks ([@Tietew](https://github.com/Tietew)) - see [#866](https://github.com/colszowka/simplecov/pull/866)
|
8
|
+
* Use `Minitest.after_run` hook to trigger post-run hooks if `Minitest` is present. See [#756](https://github.com/colszowka/simplecov/pull/756) and [#855](https://github.com/colszowka/simplecov/pull/855) thanks ([@adam12](https://github.com/adam12))
|
9
|
+
|
1
10
|
0.18.2 (2020-02-12)
|
2
11
|
===================
|
3
12
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# How minitest plugins. See https://github.com/colszowka/simplecov/pull/756 for why we need this.
|
4
|
+
# https://github.com/seattlerb/minitest#writing-extensions
|
5
|
+
module Minitest
|
6
|
+
def self.plugin_simplecov_init(_options)
|
7
|
+
Minitest.after_run do
|
8
|
+
SimpleCov.at_exit_behavior if SimpleCov.respond_to?(:at_exit_behavior)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/simplecov.rb
CHANGED
@@ -189,6 +189,14 @@ module SimpleCov
|
|
189
189
|
end
|
190
190
|
end
|
191
191
|
|
192
|
+
def at_exit_behavior
|
193
|
+
# If we are in a different process than called start, don't interfere.
|
194
|
+
return if SimpleCov.pid != Process.pid
|
195
|
+
|
196
|
+
# If SimpleCov is no longer running then don't run exit tasks
|
197
|
+
SimpleCov.run_exit_tasks! if SimpleCov.running
|
198
|
+
end
|
199
|
+
|
192
200
|
# @api private
|
193
201
|
#
|
194
202
|
# Called from at_exit block
|
data/lib/simplecov/defaults.rb
CHANGED
@@ -22,13 +22,10 @@ end
|
|
22
22
|
SimpleCov::CommandGuesser.original_run_command = "#{$PROGRAM_NAME} #{ARGV.join(' ')}"
|
23
23
|
|
24
24
|
at_exit do
|
25
|
-
#
|
26
|
-
next if
|
25
|
+
# Exit hook for Minitest defined in Minitest plugin
|
26
|
+
next if defined?(Minitest)
|
27
27
|
|
28
|
-
|
29
|
-
next unless SimpleCov.running
|
30
|
-
|
31
|
-
SimpleCov.run_exit_tasks!
|
28
|
+
SimpleCov.at_exit_behavior
|
32
29
|
end
|
33
30
|
|
34
31
|
# Autoload config from ~/.simplecov if present
|
@@ -25,7 +25,7 @@ module SimpleCov
|
|
25
25
|
def src
|
26
26
|
# We intentionally read source code lazily to
|
27
27
|
# suppress reading unused source code.
|
28
|
-
@src ||=
|
28
|
+
@src ||= load_source
|
29
29
|
end
|
30
30
|
alias source src
|
31
31
|
|
@@ -175,6 +175,51 @@ module SimpleCov
|
|
175
175
|
end
|
176
176
|
end
|
177
177
|
|
178
|
+
def load_source
|
179
|
+
lines = []
|
180
|
+
# The default encoding is UTF-8
|
181
|
+
File.open(filename, "rb:UTF-8") do |file|
|
182
|
+
current_line = file.gets
|
183
|
+
|
184
|
+
if shebang?(current_line)
|
185
|
+
lines << current_line
|
186
|
+
current_line = file.gets
|
187
|
+
end
|
188
|
+
|
189
|
+
read_lines(file, lines, current_line)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
SHEBANG_REGEX = /\A#!/.freeze
|
194
|
+
def shebang?(line)
|
195
|
+
SHEBANG_REGEX.match?(line)
|
196
|
+
end
|
197
|
+
|
198
|
+
def read_lines(file, lines, current_line)
|
199
|
+
return lines unless current_line
|
200
|
+
|
201
|
+
set_encoding_based_on_magic_comment(file, current_line)
|
202
|
+
lines.concat([current_line], ensure_remove_undefs(file.readlines))
|
203
|
+
end
|
204
|
+
|
205
|
+
RUBY_FILE_ENCODING_MAGIC_COMMENT_REGEX = /\A#\s*(?:-\*-)?\s*(?:en)?coding:\s*(\S+)\s*(?:-\*-)?\s*\z/.freeze
|
206
|
+
def set_encoding_based_on_magic_comment(file, line)
|
207
|
+
# Check for encoding magic comment
|
208
|
+
# Encoding magic comment must be placed at first line except for shebang
|
209
|
+
if (match = RUBY_FILE_ENCODING_MAGIC_COMMENT_REGEX.match(line))
|
210
|
+
file.set_encoding(match[1], "UTF-8")
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
def ensure_remove_undefs(file_lines)
|
215
|
+
# invalid/undef replace are technically not really necessary but nice to
|
216
|
+
# have and work around a JRuby incompatibility. Also moved here from
|
217
|
+
# simplecov-html to have encoding shenaningans in one place. See #866
|
218
|
+
# also setting these option on `file.set_encoding` doesn't seem to work
|
219
|
+
# properly so it has to be done here.
|
220
|
+
file_lines.each { |line| line.encode!("UTF-8", invalid: :replace, undef: :replace) }
|
221
|
+
end
|
222
|
+
|
178
223
|
def build_lines
|
179
224
|
coverage_exceeding_source_warn if coverage_data["lines"].size > src.size
|
180
225
|
lines = src.map.with_index(1) do |src, i|
|
data/lib/simplecov/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplecov
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.18.
|
4
|
+
version: 0.18.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christoph Olszowka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docile
|
@@ -55,6 +55,7 @@ files:
|
|
55
55
|
- doc/alternate-formatters.md
|
56
56
|
- doc/commercial-services.md
|
57
57
|
- doc/editor-integration.md
|
58
|
+
- lib/minitest/simplecov_plugin.rb
|
58
59
|
- lib/simplecov.rb
|
59
60
|
- lib/simplecov/combine.rb
|
60
61
|
- lib/simplecov/combine/branches_combiner.rb
|
@@ -96,9 +97,9 @@ licenses:
|
|
96
97
|
metadata:
|
97
98
|
bug_tracker_uri: https://github.com/colszowka/simplecov/issues
|
98
99
|
changelog_uri: https://github.com/colszowka/simplecov/blob/master/CHANGELOG.md
|
99
|
-
documentation_uri: https://www.rubydoc.info/gems/simplecov/0.18.
|
100
|
+
documentation_uri: https://www.rubydoc.info/gems/simplecov/0.18.3
|
100
101
|
mailing_list_uri: https://groups.google.com/forum/#!forum/simplecov
|
101
|
-
source_code_uri: https://github.com/colszowka/simplecov/tree/v0.18.
|
102
|
+
source_code_uri: https://github.com/colszowka/simplecov/tree/v0.18.3
|
102
103
|
post_install_message:
|
103
104
|
rdoc_options: []
|
104
105
|
require_paths:
|