diff-lcs 1.3 → 1.5.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.
Files changed (55) hide show
  1. checksums.yaml +5 -5
  2. data/Contributing.md +84 -48
  3. data/History.md +334 -154
  4. data/Manifest.txt +23 -1
  5. data/README.rdoc +10 -10
  6. data/Rakefile +85 -21
  7. data/bin/htmldiff +7 -4
  8. data/bin/ldiff +4 -1
  9. data/lib/diff/lcs/array.rb +1 -1
  10. data/lib/diff/lcs/backports.rb +9 -0
  11. data/lib/diff/lcs/block.rb +1 -1
  12. data/lib/diff/lcs/callbacks.rb +15 -12
  13. data/lib/diff/lcs/change.rb +30 -37
  14. data/lib/diff/lcs/htmldiff.rb +17 -16
  15. data/lib/diff/lcs/hunk.rb +156 -74
  16. data/lib/diff/lcs/internals.rb +43 -42
  17. data/lib/diff/lcs/ldiff.rb +46 -42
  18. data/lib/diff/lcs/string.rb +1 -1
  19. data/lib/diff/lcs.rb +188 -174
  20. data/lib/diff-lcs.rb +1 -1
  21. data/spec/change_spec.rb +31 -7
  22. data/spec/diff_spec.rb +16 -12
  23. data/spec/fixtures/aX +1 -0
  24. data/spec/fixtures/bXaX +1 -0
  25. data/spec/fixtures/ldiff/output.diff +4 -0
  26. data/spec/fixtures/ldiff/output.diff-c +7 -0
  27. data/spec/fixtures/ldiff/output.diff-e +3 -0
  28. data/spec/fixtures/ldiff/output.diff-f +3 -0
  29. data/spec/fixtures/ldiff/output.diff-u +5 -0
  30. data/spec/fixtures/ldiff/output.diff.chef +4 -0
  31. data/spec/fixtures/ldiff/output.diff.chef-c +15 -0
  32. data/spec/fixtures/ldiff/output.diff.chef-e +3 -0
  33. data/spec/fixtures/ldiff/output.diff.chef-f +3 -0
  34. data/spec/fixtures/ldiff/output.diff.chef-u +9 -0
  35. data/spec/fixtures/ldiff/output.diff.chef2 +7 -0
  36. data/spec/fixtures/ldiff/output.diff.chef2-c +20 -0
  37. data/spec/fixtures/ldiff/output.diff.chef2-d +7 -0
  38. data/spec/fixtures/ldiff/output.diff.chef2-e +7 -0
  39. data/spec/fixtures/ldiff/output.diff.chef2-f +7 -0
  40. data/spec/fixtures/ldiff/output.diff.chef2-u +16 -0
  41. data/spec/fixtures/new-chef +4 -0
  42. data/spec/fixtures/new-chef2 +17 -0
  43. data/spec/fixtures/old-chef +4 -0
  44. data/spec/fixtures/old-chef2 +14 -0
  45. data/spec/hunk_spec.rb +37 -26
  46. data/spec/issues_spec.rb +115 -10
  47. data/spec/lcs_spec.rb +10 -10
  48. data/spec/ldiff_spec.rb +71 -31
  49. data/spec/patch_spec.rb +93 -99
  50. data/spec/sdiff_spec.rb +89 -89
  51. data/spec/spec_helper.rb +118 -65
  52. data/spec/traverse_balanced_spec.rb +173 -173
  53. data/spec/traverse_sequences_spec.rb +29 -31
  54. metadata +54 -33
  55. data/autotest/discover.rb +0 -1
data/spec/ldiff_spec.rb CHANGED
@@ -1,47 +1,87 @@
1
- # -*- ruby encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- describe "Diff::LCS.diff" do
6
- include Diff::LCS::SpecHelper::Matchers
5
+ RSpec.describe 'bin/ldiff' do
6
+ include CaptureSubprocessIO
7
7
 
8
- it 'correctly diffs seq1 to seq2' do
9
- diff_s1_s2 = Diff::LCS.diff(seq1, seq2)
10
- expect(change_diff(correct_forward_diff)).to eq(diff_s1_s2)
11
- end
8
+ fixtures = [
9
+ { :name => 'output.diff', :left => 'aX', :right => 'bXaX' },
10
+ { :name => 'output.diff.chef', :left => 'old-chef', :right => 'new-chef' },
11
+ { :name => 'output.diff.chef2', :left => 'old-chef2', :right => 'new-chef2' }
12
+ ].product([nil, '-e', '-f', '-c', '-u']).map { |(fixture, flag)|
13
+ fixture = fixture.dup
14
+ fixture[:flag] = flag
15
+ fixture
16
+ }
12
17
 
