diff-lcs 1.4.4 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/Contributing.md +3 -0
  3. data/History.md +219 -107
  4. data/License.md +6 -4
  5. data/Manifest.txt +15 -1
  6. data/Rakefile +81 -25
  7. data/bin/htmldiff +4 -4
  8. data/lib/diff/lcs/array.rb +1 -1
  9. data/lib/diff/lcs/backports.rb +2 -2
  10. data/lib/diff/lcs/block.rb +4 -4
  11. data/lib/diff/lcs/callbacks.rb +9 -7
  12. data/lib/diff/lcs/change.rb +19 -19
  13. data/lib/diff/lcs/htmldiff.rb +24 -16
  14. data/lib/diff/lcs/hunk.rb +35 -30
  15. data/lib/diff/lcs/internals.rb +24 -20
  16. data/lib/diff/lcs/ldiff.rb +37 -35
  17. data/lib/diff/lcs.rb +77 -75
  18. data/lib/diff-lcs.rb +1 -1
  19. data/spec/change_spec.rb +50 -50
  20. data/spec/diff_spec.rb +14 -14
  21. data/spec/fixtures/ldiff/output.diff.chef +4 -0
  22. data/spec/fixtures/ldiff/output.diff.chef-c +15 -0
  23. data/spec/fixtures/ldiff/output.diff.chef-e +3 -0
  24. data/spec/fixtures/ldiff/output.diff.chef-f +3 -0
  25. data/spec/fixtures/ldiff/output.diff.chef-u +9 -0
  26. data/spec/fixtures/ldiff/output.diff.chef2 +7 -0
  27. data/spec/fixtures/ldiff/output.diff.chef2-c +20 -0
  28. data/spec/fixtures/ldiff/output.diff.chef2-d +7 -0
  29. data/spec/fixtures/ldiff/output.diff.chef2-e +7 -0
  30. data/spec/fixtures/ldiff/output.diff.chef2-f +7 -0
  31. data/spec/fixtures/ldiff/output.diff.chef2-u +16 -0
  32. data/spec/fixtures/new-chef +4 -0
  33. data/spec/fixtures/new-chef2 +17 -0
  34. data/spec/fixtures/old-chef +4 -0
  35. data/spec/fixtures/old-chef2 +14 -0
  36. data/spec/hunk_spec.rb +19 -19
  37. data/spec/issues_spec.rb +48 -42
  38. data/spec/lcs_spec.rb +11 -11
  39. data/spec/ldiff_spec.rb +13 -11
  40. data/spec/patch_spec.rb +84 -84
  41. data/spec/sdiff_spec.rb +111 -109
  42. data/spec/spec_helper.rb +77 -76
  43. data/spec/traverse_balanced_spec.rb +191 -189
  44. data/spec/traverse_sequences_spec.rb +31 -33
  45. metadata +50 -23
  46. data/autotest/discover.rb +0 -3
@@ -1,310 +1,312 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
- describe 'Diff::LCS.traverse_balanced' do
5
+ describe "Diff::LCS.traverse_balanced" do
6
6
  include Diff::LCS::SpecHelper::Matchers
7
7
 
8
- shared_examples 'with a #change callback' do |s1, s2, result|
9
- it 'traverses s1 -> s2 correctly' do
8
+ shared_examples "with a #change callback" do |s1, s2, result|
9
+ it "traverses s1 -> s2 correctly" do
10
10
  traversal = balanced_traversal(s1, s2, :balanced_callback)
11
11
  expect(traversal.result).to eq(result)
12
12
  end
13
13
 
14
- it 'traverses s2 -> s1 correctly' do
14
+ it "traverses s2 -> s1 correctly" do
15
15
  traversal = balanced_traversal(s2, s1, :balanced_callback)
16
16
  expect(traversal.result).to eq(balanced_reverse(result))
17
17
  end
18
18
  end
19
19
 
