@@ -309,73 +309,146 @@ def format(value)
309
309
end
310
310
311
311
module Matchers
312
- class ExpectedsForMultipleDiffs
313
- SuperDiff . insert_singleton_overrides ( self ) do
314
- # Add a key for different sides
315
- def from ( expected )
316
- return expected if self === expected
317
-
318
- text = colorizer . wrap ( "Diff:" , SuperDiff . configuration . header_color )
319
-
320
- if SuperDiff . configuration . key_enabled?
321
- text +=
322
- "\n \n " +
323
- colorizer . wrap (
324
- "┌ (Key) ──────────────────────────┐" ,
325
- SuperDiff . configuration . border_color
326
- ) + "\n " +
327
- colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
328
- colorizer . wrap (
329
- "‹-› in expected, not in actual" ,
330
- SuperDiff . configuration . expected_color
331
- ) +
332
- colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
333
- "\n " +
334
- colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
335
- colorizer . wrap (
336
- "‹+› in actual, not in expected" ,
337
- SuperDiff . configuration . actual_color
338
- ) +
339
- colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
340
- "\n " +
341
- colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
342
- "‹ › in both expected and actual" +
343
- colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
344
- "\n " +
345
- colorizer . wrap (
346
- "└─────────────────────────────────┘" ,
347
- SuperDiff . configuration . border_color
348
- )
312
+ if SuperDiff ::RSpec . rspec_version < "3.13.0"
313
+ class ExpectedsForMultipleDiffs
314
+ SuperDiff . insert_singleton_overrides ( self ) do
315
+ # Add a key for different sides
316
+ def from ( expected )
317
+ return expected if self === expected
318
+
319
+ text = colorizer . wrap ( "Diff:" , SuperDiff . configuration . header_color )
320
+
321
+ if SuperDiff . configuration . key_enabled?
322
+ text +=
323
+ "\n \n " +
324
+ colorizer . wrap (
325
+ "┌ (Key) ──────────────────────────┐" ,
326
+ SuperDiff . configuration . border_color
327
+ ) + "\n " +
328
+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
329
+ colorizer . wrap (
330
+ "‹-› in expected, not in actual" ,
331
+ SuperDiff . configuration . expected_color
332
+ ) +
333
+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
334
+ "\n " +
335
+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
336
+ colorizer . wrap (
337
+ "‹+› in actual, not in expected" ,
338
+ SuperDiff . configuration . actual_color
339
+ ) +
340
+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
341
+ "\n " +
342
+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
343
+ "‹ › in both expected and actual" +
344
+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
345
+ "\n " +
346
+ colorizer . wrap (
347
+ "└─────────────────────────────────┘" ,
348
+ SuperDiff . configuration . border_color
349
+ )
350
+ end
351
+
352
+ new ( [ [ expected , text ] ] )
349
353
end
350
354
351
- new ( [ [ expected , text ] ] )
355
+ def colorizer
356
+ RSpec ::Core ::Formatters ::ConsoleCodes
357
+ end
352
358
end
353
359
354
- def colorizer
355
- RSpec ::Core ::Formatters ::ConsoleCodes
360
+ SuperDiff . insert_overrides ( self ) do
361
+ # Add an extra line break
362
+ def message_with_diff ( message , differ , actual )
363
+ diff = diffs ( differ , actual )
364
+
365
+ diff . empty? ? message : "#{ message . rstrip } \n \n #{ diff } "
366
+ end
367
+
368
+ private
369
+
370
+ # Add extra line breaks in between diffs, and colorize the word "Diff"
371
+ def diffs ( differ , actual )
372
+ @expected_list
373
+ . map do |( expected , diff_label ) |
374
+ diff = differ . diff ( actual , expected )
375
+ next if diff . strip . empty?
376
+ diff_label + diff
377
+ end
378
+ . compact
379
+ . join ( "\n \n " )
380
+ end
356
381
end
357
382
end
383
+ else
384
+ class MultiMatcherDiff
385
+ SuperDiff . insert_singleton_overrides ( self ) do
386
+ # Add a key for different sides
387
+ def from ( expected , actual )
388
+ return expected if self === expected
389
+
390
+ text = colorizer . wrap ( "Diff:" , SuperDiff . configuration . header_color )
391
+
392
+ if SuperDiff . configuration . key_enabled?
393
+ text +=
394
+ "\n \n " +
395
+ colorizer . wrap (
396
+ "┌ (Key) ──────────────────────────┐" ,
397
+ SuperDiff . configuration . border_color
398
+ ) + "\n " +
399
+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
400
+ colorizer . wrap (
401
+ "‹-› in expected, not in actual" ,
402
+ SuperDiff . configuration . expected_color
403
+ ) +
404
+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
405
+ "\n " +
406
+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
407
+ colorizer . wrap (
408
+ "‹+› in actual, not in expected" ,
409
+ SuperDiff . configuration . actual_color
410
+ ) +
411
+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
412
+ "\n " +
413
+ colorizer . wrap ( "│ " , SuperDiff . configuration . border_color ) +
414
+ "‹ › in both expected and actual" +
415
+ colorizer . wrap ( " │" , SuperDiff . configuration . border_color ) +
416
+ "\n " +
417
+ colorizer . wrap (
418
+ "└─────────────────────────────────┘" ,
419
+ SuperDiff . configuration . border_color
420
+ )
421
+ end
358
422
359
- SuperDiff . insert_overrides ( self ) do
360
- # Add an extra line break
361
- def message_with_diff ( message , differ , actual )
362
- diff = diffs ( differ , actual )
423
+ new ( [ [ expected , text , actual ] ] )
424
+ end
363
425
364
- diff . empty? ? message : "#{ message . rstrip } \n \n #{ diff } "
426
+ def colorizer
427
+ RSpec ::Core ::Formatters ::ConsoleCodes
428
+ end
365
429
end
366
430
367
- private
431
+ SuperDiff . insert_overrides ( self ) do
432
+ # Add an extra line break
433
+ def message_with_diff ( message , differ )
434
+ diff = diffs ( differ )
435
+
436
+ diff . empty? ? message : "#{ message . rstrip } \n \n #{ diff } "
437
+ end
368
438
369
- # Add extra line breaks in between diffs, and colorize the word "Diff"
370
- def diffs ( differ , actual )
371
- @expected_list
372
- . map do |( expected , diff_label ) |
373
- diff = differ . diff ( actual , expected )
374
- next if diff . strip . empty?
375
- diff_label + diff
376
- end
377
- . compact
378
- . join ( "\n \n " )
439
+ private
440
+
441
+ # Add extra line breaks in between diffs, and colorize the word "Diff"
442
+ def diffs ( differ )
443
+ @expected_list
444
+ . map do |( expected , diff_label , actual ) |
445
+ diff = differ . diff ( actual , expected )
446
+ next if diff . strip . empty?
447
+ diff_label + diff
448
+ end
449
+ . compact
450
+ . join ( "\n \n " )
451
+ end
379
452
end
380
453
end
381
454
end
0 commit comments