13
- it 'correctly diffs seq2 to seq1' do
14
- diff_s2_s1 = Diff::LCS.diff(seq2, seq1)
15
- expect(change_diff(correct_backward_diff)).to eq(diff_s2_s1)
16
- end
18
+ def self.test_ldiff(fixture)
19
+ desc = [
20
+ fixture[:flag],
21
+ "spec/fixtures/#{fixture[:left]}",
22
+ "spec/fixtures/#{fixture[:right]}",
23
+ '#',
24
+ '=>',
25
+ "spec/fixtures/ldiff/#{fixture[:name]}#{fixture[:flag]}"
26
+ ].join(' ')
17
27
 
18
- it 'correctly diffs against an empty sequence' do
19
- diff = Diff::LCS.diff(word_sequence, [])
20
- correct_diff = [
21
- [ [ '-', 0, 'abcd' ],
22
- [ '-', 1, 'efgh' ],
23
- [ '-', 2, 'ijkl' ],
24
- [ '-', 3, 'mnopqrstuvwxyz' ] ]
25
- ]
28
+ it desc do
29
+ expect(run_ldiff(fixture)).to eq(read_fixture(fixture))
30
+ end
31
+ end
26
32
 
27
- expect(change_diff(correct_diff)).to eq(diff)
33
+ fixtures.each do |fixture|
34
+ test_ldiff(fixture)
35
+ end
28
36
 
29
- diff = Diff::LCS.diff([], word_sequence)
30
- correct_diff.each { |hunk| hunk.each { |change| change[0] = '+' } }
31
- expect(change_diff(correct_diff)).to eq(diff)
37
+ def read_fixture(options)
38
+ fixture = options.fetch(:name)
39
+ flag = options.fetch(:flag)
40
+ name = "spec/fixtures/ldiff/#{fixture}#{flag}"
41
+ data = IO.__send__(IO.respond_to?(:binread) ? :binread : :read, name)
42
+ clean_data(data, flag)
32
43
  end
33
44
 
34
- it "correctly diffs 'xx' and 'xaxb'" do
35
- left = 'xx'
36
- right = 'xaxb'
37
- expect(Diff::LCS.patch(left, Diff::LCS.diff(left, right))).to eq(right)
45
+ def clean_data(data, flag)
46
+ data =
47
+ case flag
48
+ when '-c', '-u'
49
+ clean_output_timestamp(data)
50
+ else
51
+ data
52
+ end
53
+ data.gsub(/\r\n?/, "\n")
38
54
  end
39
55
 
40
- it "returns an empty diff with (hello, hello)" do
41
- expect(Diff::LCS.diff(hello, hello)).to eq([])
56
+ def clean_output_timestamp(data)
57
+ data.gsub(
58
+ %r{
59
+ ^
60
+ [-+*]{3}
61
+ \s*
62
+ spec/fixtures/(\S+)
63
+ \s*
64
+ \d{4}-\d\d-\d\d
65
+ \s*
66
+ \d\d:\d\d:\d\d(?:\.\d+)
67
+ \s*
68
+ (?:[-+]\d{4}|Z)
69
+ }x,
70
+ '*** spec/fixtures/\1 0000-00-00 :00 =>:00 =>00.000000000 -0000'
71
+ )
42
72
  end
43
73
 
44
- it "returns an empty diff with (hello_ary, hello_ary)" do
45
- expect(Diff::LCS.diff(hello_ary, hello_ary)).to eq([])
74
+ def run_ldiff(options)
75
+ flag = options.fetch(:flag)
76
+ left = options.fetch(:left)
77
+ right = options.fetch(:right)
78
+
79
+ stdout, stderr = capture_subprocess_io do
80
+ system("ruby -Ilib bin/ldiff #{flag} spec/fixtures/#{left} spec/fixtures/#{right}")
81
+ end
82
+
83
+ expect(stderr).to be_empty if RUBY_VERSION >= '1.9'
84
+ expect(stdout).not_to be_empty
85
+ clean_data(stdout, flag)
46
86
  end
47
87
  end