20
- shared_examples 'without a #change callback' do |s1, s2, result|
21
- it 'traverses s1 -> s2 correctly' do
20
+ shared_examples "without a #change callback" do |s1, s2, result|
21
+ it "traverses s1 -> s2 correctly" do
22
22
  traversal = balanced_traversal(s1, s2, :balanced_callback_no_change)
23
23
  expect(traversal.result).to eq(map_to_no_change(result))
24
24
  end
25
25
 
26
- it 'traverses s2 -> s1 correctly' do
26
+ it "traverses s2 -> s1 correctly" do
27
27
  traversal = balanced_traversal(s2, s1, :balanced_callback_no_change)
28
28
  expect(traversal.result).to eq(map_to_no_change(balanced_reverse(result)))
29
29
  end
30
30
  end
31
31
 
32
32
  describe "identical string sequences ('abc')" do
33
- s1 = s2 = 'abc'
33
+ s1 = s2 = "abc"
34
34
 
35
35
  result = [
36
- ['=', 0, 0],
37
- ['=', 1, 1],
38
- ['=', 2, 2]
36
+ ["=", 0, 0],
37
+ ["=", 1, 1],
38
+ ["=", 2, 2]
39
39
  ]
40
40
 
41
- it_has_behavior 'with a #change callback', s1, s2, result
42
- it_has_behavior 'without a #change callback', s1, s2, result
41
+ it_has_behavior "with a #change callback", s1, s2, result
42
+ it_has_behavior "without a #change callback", s1, s2, result
43
43
  end
44
44
 
45
- describe 'identical array sequences %w(a b c)' do
46
- s1 = s2 = %w(a b c)
45
+ describe "identical array sequences %w(a b c)" do
46
+ s1 = s2 = %w[a b c]
47
47
 
48
48
  result = [
49
- ['=', 0, 0],
50
- ['=', 1, 1],
51
- ['=', 2, 2]
49
+ ["=", 0, 0],
50
+ ["=", 1, 1],
51
+ ["=", 2, 2]
52
52
  ]
53
53
 
54
- it_has_behavior 'with a #change callback', s1, s2, result
55
- it_has_behavior 'without a #change callback', s1, s2, result
54
+ it_has_behavior "with a #change callback", s1, s2, result
55
+ it_has_behavior "without a #change callback", s1, s2, result
56
56
  end
57
57
 
58
- describe 'sequences %w(a b c) & %w(a x c)' do
59
- s1 = %w(a b c)
60
- s2 = %w(a x c)
58
+ describe "sequences %w(a b c) & %w(a x c)" do
59
+ s1 = %w[a b c]
60
+ s2 = %w[a x c]
61
61
 
62
62
  result = [
63
- ['=', 0, 0],
64
- ['!', 1, 1],
65
- ['=', 2, 2]
63
+ ["=", 0, 0],
64
+ ["!", 1, 1],
65
+ ["=", 2, 2]
66
66
  ]
67
67
 
68
- it_has_behavior 'with a #change callback', s1, s2, result
69
- it_has_behavior 'without a #change callback', s1, s2, result
68
+ it_has_behavior "with a #change callback", s1, s2, result
69
+ it_has_behavior "without a #change callback", s1, s2, result
70
70
  end
71
71
 
72
- describe 'sequences %w(a x y c) & %w(a v w c)' do
73
- s1 = %w(a x y c)
74
- s2 = %w(a v w c)
72
+ describe "sequences %w(a x y c) & %w(a v w c)" do
73
+ s1 = %w[a x y c]
74
+ s2 = %w[a v w c]
75
75
 
76
76
  result = [
77
- ['=', 0, 0],
78
- ['!', 1, 1],
79
- ['!', 2, 2],
80
- ['=', 3, 3]
77
+ ["=", 0, 0],
78
+ ["!", 1, 1],
79
+ ["!", 2, 2],
80
+ ["=", 3, 3]
81
81
  ]
82
82
 
