Skip to content

Commit 9e7700c

Browse files
committed
Update monkey patches for 3.13.0
Specifically, ExpectedsForMultipleDiffs was renamed and refactored slightly.
1 parent 4c2c43d commit 9e7700c

File tree

1 file changed

+129
-56
lines changed

1 file changed

+129
-56
lines changed

lib/super_diff/rspec/monkey_patches.rb

Lines changed: 129 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -309,73 +309,146 @@ def format(value)
309309
end
310310

311311
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]])
349353
end
350354

351-
new([[expected, text]])
355+
def colorizer
356+
RSpec::Core::Formatters::ConsoleCodes
357+
end
352358
end
353359

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
356381
end
357382
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
358422

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
363425

364-
diff.empty? ? message : "#{message.rstrip}\n\n#{diff}"
426+
def colorizer
427+
RSpec::Core::Formatters::ConsoleCodes
428+
end
365429
end
366430

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
368438

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
379452
end
380453
end
381454
end

0 commit comments

Comments
 (0)