data/spec/patch_spec.rb CHANGED
@@ -1,54 +1,54 @@
1
- # -*- ruby encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- describe "Diff::LCS.patch" do
5
+ describe 'Diff::LCS.patch' do
6
6
  include Diff::LCS::SpecHelper::Matchers
7
7
 
8
- shared_examples "patch sequences correctly" do
9
- it "correctly patches left-to-right (patch autodiscovery)" do
8
+ shared_examples 'patch sequences correctly' do
9
+ it 'correctly patches left-to-right (patch autodiscovery)' do
10
10
  expect(Diff::LCS.patch(s1, patch_set)).to eq(s2)
11
11
  end
12
12
 
13
- it "correctly patches left-to-right (explicit patch)" do
13
+ it 'correctly patches left-to-right (explicit patch)' do
14
14
  expect(Diff::LCS.patch(s1, patch_set, :patch)).to eq(s2)
15
15
  expect(Diff::LCS.patch!(s1, patch_set)).to eq(s2)
16
16
  end
17
17
 
18
- it "correctly patches right-to-left (unpatch autodiscovery)" do
18
+ it 'correctly patches right-to-left (unpatch autodiscovery)' do
19
19
  expect(Diff::LCS.patch(s2, patch_set)).to eq(s1)
20
20
  end
21
21
 
22
- it "correctly patches right-to-left (explicit unpatch)" do
22
+ it 'correctly patches right-to-left (explicit unpatch)' do
23
23
  expect(Diff::LCS.patch(s2, patch_set, :unpatch)).to eq(s1)
24
24
  expect(Diff::LCS.unpatch!(s2, patch_set)).to eq(s1)
25
25
  end
26
26
  end
27
27
 
28
- describe "using a Diff::LCS.diff patchset" do
29
- describe "an empty patchset returns the source" do
30
- it "works on a string (hello)" do
28
+ describe 'using a Diff::LCS.diff patchset' do
29
+ describe 'an empty patchset returns the source' do
30
+ it 'works on a string (hello)' do
31
31
  diff = Diff::LCS.diff(hello, hello)
32
- expect(Diff::LCS::patch(hello, diff)).to eq(hello)
32
+ expect(Diff::LCS.patch(hello, diff)).to eq(hello)
33
33
  end
34
34
 
35
- it "works on an array %W(h e l l o)" do
35
+ it 'works on an array %W(h e l l o)' do
36
36
  diff = Diff::LCS.diff(hello_ary, hello_ary)
37
- expect(Diff::LCS::patch(hello_ary, diff)).to eq(hello_ary)
37
+ expect(Diff::LCS.patch(hello_ary, diff)).to eq(hello_ary)
38
38
  end
39
39
  end
40
40
 
41
- describe "with default diff callbacks (DiffCallbacks)" do
42
- describe "forward (s1 -> s2)" do
43
- it_has_behavior "patch sequences correctly" do
41
+ describe 'with default diff callbacks (DiffCallbacks)' do
42
+ describe 'forward (s1 -> s2)' do
43
+ it_has_behavior 'patch sequences correctly' do
44
44
  let(:s1) { seq1 }
45
45
  let(:s2) { seq2 }
46
46
  let(:patch_set) { Diff::LCS.diff(seq1, seq2) }
47
47
  end
48
48
  end
49
49
 
50
- describe "reverse (s2 -> s1)" do
51
- it_has_behavior "patch sequences correctly" do
50
+ describe 'reverse (s2 -> s1)' do
51
+ it_has_behavior 'patch sequences correctly' do
52
52
  let(:s1) { seq2 }
53
53
  let(:s2) { seq1 }
54
54
  let(:patch_set) { Diff::LCS.diff(seq2, seq1) }
@@ -56,9 +56,9 @@ describe "Diff::LCS.patch" do
56
56
  end
57
57
  end
58
58
 
59
- describe "with context diff callbacks (ContextDiffCallbacks)" do
60
- describe "forward (s1 -> s2)" do
61
- it_has_behavior "patch sequences correctly" do
59
+ describe 'with context diff callbacks (ContextDiffCallbacks)' do
60
+ describe 'forward (s1 -> s2)' do
61
+ it_has_behavior 'patch sequences correctly' do
62
62
  let(:s1) { seq1 }
63
63
  let(:s2) { seq2 }