83
- it_has_behavior 'with a #change callback', s1, s2, result
84
- it_has_behavior 'without a #change callback', s1, s2, result
83
+ it_has_behavior "with a #change callback", s1, s2, result
84
+ it_has_behavior "without a #change callback", s1, s2, result
85
85
  end
86
86
 
87
- describe 'sequences %w(x y c) & %w(v w c)' do
88
- s1 = %w(x y c)
89
- s2 = %w(v w c)
87
+ describe "sequences %w(x y c) & %w(v w c)" do
88
+ s1 = %w[x y c]
89
+ s2 = %w[v w c]
90
90
  result = [
91
- ['!', 0, 0],
92
- ['!', 1, 1],
93
- ['=', 2, 2]
91
+ ["!", 0, 0],
92
+ ["!", 1, 1],
93
+ ["=", 2, 2]
94
94
  ]
95
95
 
96
- it_has_behavior 'with a #change callback', s1, s2, result
97
- it_has_behavior 'without a #change callback', s1, s2, result
96
+ it_has_behavior "with a #change callback", s1, s2, result
97
+ it_has_behavior "without a #change callback", s1, s2, result
98
98
  end
99
99
 
100
- describe 'sequences %w(a x y z) & %w(b v w)' do
101
- s1 = %w(a x y z)
102
- s2 = %w(b v w)
100
+ describe "sequences %w(a x y z) & %w(b v w)" do
101
+ s1 = %w[a x y z]
102
+ s2 = %w[b v w]
103
103
  result = [
104
- ['!', 0, 0],
105
- ['!', 1, 1],
106
- ['!', 2, 2],
107
- ['<', 3, 3]
104
+ ["!", 0, 0],
105
+ ["!", 1, 1],
106
+ ["!", 2, 2],
107
+ ["<", 3, 3]
108
108
  ]
109
109
 
110
- it_has_behavior 'with a #change callback', s1, s2, result
111
- it_has_behavior 'without a #change callback', s1, s2, result
110
+ it_has_behavior "with a #change callback", s1, s2, result
111
+ it_has_behavior "without a #change callback", s1, s2, result
112
112
  end
113
113
 
114
- describe 'sequences %w(a z) & %w(a)' do
115
- s1 = %w(a z)
116
- s2 = %w(a)
114
+ describe "sequences %w(a z) & %w(a)" do
115
+ s1 = %w[a z]
116
+ s2 = %w[a]
117
117
  result = [
118
- ['=', 0, 0],
119
- ['<', 1, 1]
118
+ ["=", 0, 0],
119
+ ["<", 1, 1]
120
120
  ]
121
121
 
122
- it_has_behavior 'with a #change callback', s1, s2, result
123
- it_has_behavior 'without a #change callback', s1, s2, result
122
+ it_has_behavior "with a #change callback", s1, s2, result
123
+ it_has_behavior "without a #change callback", s1, s2, result
124
124
  end
125
125
 
126
- describe 'sequences %w(z a) & %w(a)' do
127
- s1 = %w(z a)
128
- s2 = %w(a)
126
+ describe "sequences %w(z a) & %w(a)" do
127
+ s1 = %w[z a]
128
+ s2 = %w[a]
129
129
  result = [
130
- ['<', 0, 0],
131
- ['=', 1, 0]
130
+ ["<", 0, 0],
131
+ ["=", 1, 0]
132
132
  ]
133
133
 
134
- it_has_behavior 'with a #change callback', s1, s2, result
135
- it_has_behavior 'without a #change callback', s1, s2, result
134
+ it_has_behavior "with a #change callback", s1, s2, result
135
+ it_has_behavior "without a #change callback", s1, s2, result
136
136
  end
137
137
 
