minitest-holdify 1.3.4 → 1.3.5

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: 91ac2c93846bb953d73a2cee3f89f8985b5ed1596b13995423212e91020cf52f
4
- data.tar.gz: c3d196b9a65791d40aa3255a2c11345bebecf989a7c154d0e7d93cb4b9302294
3
+ metadata.gz: d19382125e8e102ff0d8b01ca8227e68b44c7d0a532e99b5b2e7236a37a37407
4
+ data.tar.gz: cc34821ba517f701180baa40391421cc6d888d18a079be4c1445d6bda43578dc
5
5
  SHA512:
6
- metadata.gz: 20007012180156142177f200c8874325e446638ab65fd87ecd6aa7f3377473fce0ff8dee1c88da698dc5aff77318cd66d6ad2bf3c419fabbc9c77170ff9b909d
7
- data.tar.gz: aad5cb0fd0683f63fe3754c39745e87674e0df1c98b2babc4facc926d79bf1d0c9d3f643dd72d156acf29b18a159c0ea79e21b4e0e68ff384bc7c1402a2ae60e
6
+ metadata.gz: '0981c21b5932c8931c467642c6b1575bd3c61f34430f9330eb3c8c22d6712de5dba67ce6b31b8f8f59ed8e2778ddf3d393570721eda84496a35001e394e22588'
7
+ data.tar.gz: 5a73f8ab4dedddfe7694651d9a582641926648810c8dc30bec911a10c0f60dd63fa14b2b38422fd861b8abe18e9890b86de182cb73a28b7026b1bc8e7428912d
@@ -8,12 +8,8 @@ module Holdify
8
8
  # Feedback report on failure
9
9
  class Feedback
10
10
  def initialize(hold, hold_ref, *args)
11
- test_lno = hold.test_loc.lineno
12
- index = hold.session[test_lno].size - 1 # current index
13
- xxh = hold.store.xxh(test_lno)
14
11
  yaml_path = hold.store.path
15
-
16
- @yaml_lno = find_yaml_lno(yaml_path, test_lno, xxh, index)
12
+ @yaml_lno = find_yaml_lno(hold, yaml_path)
17
13
  @yaml_ref = Holdify.relativize("#{yaml_path}:#{@yaml_lno}")
18
14
 
19
15
  @hold_ref = Holdify.relativize(hold_ref)
@@ -34,7 +30,7 @@ module Holdify
34
30
  extend Color::GitDiff
35
31
  end
36
32
 
37
- def message = [@message, *file_refs, *diff, ''].join("\n")
33
+ def render = [@message, *file_refs, *diff, ''].join("\n")
38
34
 
39
35
  def file_refs
40
36
  ["--- @stored --> #{@yaml_ref}", "+++ @tested --> #{@hold_ref}"].tap do |refs|
@@ -46,7 +42,11 @@ module Holdify
46
42
 
47
43
  private
48
44
 
49
- def find_yaml_lno(yaml_path, test_lno, xxh, index)
45
+ def find_yaml_lno(hold, yaml_path)
46
+ test_lno = hold.test_loc.lineno
47
+ index = hold.session[test_lno].size - 1 # current index
48
+ xxh = hold.store.xxh(test_lno)
49
+
50
50
  found = false
51
51
  count = -1
52
52
  File.foreach(yaml_path).with_index(1) do |line, ln|
@@ -91,8 +91,8 @@ module Holdify
91
91
  end
92
92
 
93
93
  def process_lines(lines)
94
- width = 0
95
- lineno = [@yaml_lno - 1]
94
+ width = 0
95
+ lineno = [@yaml_lno - 1]
96
96
  lines.map.with_index do |line, i|
97
97
  if i.zero? # @@ ... @@
98
98
  width, line = render_hunk(line)
@@ -105,14 +105,16 @@ module Holdify
105
105
  end.compact
106
106
  end
107
107
 
108
+ # Reduce the hunk lines by 1 and calculate the gutter width
108
109
  def render_hunk(line)
109
110
  width = 0
110
111
  hunk = line.gsub(/([-+]\d+),(\d+)\s+([-+]\d+),(\d+)/) do
111
- v1, = $2.to_i - 1 # rubocop:disable Style/PerlBackrefs
112
- v2 = $4.to_i - 1 # rubocop:disable Style/PerlBackrefs
113
- width = (@yaml_lno + [v1, v2].max).to_s.length
114
- "#{$1},#{v1} #{$3},#{v2}" # rubocop:disable Style/PerlBackrefs
115
- end
112
+ v1, = $2.to_i - 1 # rubocop:disable Style/PerlBackrefs
113
+ v2 = $4.to_i - 1 # rubocop:disable Style/PerlBackrefs
114
+ width = (@yaml_lno + [v1, v2].max).to_s.length
115
+ "#{$1},#{v1} #{$3},#{v2}" # rubocop:disable Style/PerlBackrefs
116
+ end
117
+
116
118
  [width, hunk]
