simple_cov-formatter-terminal 1.4.0 → 1.6.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 43650ef3dfe9732f2c765db02861799b26a5778d33deb6deba359d623fccb52a
4
- data.tar.gz: 05665a80df8b74e04e958ab657a5659c5b00f1cbf35f9dd86a69040f95c5f5dc
3
+ metadata.gz: 57dcdb462f586d9dfa9b15f94f124083f8359158332e94046d3f1e8beed45e48
4
+ data.tar.gz: 31f4ee23689e5c40c71908383987ff1e5c5800ff26648cac58e047affbc58857
5
5
  SHA512:
6
- metadata.gz: 1f4c5f53d8c84c0d5ce852c6a695eaa3b6f707b2774ae3c0436f568dfec5f7f57968b50f41eda02c49a6d77680e1b551ebb5aadeabafcbb7c210d10603149318
7
- data.tar.gz: a034211474448b76dc6ec8be2e4756f3d2b425e4acc40fc799e37c44b1906de3973ca000428c10560743a7204d111f240d80f2878c3e06b32bc9ba4c28fabda6
6
+ metadata.gz: 5e68fe09fda88e96459a438ff7442b3b5407b507cb3b9f90d11713adcf580793e6960236b409815654492d939448e6056ef5fa4185b76b90765334c5cfa7c49d
7
+ data.tar.gz: 681b536538dbbf5139622ee63849e23ac75b7581778c28decbe2e0ec3732d28f79b0640ba269f96396195f770cf51c343e88270bdf8fa7aa0071ba1d435e0fcb
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## v1.6.0 (2024-07-30)
2
+ - Make terminal hyperlink pattern an ENV var (`SIMPLECOV_TERMINAL_HYPERLINK_PATTERN`) rather than a Ruby setting
3
+
4
+ ## v1.5.0 (2024-07-28)
5
+ - Print line numbers as terminal hyperlinks if a `SimpleCov::Formatter::Terminal.config.terminal_hyperlink_target_pattern` is provided
6
+
1
7
  ## v1.4.0 (2024-07-21)
2
8
  - Handle map-spec-file-to-app failure more elegantly (#229)
3
9
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_cov-formatter-terminal (1.4.0)
4
+ simple_cov-formatter-terminal (1.6.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.0)
34
+ docile (1.4.1)
35
35
  drb (2.2.1)
36
36
  i18n (1.14.5)
37
37
  concurrent-ruby (~> 1.0)
@@ -52,7 +52,7 @@ GEM
52
52
  pry-byebug (3.10.1)
53
53
  byebug (~> 11.0)
54
54
  pry (>= 0.13, < 0.15)
55
- racc (1.8.0)
55
+ racc (1.8.1)
56
56
  rainbow (3.1.1)
57
57
  rake (13.2.1)
58
58
  regexp_parser (2.9.2)
@@ -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.10.0)
96
+ runger_release_assistant (0.12.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.12.0)
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 set a `SIMPLECOV_TERMINAL_HYPERLINK_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/should 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
+ ```sh
130
+ SIMPLECOV_TERMINAL_HYPERLINK_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
@@ -19,9 +19,4 @@ class SimpleCov::Formatter::Terminal::Config < Runger::Config
19
19
  unmappable_spec_regexes:
20
20
  SimpleCov::Formatter::Terminal::SpecToAppMapping::DEFAULT_UNMAPPABLE_SPEC_REGEXES,
21
21
  )
22
-
23
- memo_wise \
24
- def write_target_info_file?
25
- ENV.fetch('SIMPLECOV_WRITE_TARGET_TO_FILE', nil) == '1'
26
- end
27
22
  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
- line_number_width =
41
- if SimpleCov::Formatter::Terminal.config.write_target_info_file?
42
- 6
43
- else
44
- 3
45
- end
42
+ pattern = ENV['SIMPLECOV_TERMINAL_HYPERLINK_PATTERN'].presence
43
+
44
+ link_text = line_number.to_s.rjust(LINE_NUMBER_WIDTH, ' ')
46
45
 
47
46
  line_number_string =
48
- if line_number.blank?
49
- ' ' * line_number_width
50
- elsif SimpleCov::Formatter::Terminal.config.write_target_info_file?
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
- line_number.to_s.rjust(line_number_width, ' ')
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)
@@ -5,6 +5,6 @@ module SimpleCov::Formatter; end
5
5
 
6
6
  # rubocop:disable Style/StaticClass
7
7
  class SimpleCov::Formatter::Terminal
8
- VERSION = '1.4.0'
8
+ VERSION = '1.6.0'
9
9
  end
10
10
  # rubocop:enable Style/StaticClass
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.0
4
+ version: 1.6.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-22 00:00:00.000000000 Z
11
+ date: 2024-07-30 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.15
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