138
- describe 'sequences %w(a b c) & %w(x y z)' do
139
- s1 = %w(a b c)
140
- s2 = %w(x y z)
138
+ describe "sequences %w(a b c) & %w(x y z)" do
139
+ s1 = %w[a b c]
140
+ s2 = %w[x y z]
141
141
  result = [
142
- ['!', 0, 0],
143
- ['!', 1, 1],
144
- ['!', 2, 2]
142
+ ["!", 0, 0],
143
+ ["!", 1, 1],
144
+ ["!", 2, 2]
145
145
  ]
146
146
 
147
- it_has_behavior 'with a #change callback', s1, s2, result
148
- it_has_behavior 'without a #change callback', s1, s2, result
147
+ it_has_behavior "with a #change callback", s1, s2, result
148
+ it_has_behavior "without a #change callback", s1, s2, result
149
149
  end
150
150
 
151
- describe 'sequences %w(abcd efgh ijkl mnoopqrstuvwxyz) & []' do
152
- s1 = %w(abcd efgh ijkl mnopqrstuvwxyz)
151
+ describe "sequences %w(abcd efgh ijkl mnoopqrstuvwxyz) & []" do
152
+ s1 = %w[abcd efgh ijkl mnopqrstuvwxyz]
153
153
  s2 = []
154
154
  result = [
155
- ['<', 0, 0],
156
- ['<', 1, 0],
157
- ['<', 2, 0],
158
- ['<', 3, 0]
155
+ ["<", 0, 0],
156
+ ["<", 1, 0],
157
+ ["<", 2, 0],
158
+ ["<", 3, 0]
159
159
  ]
160
160
 
161
- it_has_behavior 'with a #change callback', s1, s2, result
162
- it_has_behavior 'without a #change callback', s1, s2, result
161
+ it_has_behavior "with a #change callback", s1, s2, result
162
+ it_has_behavior "without a #change callback", s1, s2, result
163
163
  end
164
164
 
165
- describe 'strings %q(a b c) & %q(a x c)' do
166
- s1 = 'a b c'
167
- s2 = 'a x c'
165
+ describe "strings %q(a b c) & %q(a x c)" do
166
+ s1 = "a b c"
167
+ s2 = "a x c"
168
168
 
169
169
  result = [
170
- ['=', 0, 0],
171
- ['=', 1, 1],
172
- ['!', 2, 2],
173
- ['=', 3, 3],
174
- ['=', 4, 4]
170
+ ["=", 0, 0],
171
+ ["=", 1, 1],
172
+ ["!", 2, 2],
173
+ ["=", 3, 3],
174
+ ["=", 4, 4]
175
175
  ]
176
176
 
177
- it_has_behavior 'with a #change callback', s1, s2, result
178
- it_has_behavior 'without a #change callback', s1, s2, result
177
+ it_has_behavior "with a #change callback", s1, s2, result
178
+ it_has_behavior "without a #change callback", s1, s2, result
179
179
  end
180
180
 
181
- describe 'strings %q(a x y c) & %q(a v w c)' do
182
- s1 = 'a x y c'
183
- s2 = 'a v w c'
181
+ describe "strings %q(a x y c) & %q(a v w c)" do
182
+ s1 = "a x y c"
183
+ s2 = "a v w c"
184
184
 
185
185
  result = [
186
- ['=', 0, 0],
187
- ['=', 1, 1],
188
- ['!', 2, 2],
189
- ['=', 3, 3],
190
- ['!', 4, 4],
191
- ['=', 5, 5],
192
- ['=', 6, 6]
186
+ ["=", 0, 0],
187
+ ["=", 1, 1],
188
+ ["!", 2, 2],
189
+ ["=", 3, 3],
190
+ ["!", 4, 4],
191
+ ["=", 5, 5],
192
+ ["=", 6, 6]
193
193
  ]
194
194
 
195
- it_has_behavior 'with a #change callback', s1, s2, result
196
- it_has_behavior 'without a #change callback', s1, s2, result
195
+ it_has_behavior "with a #change callback", s1, s2, result
196
+ it_has_behavior "without a #change callback", s1, s2, result
197
197
  end
198
198
 