117
119
  end
118
120
 
@@ -150,7 +152,8 @@ module Holdify
150
152
  # Methods enabling the git-diff ANSI feedback
151
153
  module GitDiff
152
154
  def git_command
153
- re = '[[:alnum:]:._-]+|[^[:alnum:]:._-]|[[:space:]]+' # YAML and HTML friendly: avoid long continuous tokens
155
+ # Words/ruby entities | indent | other single-chars
156
+ re = '[[:alnum:]_:]+|[[:space:]]+|.'
154
157
  "git diff --no-index --color-words='#{re}' --unified=1000 #{@exp_path} #{@act_path}"
155
158
  end
156
159
 
@@ -167,7 +170,7 @@ module Holdify
167
170
  "#{sgr}#{type}#{' ' * width}#{SGR[:clear]}"
168
171
  else
169
172
  lineno[0] += 1
170
- "#{sgr}#{type || ' '}#{lineno[0].to_s.rjust(width)}#{SGR[:clear]}"
173
+ "#{sgr}#{type || ' '}#{lineno[0].to_s.rjust(width)}#{SGR[:clear] if sgr}"
171
174
  end
172
175
 
173
176
  "#{gutter} #{line}"
data/lib/holdify/hold.rb CHANGED
@@ -39,6 +39,10 @@ module Holdify
39
39
  @session.each { |lineno, values| @store.set_values(lineno, values) }
40
40
  end
41
41
 
42
+ def feedback(*) = Feedback.new(self, *).render
43
+
44
+ private
45
+
42
46
  # Find the triggering LOC inside the test block/method
43
47
  def find_test_loc
44
48
  caller_locations(2).find do |location|
@@ -48,7 +52,5 @@ module Holdify
48
52
  label == @test.name || label == '<top (required)>' || label == '<main>' || label.start_with?('<class:', '<module:')
49
53
  end
50
54
  end
51
-
52
- def feedback(*) = Feedback.new(self, *).message
53
55
  end
54
56
  end
data/lib/holdify.rb CHANGED
@@ -7,7 +7,7 @@ require_relative 'holdify/store'
7
7
 
8
8
  # The container module
9
9
  module Holdify
10
- VERSION = '1.3.4'
10
+ VERSION = '1.3.5'
11
11
 
12
12
  @fresh_mutex = Mutex.new
13
13
  @fresh = []
@@ -23,7 +23,7 @@ module Holdify
23
23
  end
24
24
  end
25
25
 
26
- def fresh_report
26
+ def warn_fresh_values
27
27
  return if quiet
28
28
 
29
29
  @fresh_mutex.synchronize do
@@ -19,8 +19,8 @@ module Minitest
19
19
  opts.on '--holdify-no-color', 'Disable colored output' do
20
20
  options[:holdify_no_color] = true
21
21
  end
22
- opts.on '--holdify-no-relative-paths', 'Disable relative paths in file references' do
23
- options[:holdify_no_relative_paths] = true
22
+ opts.on '--holdify-absolute-paths', 'Disable relative paths in file references' do
23
+ options[:holdify_absolute_paths] = true
24
24
  end
25
25
  opts.on '--holdify-store-ext EXT', 'The yaml store extension (default .yaml)' do |ext|
26
26
  options[:holdify_store_ext] = ext
@@ -38,19 +38,19 @@ module Minitest
38
38
  Holdify.quiet = options[:holdify_quiet]
39
39
  Holdify.git_diff = git unless options[:holdify_no_git_diff]
40
40
  Holdify.color = !ENV.key?('NO_COLOR') unless options[:holdify_no_color]
41
- Holdify.rel_paths = true unless options[:holdify_no_relative_paths]
41
+ Holdify.rel_paths = true unless options[:holdify_absolute_paths]
42
42
  Holdify.store_ext = options[:holdify_store_ext] || '.yaml'
43
43
 
44
44
  Minitest.after_run do
45
45
  Holdify.persist_stores!
46
- Holdify.fresh_report
46
+ Holdify.warn_fresh_values
47
47
  end
48
48
  end
49
49
 
50
50
  # Patching Minitest::Assertion
51
51
  class Assertion
52
52
  remove_const :RE
53
- RE = /in [`'](?:[^']+[#.])?(?:assert|refute|flunk|pass|fail|raise|must|wont|to)/ # :nodoc:
53
+ RE = /in [`'](?:[^']+[#.])?(?:assert|refute|flunk|pass|fail|raise|must|wont|to)/ # add to (to_hold)
54
54
  end
55
55
 
56
56
  # Reopen the minitest class
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-holdify
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 1.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Domizio Demichelis