2
2
require 'timeout'
3
3
require 'rspec/support/spec/string_matcher'
4
4
5
- RSpec ::Support . require_rspec_support "spec/diff_helpers"
6
-
7
5
module RSpec
8
6
module Support
9
7
RSpec . describe Differ do
10
- include Spec ::DiffHelpers
11
-
12
8
describe '#diff' do
13
9
let ( :differ ) { RSpec ::Support ::Differ . new }
14
10
15
11
it "outputs unified diff of two strings" do
16
12
expected = "foo\n zap\n bar\n this\n is\n soo\n very\n very\n equal\n insert\n a\n another\n line\n "
17
13
actual = "foo\n bar\n zap\n this\n is\n soo\n very\n very\n equal\n insert\n a\n line\n "
18
14
19
- if Diff ::LCS ::VERSION . to_f < 1.4 || Diff ::LCS ::VERSION >= "1.4.4"
20
- expected_diff = dedent ( <<-'EOD' )
21
- |
22
- |
23
- |@@ -1,6 +1,6 @@
24
- | foo
25
- |-zap
26
- | bar
27
- |+zap
28
- | this
29
- | is
30
- | soo
31
- |@@ -9,6 +9,5 @@
32
- | equal
33
- | insert
34
- | a
35
- |-another
36
- | line
37
- |
38
- EOD
39
- else
40
- expected_diff = dedent ( <<-'EOD' )
41
- |
42
- |
43
- |@@ -1,4 +1,6 @@
44
- | foo
45
- |-zap
46
- | bar
47
- |+zap
48
- | this
49
- |@@ -9,6 +11,7 @@
50
- | equal
51
- | insert
52
- | a
53
- |-another
54
- | line
55
- |
56
- EOD
57
- end
58
-
15
+ expected_diff = dedent ( <<-'EOD' )
16
+ |
17
+ |
18
+ |@@ -1,6 +1,6 @@
19
+ | foo
20
+ |-zap
21
+ | bar
22
+ |+zap
23
+ | this
24
+ | is
25
+ | soo
26
+ |@@ -9,6 +9,5 @@
27
+ | equal
28
+ | insert
29
+ | a
30
+ |-another
31
+ | line
32
+ |
33
+ EOD
59
34
60
35
diff = differ . diff ( actual , expected )
61
36
expect ( diff ) . to be_diffed_as ( expected_diff )
@@ -65,45 +40,25 @@ module Support
65
40
expected = "foo\n zap\n bar\n this\n is\n soo\n very\n very\n equal\n insert\n a\n another\n line\n "
66
41
actual = "foo\n bar\n zap\n this\n is\n soo\n very\n very\n equal\n insert\n a\n line\n "
67
42
68
- if Diff ::LCS ::VERSION . to_f < 1.4 || Diff ::LCS ::VERSION >= "1.4.4"
69
- expected_diff = dedent ( <<-'EOS' )
70
- |
71
- |
72
- |@@ -1,6 +1,6 @@
73
- | foo
74
- |-zap
75
- | bar
76
- |+zap
77
- | this
78
- | is
79
- | soo
80
- |@@ -9,6 +9,5 @@
81
- | equal
82
- | insert
83
- | a
84
- |-another
85
- | line
86
- |
87
- EOS
88
- else
89
- expected_diff = dedent ( <<-'EOS' )
90
- |
91
- |
92
- |@@ -1,4 +1,6 @@
93
- | foo
94
- |-zap
95
- | bar
96
- |+zap
97
- | this
98
- |@@ -9,6 +11,7 @@
99
- | equal
100
- | insert
101
- | a
102
- |-another
103
- | line
104
- |
105
- EOS
106
- end
43
+ expected_diff = dedent ( <<-'EOS' )
44
+ |
45
+ |
46
+ |@@ -1,6 +1,6 @@
47
+ | foo
48
+ |-zap
49
+ | bar
50
+ |+zap
51
+ | this
52
+ | is
53
+ | soo
54
+ |@@ -9,6 +9,5 @@
55
+ | equal
56
+ | insert
57
+ | a
58
+ |-another
59
+ | line
60
+ |
61
+ EOS
107
62
108
63
diff = differ . diff ( actual , expected )
109
64
expect ( diff ) . to be_diffed_as ( expected_diff )
@@ -135,7 +90,7 @@ def differ_ivars
135
90
actual = "Tu avec carté {count} itém has\n " . encode ( 'UTF-16LE' )
136
91
expected_diff = dedent ( <<-EOD ) . encode ( 'UTF-16LE' )
137
92
|
138
- |@@ #{ one_line_header } @@
93
+ |@@ -1 +1 @@
139
94
|-Tu avec carte {count} item has
140
95
|+Tu avec carté {count} itém has
141
96
|
@@ -148,15 +103,15 @@ def differ_ivars
148
103
it 'handles differently encoded strings that are compatible' do
149
104
expected = "abc\n " . encode ( 'us-ascii' )
150
105
actual = "강인철\n " . encode ( 'UTF-8' )
151
- expected_diff = "\n @@ #{ one_line_header } @@\n -abc\n +강인철\n "
106
+ expected_diff = "\n @@ -1 +1 @@\n -abc\n +강인철\n "
152
107
diff = differ . diff ( actual , expected )
153
108
expect ( diff ) . to be_diffed_as ( expected_diff )
154
109
end
155
110
156
111
it 'uses the default external encoding when the two strings have incompatible encodings' do
157
112
expected = "Tu avec carte {count} item has\n "
158
113
actual = "Tu avec carté {count} itém has\n " . encode ( 'UTF-16LE' )
159
- expected_diff = "\n @@ #{ one_line_header } @@\n -Tu avec carte {count} item has\n +Tu avec carté {count} itém has\n "
114
+ expected_diff = "\n @@ -1 +1 @@\n -Tu avec carte {count} item has\n +Tu avec carté {count} itém has\n "
160
115
161
116
diff = differ . diff ( actual , expected )
162
117
expect ( diff ) . to be_diffed_as ( expected_diff )
@@ -247,7 +202,7 @@ def inspect; "<BrokenObject>"; end
247
202
248
203
expected_diff = dedent ( <<-EOD )
249
204
|
250
- |@@ #{ one_line_header } @@
205
+ |@@ -1 +1 @@
251
206
|-[]
252
207
|+[<BrokenObject>]
253
208
|
@@ -259,7 +214,7 @@ def inspect; "<BrokenObject>"; end
259
214
diff = differ . diff ( [ "a\r \n b" ] , [ "a\r \n c" ] )
260
215
expected_diff = dedent ( <<-EOD )
261
216
|
262
- |@@ #{ one_line_header } @@
217
+ |@@ -1 +1 @@
263
218
|-a\\ r\\ nc
264
219
|+a\\ r\\ nb
265
220
|
@@ -310,7 +265,7 @@ def inspect; "<BrokenObject>"; end
310
265
it 'outputs unified diff message of two hashes with differing encoding' do
311
266
expected_diff = dedent ( <<-"EOD" )
312
267
|
313
- |@@ #{ one_line_header } @@
268
+ |@@ -1 +1 @@
314
269
|-"a" => "a",
315
270
|+"ö" => "ö",
316
271
|
@@ -323,7 +278,7 @@ def inspect; "<BrokenObject>"; end
323
278
it 'outputs unified diff message of two hashes with encoding different to key encoding' do
324
279
expected_diff = dedent ( <<-"EOD" )
325
280
|
326
- |@@ #{ one_line_header } @@
281
+ |@@ -1 +1 @@
327
282
|-:a => "a",
328
283
|+\" 한글\" => \" 한글2\" ,
329
284
|
@@ -336,7 +291,7 @@ def inspect; "<BrokenObject>"; end
336
291
it "outputs unified diff message of two hashes with object keys" do
337
292
expected_diff = dedent ( <<-"EOD" )
338
293
|
339
- |@@ #{ one_line_header } @@
294
+ |@@ -1 +1 @@
340
295
|-["a", "c"] => "b",
341
296
|+["d", "c"] => "b",
342
297
|
@@ -353,7 +308,7 @@ def inspect; "<BrokenObject>"; end
353
308
it "outputs unified diff message of two hashes with Time object keys" do
354
309
expected_diff = dedent ( <<-"EOD" )
355
310
|
356
- |@@ #{ one_line_header } @@
311
+ |@@ -1 +1 @@
357
312
|-#{ formatted_time } => "b",
358
313
|+#{ formatted_time } => "c",
359
314
|
@@ -366,7 +321,7 @@ def inspect; "<BrokenObject>"; end
366
321
it "outputs unified diff message of two hashes with hashes inside them" do
367
322
expected_diff = dedent ( <<-"EOD" )
368
323
|
369
- |@@ #{ one_line_header } @@
324
+ |@@ -1 +1 @@
370
325
|-"b" => {"key_1"=>#{ formatted_time } },
371
326
|+"c" => {"key_1"=>#{ formatted_time } },
372
327
|
@@ -386,7 +341,7 @@ def inspect; "<BrokenObject>"; end
386
341
it "outputs unified diff message of two arrays with Time object keys" do
387
342
expected_diff = dedent ( <<-"EOD" )
388
343
|
389
- |@@ #{ one_line_header } @@
344
+ |@@ -1 +1 @@
390
345
|-[#{ formatted_time } , "b"]
391
346
|+[#{ formatted_time } , "c"]
392
347
|
@@ -399,7 +354,7 @@ def inspect; "<BrokenObject>"; end
399
354
it "outputs unified diff message of two arrays with hashes inside them" do
400
355
expected_diff = dedent ( <<-"EOD" )
401
356
|
402
- |@@ #{ one_line_header } @@
357
+ |@@ -1 +1 @@
403
358
|-[{"b"=>#{ formatted_time } }, "c"]
404
359
|+[{"a"=>#{ formatted_time } }, "c"]
405
360
|
@@ -432,7 +387,7 @@ def inspect; "<BrokenObject>"; end
432
387
it "splits items with newlines" do
433
388
expected_diff = dedent ( <<-"EOD" )
434
389
|
435
- |@@ #{ removing_two_line_header } @@
390
+ |@@ -1,3 +1 @@
436
391
|-a\\ nb
437
392
|-c\\ nd
438
393
|
@@ -445,7 +400,7 @@ def inspect; "<BrokenObject>"; end
445
400
it "shows inner arrays on a single line" do
446
401
expected_diff = dedent ( <<-"EOD" )
447
402
|
448
- |@@ #{ removing_two_line_header } @@
403
+ |@@ -1,3 +1 @@
449
404
|-a\\ nb
450
405
|-["c\\ nd"]
451
406
|
@@ -498,7 +453,7 @@ def inspect; "<BrokenObject>"; end
498
453
499
454
expected_diff = dedent ( <<-EOS )
500
455
|
501
- |@@ #{ one_line_header } @@
456
+ |@@ -1 +1 @@
502
457
|-[#<SimpleDelegator(#{ object . inspect } )>]
503
458
|+[#{ object . inspect } ]
504
459
|
@@ -520,7 +475,7 @@ def inspect; "<BrokenObject>"; end
520
475
521
476
expected_diff = dedent ( <<-EOS )
522
477
|
523
- |@@ #{ one_line_header } @@
478
+ |@@ -1 +1 @@
524
479
|-"oop"
525
480
|+"oof"
526
481
|
@@ -537,7 +492,7 @@ def inspect; "<BrokenObject>"; end
537
492
it "outputs colored diffs" do
538
493
expected = "foo bar baz\n "
539
494
actual = "foo bang baz\n "
540
- expected_diff = "\e [0m\n \e [0m\e [34m@@ #{ one_line_header } @@\n \e [0m\e [31m-foo bang baz\n \e [0m\e [32m+foo bar baz\n \e [0m"
495
+ expected_diff = "\e [0m\n \e [0m\e [34m@@ -1 +1 @@\n \e [0m\e [31m-foo bang baz\n \e [0m\e [32m+foo bar baz\n \e [0m"
541
496
542
497
diff = differ . diff ( expected , actual )
543
498
expect ( diff ) . to be_diffed_as ( expected_diff )
0 commit comments