199
- describe 'strings %q(x y c) & %q(v w c)' do
200
- s1 = 'x y c'
201
- s2 = 'v w c'
199
+ describe "strings %q(x y c) & %q(v w c)" do
200
+ s1 = "x y c"
201
+ s2 = "v w c"
202
202
  result = [
203
- ['!', 0, 0],
204
- ['=', 1, 1],
205
- ['!', 2, 2],
206
- ['=', 3, 3],
207
- ['=', 4, 4]
203
+ ["!", 0, 0],
204
+ ["=", 1, 1],
205
+ ["!", 2, 2],
206
+ ["=", 3, 3],
207
+ ["=", 4, 4]
208
208
  ]
209
209
 
210
- it_has_behavior 'with a #change callback', s1, s2, result
211
- it_has_behavior 'without a #change callback', s1, s2, result
210
+ it_has_behavior "with a #change callback", s1, s2, result
211
+ it_has_behavior "without a #change callback", s1, s2, result
212
212
  end
213
213
 
214
- describe 'strings %q(a x y z) & %q(b v w)' do
215
- s1 = 'a x y z'
216
- s2 = 'b v w'
214
+ describe "strings %q(a x y z) & %q(b v w)" do
215
+ s1 = "a x y z"
216
+ s2 = "b v w"
217
217
  result = [
218
- ['!', 0, 0],
219
- ['=', 1, 1],
220
- ['!', 2, 2],
221
- ['=', 3, 3],
222
- ['!', 4, 4],
223
- ['<', 5, 5],
224
- ['<', 6, 5]
218
+ ["!", 0, 0],
219
+ ["=", 1, 1],
220
+ ["!", 2, 2],
221
+ ["=", 3, 3],
222
+ ["!", 4, 4],
223
+ ["<", 5, 5],
224
+ ["<", 6, 5]
225
225
  ]
226
226
 
227
- it_has_behavior 'with a #change callback', s1, s2, result
228
- it_has_behavior 'without a #change callback', s1, s2, result
227
+ it_has_behavior "with a #change callback", s1, s2, result
228
+ it_has_behavior "without a #change callback", s1, s2, result
229
229
  end
230
230
 
231
- describe 'strings %q(a z) & %q(a)' do
232
- s1 = 'a z'
233
- s2 = 'a'
231
+ describe "strings %q(a z) & %q(a)" do
232
+ s1 = "a z"
233
+ s2 = "a"
234
234
  result = [
235
- ['=', 0, 0],
236
- ['<', 1, 1],
237
- ['<', 2, 1]
235
+ ["=", 0, 0],
236
+ ["<", 1, 1],
237
+ ["<", 2, 1]
238
238
  ]
239
239
 
240
- it_has_behavior 'with a #change callback', s1, s2, result
241
- it_has_behavior 'without a #change callback', s1, s2, result
240
+ it_has_behavior "with a #change callback", s1, s2, result
241
+ it_has_behavior "without a #change callback", s1, s2, result
242
242
  end
243
243
 
244
- describe 'strings %q(z a) & %q(a)' do
245
- s1 = 'z a'
246
- s2 = 'a'
244
+ describe "strings %q(z a) & %q(a)" do
245
+ s1 = "z a"
246
+ s2 = "a"
247
247
  result = [
248
- ['<', 0, 0],
249
- ['<', 1, 0],
250
- ['=', 2, 0]
248
+ ["<", 0, 0],
249
+ ["<", 1, 0],
250
+ ["=", 2, 0]
251
251
  ]
252
252
 
253
- it_has_behavior 'with a #change callback', s1, s2, result
254
- it_has_behavior 'without a #change callback', s1, s2, result
253
+ it_has_behavior "with a #change callback", s1, s2, result
254
+ it_has_behavior "without a #change callback", s1, s2, result
255
255
  end
256
256
 
