simple_cov-formatter-terminal 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/Gemfile.lock +4 -4
- data/README.md +15 -0
- data/lib/simple_cov/formatter/terminal/config.rb +1 -5
- data/lib/simple_cov/formatter/terminal/line_printer.rb +16 -11
- data/lib/simple_cov/formatter/terminal/result_printer.rb +0 -10
- data/lib/simple_cov/formatter/terminal/version.rb +1 -1
- metadata +3 -4
- data/lib/simple_cov/formatter/terminal/target_file_writer.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: deae1a8971e620250fa1a1748eaa59bd8b1036396514430f8da0137068d41445
|
4
|
+
data.tar.gz: 062c244a99ca1f92f9cff01d1566a24ac4c47b94d891c668d05a8da6f5299302
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 898eee91d6d0e588826fe800006eb51980a9bbe7af841a4eef025a77a103400a5afd78f16ff750b560651c70d21b57b0530e7ab0387dfed196023e0864a84821
|
7
|
+
data.tar.gz: df37c9668c61f2b605e1e4f07267223b138a5bc6ad58071d56f1d99ed421572a894018954889db9f8bfcd4e276fb86e07b63e3bf8fb027f96d59a0c080e5ea42
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
simple_cov-formatter-terminal (1.
|
4
|
+
simple_cov-formatter-terminal (1.5.0)
|
5
5
|
activesupport (>= 7.0.4, < 8)
|
6
6
|
memo_wise (>= 1.7.0, < 2)
|
7
7
|
rouge (>= 4.0.0, < 5)
|
@@ -31,7 +31,7 @@ GEM
|
|
31
31
|
concurrent-ruby (1.3.3)
|
32
32
|
connection_pool (2.4.1)
|
33
33
|
diff-lcs (1.5.1)
|
34
|
-
docile (1.4.
|
34
|
+
docile (1.4.1)
|
35
35
|
drb (2.2.1)
|
36
36
|
i18n (1.14.5)
|
37
37
|
concurrent-ruby (~> 1.0)
|
@@ -93,12 +93,12 @@ GEM
|
|
93
93
|
ruby-progressbar (1.13.0)
|
94
94
|
runger_config (5.2.0)
|
95
95
|
activesupport (>= 7.1.2)
|
96
|
-
runger_release_assistant (0.
|
96
|
+
runger_release_assistant (0.11.0)
|
97
97
|
activesupport (>= 6, < 8)
|
98
98
|
memo_wise (>= 1.7, < 2)
|
99
99
|
rainbow (>= 3.0, < 4)
|
100
100
|
slop (~> 4.8)
|
101
|
-
runger_style (2.
|
101
|
+
runger_style (2.13.0)
|
102
102
|
prism (>= 0.24.0)
|
103
103
|
rubocop (>= 1.38.0, < 2)
|
104
104
|
simplecov (0.22.0)
|
data/README.md
CHANGED
@@ -115,6 +115,21 @@ branch is not covered on line 18).
|
|
115
115
|
|
116
116
|
[simple-cov-branch-coverage]: https://github.com/simplecov-ruby/simplecov#branch-coverage-ruby--25
|
117
117
|
|
118
|
+
## Terminal hyperlinks
|
119
|
+
|
120
|
+
If you provide a `terminal_hyperlink_target_pattern`, then SimpleCov::Formatter::Terminal will attempt to print the line numbers in its display as hyperlinks to the relevant line of code.
|
121
|
+
|
122
|
+
The pattern can include these interpolation markers:
|
123
|
+
|
124
|
+
- `%f` - This will be replaced with the absolute path of the application file.
|
125
|
+
- `%l` - This will be replaced with the line number.
|
126
|
+
|
127
|
+
For example, this pattern will work to make the line numbers clickable links that open the appropriate file at the appropriate line in VS Code:
|
128
|
+
|
129
|
+
```rb
|
130
|
+
SimpleCov::Formatter::Terminal.config.terminal_hyperlink_target_pattern = 'vscode://file/%f:%l'
|
131
|
+
```
|
132
|
+
|
118
133
|
## Development
|
119
134
|
|
120
135
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/rspec` to run
|
@@ -16,12 +16,8 @@ class SimpleCov::Formatter::Terminal::Config < Runger::Config
|
|
16
16
|
lines_to_print: LinesToPrint::UNCOVERED,
|
17
17
|
spec_to_app_file_map:
|
18
18
|
SimpleCov::Formatter::Terminal::SpecToAppMapping.default_spec_to_app_map,
|
19
|
+
terminal_hyperlink_target_pattern: nil,
|
19
20
|
unmappable_spec_regexes:
|
20
21
|
SimpleCov::Formatter::Terminal::SpecToAppMapping::DEFAULT_UNMAPPABLE_SPEC_REGEXES,
|
21
22
|
)
|
22
|
-
|
23
|
-
memo_wise \
|
24
|
-
def write_target_info_file?
|
25
|
-
ENV.fetch('SIMPLECOV_WRITE_TARGET_TO_FILE', nil) == '1'
|
26
|
-
end
|
27
23
|
end
|
@@ -7,6 +7,8 @@ class SimpleCov::Formatter::Terminal::LinePrinter
|
|
7
7
|
include SimpleCov::Formatter::Terminal::BranchCoverage
|
8
8
|
include SimpleCov::Formatter::Terminal::ColorPrinting
|
9
9
|
|
10
|
+
LINE_NUMBER_WIDTH = 3
|
11
|
+
|
10
12
|
def initialize(targeted_application_file = nil)
|
11
13
|
@targeted_application_file = targeted_application_file
|
12
14
|
end
|
@@ -37,20 +39,16 @@ class SimpleCov::Formatter::Terminal::LinePrinter
|
|
37
39
|
else color(' ', :white_on_green)
|
38
40
|
end
|
39
41
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
else
|
44
|
-
3
|
45
|
-
end
|
42
|
+
pattern = SimpleCov::Formatter::Terminal.config.terminal_hyperlink_target_pattern
|
43
|
+
|
44
|
+
link_text = line_number.to_s.rjust(LINE_NUMBER_WIDTH, ' ')
|
46
45
|
|
47
46
|
line_number_string =
|
48
|
-
if
|
49
|
-
' '
|
50
|
-
|
51
|
-
":::#{line_number}".rjust(line_number_width, ' ')
|
47
|
+
if pattern
|
48
|
+
link_target = pattern.sub('%f', absolute_target_path).sub('%l', line_number.to_s)
|
49
|
+
"\e]8;;#{link_target}\e\\#{link_text}\e]8;;\e\\"
|
52
50
|
else
|
53
|
-
|
51
|
+
link_text
|
54
52
|
end
|
55
53
|
|
56
54
|
output =
|
@@ -76,4 +74,11 @@ class SimpleCov::Formatter::Terminal::LinePrinter
|
|
76
74
|
highlighted_source = formatter.format(lexer.lex(source))
|
77
75
|
highlighted_source.split("\n")
|
78
76
|
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
memo_wise \
|
81
|
+
def absolute_target_path
|
82
|
+
File.join(ENV.fetch('PWD'), @targeted_application_file)
|
83
|
+
end
|
79
84
|
end
|
@@ -3,7 +3,6 @@
|
|
3
3
|
require_relative 'branch_coverage'
|
4
4
|
require_relative 'color_printing'
|
5
5
|
require_relative 'line_printer'
|
6
|
-
require_relative 'target_file_writer'
|
7
6
|
|
8
7
|
class SimpleCov::Formatter::Terminal::ResultPrinter
|
9
8
|
extend Forwardable
|
@@ -50,10 +49,6 @@ class SimpleCov::Formatter::Terminal::ResultPrinter
|
|
50
49
|
def print_coverage_details(sourcefile)
|
51
50
|
@sourcefile = sourcefile
|
52
51
|
|
53
|
-
if SimpleCov::Formatter::Terminal.config.write_target_info_file?
|
54
|
-
target_file_writer.write_target_info_file
|
55
|
-
end
|
56
|
-
|
57
52
|
puts("---- Coverage for #{targeted_application_file} ".ljust(80, '-').rstrip)
|
58
53
|
|
59
54
|
skipped_lines = []
|
@@ -142,11 +137,6 @@ class SimpleCov::Formatter::Terminal::ResultPrinter
|
|
142
137
|
SimpleCov::Formatter::Terminal::RSpecIntegration.failure_occurred?
|
143
138
|
end
|
144
139
|
|
145
|
-
memo_wise \
|
146
|
-
def target_file_writer
|
147
|
-
SimpleCov::Formatter::Terminal::TargetFileWriter.new(targeted_application_file)
|
148
|
-
end
|
149
|
-
|
150
140
|
def colorized_coverage(covered_percent)
|
151
141
|
case
|
152
142
|
when covered_percent >= 100 then color("#{covered_percent.round(2)}%", :green)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_cov-formatter-terminal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Runger
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-07-
|
11
|
+
date: 2024-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -151,7 +151,6 @@ files:
|
|
151
151
|
- lib/simple_cov/formatter/terminal/rails_awareness.rb
|
152
152
|
- lib/simple_cov/formatter/terminal/result_printer.rb
|
153
153
|
- lib/simple_cov/formatter/terminal/spec_to_app_mapping.rb
|
154
|
-
- lib/simple_cov/formatter/terminal/target_file_writer.rb
|
155
154
|
- lib/simple_cov/formatter/terminal/version.rb
|
156
155
|
- simple_cov-formatter-terminal.gemspec
|
157
156
|
homepage: https://github.com/davidrunger/simple_cov-formatter-terminal
|
@@ -177,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
176
|
- !ruby/object:Gem::Version
|
178
177
|
version: '0'
|
179
178
|
requirements: []
|
180
|
-
rubygems_version: 3.5.
|
179
|
+
rubygems_version: 3.5.16
|
181
180
|
signing_key:
|
182
181
|
specification_version: 4
|
183
182
|
summary: Print detailed code coverage info to the terminal
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'memo_wise'
|
4
|
-
|
5
|
-
class SimpleCov::Formatter::Terminal::TargetFileWriter
|
6
|
-
def initialize(targeted_application_file)
|
7
|
-
@targeted_application_file = targeted_application_file
|
8
|
-
end
|
9
|
-
|
10
|
-
def write_target_info_file
|
11
|
-
directory = 'tmp/simple_cov/formatter/terminal'
|
12
|
-
FileUtils.mkdir_p(directory)
|
13
|
-
File.write("#{directory}/target.txt", "#{@targeted_application_file}\n")
|
14
|
-
end
|
15
|
-
end
|