64
64
  let(:patch_set) {
@@ -67,8 +67,8 @@ describe "Diff::LCS.patch" do
67
67
  end
68
68
  end
69
69
 
70
- describe "reverse (s2 -> s1)" do
71
- it_has_behavior "patch sequences correctly" do
70
+ describe 'reverse (s2 -> s1)' do
71
+ it_has_behavior 'patch sequences correctly' do
72
72
  let(:s1) { seq2 }
73
73
  let(:s2) { seq1 }
74
74
  let(:patch_set) {
@@ -78,9 +78,9 @@ describe "Diff::LCS.patch" do
78
78
  end
79
79
  end
80
80
 
81
- describe "with sdiff callbacks (SDiffCallbacks)" do
82
- describe "forward (s1 -> s2)" do
83
- it_has_behavior "patch sequences correctly" do
81
+ describe 'with sdiff callbacks (SDiffCallbacks)' do
82
+ describe 'forward (s1 -> s2)' do
83
+ it_has_behavior 'patch sequences correctly' do
84
84
  let(:s1) { seq1 }
85
85
  let(:s2) { seq2 }
86
86
  let(:patch_set) {
@@ -89,8 +89,8 @@ describe "Diff::LCS.patch" do
89
89
  end
90
90
  end
91
91
 
92
- describe "reverse (s2 -> s1)" do
93
- it_has_behavior "patch sequences correctly" do
92
+ describe 'reverse (s2 -> s1)' do
93
+ it_has_behavior 'patch sequences correctly' do
94
94
  let(:s1) { seq2 }
95
95
  let(:s2) { seq1 }
96
96
  let(:patch_set) {
@@ -101,20 +101,20 @@ describe "Diff::LCS.patch" do
101
101
  end
102
102
  end
103
103
 
104
- describe "using a Diff::LCS.sdiff patchset" do
105
- describe "an empty patchset returns the source" do
106
- it "works on a string (hello)" do
107
- expect(Diff::LCS::patch(hello, Diff::LCS.sdiff(hello, hello))).to eq(hello)
104
+ describe 'using a Diff::LCS.sdiff patchset' do
105
+ describe 'an empty patchset returns the source' do
106
+ it 'works on a string (hello)' do
107
+ expect(Diff::LCS.patch(hello, Diff::LCS.sdiff(hello, hello))).to eq(hello)
108
108
  end
109
109
 
110
- it "works on an array %W(h e l l o)" do
111
- expect(Diff::LCS::patch(hello_ary, Diff::LCS.sdiff(hello_ary, hello_ary))).to eq(hello_ary)
110
+ it 'works on an array %W(h e l l o)' do
111
+ expect(Diff::LCS.patch(hello_ary, Diff::LCS.sdiff(hello_ary, hello_ary))).to eq(hello_ary)
112
112
  end
113
113
  end
114
114
 
115
- describe "with default diff callbacks (DiffCallbacks)" do
116
- describe "forward (s1 -> s2)" do
117
- it_has_behavior "patch sequences correctly" do
115
+ describe 'with default diff callbacks (DiffCallbacks)' do
116
+ describe 'forward (s1 -> s2)' do
117
+ it_has_behavior 'patch sequences correctly' do
118
118
  let(:s1) { seq1 }
119
119
  let(:s2) { seq2 }
120
120
  let(:patch_set) {
@@ -123,8 +123,8 @@ describe "Diff::LCS.patch" do
123
123
  end
124
124
  end
125
125
 
126
- describe "reverse (s2 -> s1)" do
127
- it_has_behavior "patch sequences correctly" do
126
+ describe 'reverse (s2 -> s1)' do
127
+ it_has_behavior 'patch sequences correctly' do
128
128
  let(:s1) { seq2 }
129
129
  let(:s2) { seq1 }
130
130
  let(:patch_set) {
@@ -134,9 +134,9 @@ describe "Diff::LCS.patch" do
134
134
  end
135
135
  end
136
136
 
137
- describe "with context diff callbacks (DiffCallbacks)" do
138
- describe "forward (s1 -> s2)" do
139
- it_has_behavior "patch sequences correctly" do
137
+ describe 'with context diff callbacks (DiffCallbacks)' do
138
+ describe 'forward (s1 -> s2)' do
139
+ it_has_behavior 'patch sequences correctly' do
140
140
  let(:s1) { seq1 }
141
141
  let(:s2) { seq2 }
142
142
  let(:patch_set) {
@@ -145,8 +145,8 @@ describe "Diff::LCS.patch" do
145
145
  end
146
146
  end
147
147
 
148
- describe "reverse (s2 -> s1)" do
149
- it_has_behavior "patch sequences correctly" do
148
+ describe 'reverse (s2 -> s1)' do
149
+ it_has_behavior 'patch sequences correctly' do
150
150
  let(:s1) { seq2 }
151
151
  let(:s2) { seq1 }
152
152
  let(:patch_set) {
@@ -156,17 +156,17 @@ describe "Diff::LCS.patch" do
156
156
  end
157
157
  end
158
158
 
159
- describe "with sdiff callbacks (SDiffCallbacks)" do
160
- describe "forward (s1 -> s2)" do
161
- it_has_behavior "patch sequences correctly" do
159
+ describe 'with sdiff callbacks (SDiffCallbacks)' do
160
+ describe 'forward (s1 -> s2)' do
161
+ it_has_behavior 'patch sequences correctly' do
162
162
  let(:s1) { seq1 }
163
163
  let(:s2) { seq2 }
164
164
  let(:patch_set) { Diff::LCS.sdiff(seq1, seq2) }
165
165
  end
166
166
  end
167
167
 
168
- describe "reverse (s2 -> s1)" do
169
- it_has_behavior "patch sequences correctly" do
168
+ describe 'reverse (s2 -> s1)' do
169
+ it_has_behavior 'patch sequences correctly' do
170
170
  let(:s1) { seq2 }
171
171
  let(:s2) { seq1 }
172
172
  let(:patch_set) { Diff::LCS.sdiff(seq2, seq1) }
@@ -179,43 +179,43 @@ describe "Diff::LCS.patch" do
179
179
  # to s2 patches"), this cannot use the "patch sequences correctly" shared
180
180
  # set. Once the bug in autodiscovery is fixed, this can be converted as
181
181
  # above.
182
- describe "fix bug 891: patchsets do not contain the last equal part" do
182
+ describe 'fix bug 891: patchsets do not contain the last equal part' do
183
183
  before :each do
184
- @s1 = %w(a b c d e f g h i j k)
184
+ @s1 = %w(a b c d e f g h i j k) # rubocop:disable Layout/SpaceInsideArrayPercentLiteral
185
185
  @s2 = %w(a b c d D e f g h i j k)
186
186
  end
187
187
 
188
- describe "using Diff::LCS.diff with default diff callbacks" do
188
+ describe 'using Diff::LCS.diff with default diff callbacks' do
189
189
  before :each do
190
190
  @patch_set_s1_s2 = Diff::LCS.diff(@s1, @s2)
191
191
  @patch_set_s2_s1 = Diff::LCS.diff(@s2, @s1)
192
192
  end
193
193
 
194
- it "autodiscovers s1 to s2 patches" do
194
+ it 'autodiscovers s1 to s2 patches' do
195
195
  expect do
196
196
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
197
197
  end.to_not raise_error
198
198
  end
199
199
 
200
- it "autodiscovers s2 to s1 patches" do
200
+ it 'autodiscovers s2 to s1 patches' do
201
201
  expect do
202
202
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
203
203
  end.to_not raise_error
204
204
  end
205
205
 
206
- it "autodiscovers s2 to s1 the left-to-right patches" do
206
+ it 'autodiscovers s2 to s1 the left-to-right patches' do
207
207
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
208
208
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
209
209
  end
210
210
 
211
- it "correctly patches left-to-right (explicit patch)" do
211
+ it 'correctly patches left-to-right (explicit patch)' do
212
212
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
213
213
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
214
214
  expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
215
215
  expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
216
216
  end
217
217
 
218
- it "correctly patches right-to-left (explicit unpatch)" do
218
+ it 'correctly patches right-to-left (explicit unpatch)' do
219
219
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
220
220
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
221
221
  expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)
@@ -223,39 +223,37 @@ describe "Diff::LCS.patch" do
223
223
  end
224
224
  end
225
225
 
226
- describe "using Diff::LCS.diff with context diff callbacks" do
226
+ describe 'using Diff::LCS.diff with context diff callbacks' do
227
227
  before :each do
228
- @patch_set_s1_s2 = Diff::LCS.diff(@s1, @s2,
229
- Diff::LCS::ContextDiffCallbacks)
230
- @patch_set_s2_s1 = Diff::LCS.diff(@s2, @s1,
231
- Diff::LCS::ContextDiffCallbacks)
228
+ @patch_set_s1_s2 = Diff::LCS.diff(@s1, @s2, Diff::LCS::ContextDiffCallbacks)
229
+ @patch_set_s2_s1 = Diff::LCS.diff(@s2, @s1, Diff::LCS::ContextDiffCallbacks)
232
230
  end
233
231
 
234
- it "autodiscovers s1 to s2 patches" do
232
+ it 'autodiscovers s1 to s2 patches' do
235
233
  expect do
236
234
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
237
235
  end.to_not raise_error
238
236
  end
239
237
 
240
- it "autodiscovers s2 to s1 patches" do
238
+ it 'autodiscovers s2 to s1 patches' do
241
239
  expect do
242
240
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
243
241
  end.to_not raise_error
244
242
  end
245
243
 
246
- it "autodiscovers s2 to s1 the left-to-right patches" do
244
+ it 'autodiscovers s2 to s1 the left-to-right patches' do
247
245
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
248
246
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
249
247
  end
250
248
 
251
- it "correctly patches left-to-right (explicit patch)" do
249
+ it 'correctly patches left-to-right (explicit patch)' do
252
250
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
253
251
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
254
252
  expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
255
253
  expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
256
254
  end
257
255
 
258
- it "correctly patches right-to-left (explicit unpatch)" do
256
+ it 'correctly patches right-to-left (explicit unpatch)' do
259
257
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
260
258
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
261
259
  expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)
@@ -263,39 +261,37 @@ describe "Diff::LCS.patch" do
263
261
  end
264
262
  end
265
263
 
266
- describe "using Diff::LCS.diff with sdiff callbacks" do
264
+ describe 'using Diff::LCS.diff with sdiff callbacks' do
267
265
  before(:each) do
268
- @patch_set_s1_s2 = Diff::LCS.diff(@s1, @s2,
269
- Diff::LCS::SDiffCallbacks)
270
- @patch_set_s2_s1 = Diff::LCS.diff(@s2, @s1,
271
- Diff::LCS::SDiffCallbacks)
266
+ @patch_set_s1_s2 = Diff::LCS.diff(@s1, @s2, Diff::LCS::SDiffCallbacks)
267
+ @patch_set_s2_s1 = Diff::LCS.diff(@s2, @s1, Diff::LCS::SDiffCallbacks)
272
268
  end
273
269
 
274
- it "autodiscovers s1 to s2 patches" do
270
+ it 'autodiscovers s1 to s2 patches' do
275
271
  expect do
276
272
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
277
273
  end.to_not raise_error
278
274
  end
279
275
 
280
- it "autodiscovers s2 to s1 patches" do
276
+ it 'autodiscovers s2 to s1 patches' do
281
277
  expect do
282
278
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
283
279
  end.to_not raise_error
284
280
  end
285
281
 
286
- it "autodiscovers s2 to s1 the left-to-right patches" do
282
+ it 'autodiscovers s2 to s1 the left-to-right patches' do
287
283
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
288
284
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
289
285
  end
290
286
 
291
- it "correctly patches left-to-right (explicit patch)" do
287
+ it 'correctly patches left-to-right (explicit patch)' do
292
288
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
293
289
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
294
290
  expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
295
291
  expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
296
292
  end
297
293
 
298
- it "correctly patches right-to-left (explicit unpatch)" do
294
+ it 'correctly patches right-to-left (explicit unpatch)' do
299
295
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
300
296
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
301
297
  expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)
@@ -303,37 +299,37 @@ describe "Diff::LCS.patch" do
303
299
  end
304
300
  end
305
301
 
306
- describe "using Diff::LCS.sdiff with default sdiff callbacks" do
302
+ describe 'using Diff::LCS.sdiff with default sdiff callbacks' do
307
303
  before(:each) do
308
304
  @patch_set_s1_s2 = Diff::LCS.sdiff(@s1, @s2)
309
305
  @patch_set_s2_s1 = Diff::LCS.sdiff(@s2, @s1)
310
306
  end
311
307
 
312
- it "autodiscovers s1 to s2 patches" do
308
+ it 'autodiscovers s1 to s2 patches' do
313
309
  expect do
314
310
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
315
311
  end.to_not raise_error
316
312
  end
317
313
 
318
- it "autodiscovers s2 to s1 patches" do
314
+ it 'autodiscovers s2 to s1 patches' do
319
315
  expect do
320
316
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
321
317
  end.to_not raise_error
322
318
  end
323
319
 
324
- it "autodiscovers s2 to s1 the left-to-right patches" do
320
+ it 'autodiscovers s2 to s1 the left-to-right patches' do
325
321
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
326
322
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
327
323
  end
328
324
 
329
- it "correctly patches left-to-right (explicit patch)" do
325
+ it 'correctly patches left-to-right (explicit patch)' do
330
326
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
331
327
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
332
328
  expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
333
329
  expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
334
330
  end
335
331
 
336
- it "correctly patches right-to-left (explicit unpatch)" do
332
+ it 'correctly patches right-to-left (explicit unpatch)' do
337
333
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
338
334
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
339
335
  expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)
@@ -341,39 +337,37 @@ describe "Diff::LCS.patch" do
341
337
  end
342
338
  end
343
339
 
344
- describe "using Diff::LCS.sdiff with context diff callbacks" do
340
+ describe 'using Diff::LCS.sdiff with context diff callbacks' do
345
341
  before(:each) do
346
- @patch_set_s1_s2 = Diff::LCS.sdiff(@s1, @s2,
347
- Diff::LCS::ContextDiffCallbacks)
348
- @patch_set_s2_s1 = Diff::LCS.sdiff(@s2, @s1,
349
- Diff::LCS::ContextDiffCallbacks)
342
+ @patch_set_s1_s2 = Diff::LCS.sdiff(@s1, @s2, Diff::LCS::ContextDiffCallbacks)
343
+ @patch_set_s2_s1 = Diff::LCS.sdiff(@s2, @s1, Diff::LCS::ContextDiffCallbacks)
350
344
  end
351
345
 
352
- it "autodiscovers s1 to s2 patches" do
346
+ it 'autodiscovers s1 to s2 patches' do
353
347
  expect do
354
348
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
355
349
  end.to_not raise_error
356
350
  end
357
351
 
358
- it "autodiscovers s2 to s1 patches" do
352
+ it 'autodiscovers s2 to s1 patches' do
359
353
  expect do
360
354
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
361
355
  end.to_not raise_error
362
356
  end
363
357
 
364
- it "autodiscovers s2 to s1 the left-to-right patches" do
358
+ it 'autodiscovers s2 to s1 the left-to-right patches' do
365
359
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
366
360
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
367
361
  end
368
362
 
369
- it "correctly patches left-to-right (explicit patch)" do
363
+ it 'correctly patches left-to-right (explicit patch)' do
370
364
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
371
365
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
372
366
  expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
373
367
  expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
374
368
  end
375
369
 
376
- it "correctly patches right-to-left (explicit unpatch)" do
370
+ it 'correctly patches right-to-left (explicit unpatch)' do
377
371
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
378
372
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
379
373
  expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)
@@ -381,37 +375,37 @@ describe "Diff::LCS.patch" do
381
375
  end
382
376
  end
383
377
 
384
- describe "using Diff::LCS.sdiff with default diff callbacks" do
378
+ describe 'using Diff::LCS.sdiff with default diff callbacks' do
385
379
  before(:each) do
386
380
  @patch_set_s1_s2 = Diff::LCS.sdiff(@s1, @s2, Diff::LCS::DiffCallbacks)
387
381
  @patch_set_s2_s1 = Diff::LCS.sdiff(@s2, @s1, Diff::LCS::DiffCallbacks)
388
382
  end
389
383
 
390
- it "autodiscovers s1 to s2 patches" do
384
+ it 'autodiscovers s1 to s2 patches' do
391
385
  expect do
392
386
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
393
387
  end.to_not raise_error
394
388
  end
395
389
 
396
- it "autodiscovers s2 to s1 patches" do
390
+ it 'autodiscovers s2 to s1 patches' do
397
391
  expect do
398
392
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
399
393
  end.to_not raise_error
400
394
  end
401
395
 
402
- it "autodiscovers s2 to s1 the left-to-right patches" do
396
+ it 'autodiscovers s2 to s1 the left-to-right patches' do
403
397
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
404
398
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
405
399
  end
406
400
 
407
- it "correctly patches left-to-right (explicit patch)" do
401
+ it 'correctly patches left-to-right (explicit patch)' do
408
402
  expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
409
403
  expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
410
404
  expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
411
405
  expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
412
406
  end
413
407
 
414
- it "correctly patches right-to-left (explicit unpatch)" do
408
+ it 'correctly patches right-to-left (explicit unpatch)' do
415
409
  expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
416
410
  expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
417
411
  expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)