257
- describe 'strings %q(a b c) & %q(x y z)' do
258
- s1 = 'a b c'
259
- s2 = 'x y z'
257
+ describe "strings %q(a b c) & %q(x y z)" do
258
+ s1 = "a b c"
259
+ s2 = "x y z"
260
260
  result = [
261
- ['!', 0, 0],
262
- ['=', 1, 1],
263
- ['!', 2, 2],
264
- ['=', 3, 3],
265
- ['!', 4, 4]
261
+ ["!", 0, 0],
262
+ ["=", 1, 1],
263
+ ["!", 2, 2],
264
+ ["=", 3, 3],
265
+ ["!", 4, 4]
266
266
  ]
267
267
 
268
- it_has_behavior 'with a #change callback', s1, s2, result
269
- it_has_behavior 'without a #change callback', s1, s2, result
268
+ it_has_behavior "with a #change callback", s1, s2, result
269
+ it_has_behavior "without a #change callback", s1, s2, result
270
270
  end
271
271
 
272
- describe 'strings %q(abcd efgh ijkl mnopqrstuvwxyz) & %q()' do
273
- s1 = 'abcd efgh ijkl mnopqrstuvwxyz'
274
- s2 = ''
272
+ describe "strings %q(abcd efgh ijkl mnopqrstuvwxyz) & %q()" do
273
+ s1 = "abcd efgh ijkl mnopqrstuvwxyz"
274
+ s2 = ""
275
+ # standard:disable Layout/ExtraSpacing
275
276
  result = [
276
- ['<', 0, 0],
277
- ['<', 1, 0],
278
- ['<', 2, 0],
279
- ['<', 3, 0],
280
- ['<', 4, 0],
281
- ['<', 5, 0],
282
- ['<', 6, 0],
283
- ['<', 7, 0],
284
- ['<', 8, 0],
285
- ['<', 9, 0],
286
- ['<', 10, 0],
287
- ['<', 11, 0],
288
- ['<', 12, 0],
289
- ['<', 13, 0],
290
- ['<', 14, 0],
291
- ['<', 15, 0],
292
- ['<', 16, 0],
293
- ['<', 17, 0],
294
- ['<', 18, 0],
295
- ['<', 19, 0],
296
- ['<', 20, 0],
297
- ['<', 21, 0],
298
- ['<', 22, 0],
299
- ['<', 23, 0],
300
- ['<', 24, 0],
301
- ['<', 25, 0],
302
- ['<', 26, 0],
303
- ['<', 27, 0],
304
- ['<', 28, 0]
277
+ ["<", 0, 0],
278
+ ["<", 1, 0],
279
+ ["<", 2, 0],
280
+ ["<", 3, 0],
281
+ ["<", 4, 0],
282
+ ["<", 5, 0],
283
+ ["<", 6, 0],
284
+ ["<", 7, 0],
285
+ ["<", 8, 0],
286
+ ["<", 9, 0],
287
+ ["<", 10, 0],
288
+ ["<", 11, 0],
289
+ ["<", 12, 0],
290
+ ["<", 13, 0],
291
+ ["<", 14, 0],
292
+ ["<", 15, 0],
293
+ ["<", 16, 0],
294
+ ["<", 17, 0],
295
+ ["<", 18, 0],
296
+ ["<", 19, 0],
297
+ ["<", 20, 0],
298
+ ["<", 21, 0],
299
+ ["<", 22, 0],
300
+ ["<", 23, 0],
301
+ ["<", 24, 0],
302
+ ["<", 25, 0],
303
+ ["<", 26, 0],
304
+ ["<", 27, 0],
305
+ ["<", 28, 0]
305
306
  ]
307
+ # standard:enable Layout/ExtraSpacing
306
308
 
307
- it_has_behavior 'with a #change callback', s1, s2, result
308
- it_has_behavior 'without a #change callback', s1, s2, result
309
+ it_has_behavior "with a #change callback", s1, s2, result
310
+ it_has_behavior "without a #change callback", s1, s2, result
309
311
  end
310
312
  end