super_diff 0.9.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (212) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +65 -26
  3. data/lib/super_diff/active_record/differs/active_record_relation.rb +1 -2
  4. data/lib/super_diff/active_record/differs.rb +1 -1
  5. data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_model.rb +22 -18
  6. data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_relation.rb +14 -7
  7. data/lib/super_diff/active_record/object_inspection/inspection_tree_builders.rb +2 -2
  8. data/lib/super_diff/active_record/object_inspection.rb +1 -1
  9. data/lib/super_diff/active_record/operation_tree_builders/active_record_model.rb +1 -2
  10. data/lib/super_diff/active_record/operation_tree_builders/active_record_relation.rb +1 -2
  11. data/lib/super_diff/active_record/operation_tree_builders.rb +2 -2
  12. data/lib/super_diff/active_record/operation_tree_flatteners.rb +1 -1
  13. data/lib/super_diff/active_record/operation_trees.rb +1 -1
  14. data/lib/super_diff/active_record.rb +7 -15
  15. data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +5 -6
  16. data/lib/super_diff/active_support/differs.rb +1 -1
  17. data/lib/super_diff/active_support/object_inspection/inspection_tree_builders/hash_with_indifferent_access.rb +20 -11
  18. data/lib/super_diff/active_support/object_inspection/inspection_tree_builders/ordered_options.rb +46 -0
  19. data/lib/super_diff/active_support/object_inspection/inspection_tree_builders.rb +5 -1
  20. data/lib/super_diff/active_support/object_inspection.rb +1 -1
  21. data/lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb +5 -6
  22. data/lib/super_diff/active_support/operation_tree_builders.rb +1 -1
  23. data/lib/super_diff/active_support/operation_tree_flatteners.rb +1 -1
  24. data/lib/super_diff/active_support/operation_trees.rb +1 -1
  25. data/lib/super_diff/active_support.rb +6 -10
  26. data/lib/super_diff/colorized_document_extensions.rb +2 -4
  27. data/lib/super_diff/configuration.rb +14 -8
  28. data/lib/super_diff/csi/color.rb +4 -4
  29. data/lib/super_diff/csi/colorized_document.rb +12 -16
  30. data/lib/super_diff/csi/document.rb +8 -19
  31. data/lib/super_diff/csi/eight_bit_color.rb +19 -19
  32. data/lib/super_diff/csi/four_bit_color.rb +82 -31
  33. data/lib/super_diff/csi/twenty_four_bit_color.rb +12 -11
  34. data/lib/super_diff/csi/uncolorized_document.rb +2 -6
  35. data/lib/super_diff/csi.rb +10 -14
  36. data/lib/super_diff/diff_formatters/collection.rb +35 -41
  37. data/lib/super_diff/differs/date_like.rb +15 -0
  38. data/lib/super_diff/differs/default_object.rb +1 -1
  39. data/lib/super_diff/differs/defaults.rb +2 -1
  40. data/lib/super_diff/differs/main.rb +2 -13
  41. data/lib/super_diff/differs.rb +1 -0
  42. data/lib/super_diff/equality_matchers/array.rb +10 -12
  43. data/lib/super_diff/equality_matchers/base.rb +1 -1
  44. data/lib/super_diff/equality_matchers/default.rb +2 -4
  45. data/lib/super_diff/equality_matchers/defaults.rb +1 -1
  46. data/lib/super_diff/equality_matchers/hash.rb +10 -12
  47. data/lib/super_diff/equality_matchers/multiline_string.rb +11 -13
  48. data/lib/super_diff/equality_matchers/primitive.rb +10 -12
  49. data/lib/super_diff/equality_matchers/singleline_string.rb +10 -12
  50. data/lib/super_diff/equality_matchers.rb +1 -1
  51. data/lib/super_diff/errors.rb +2 -6
  52. data/lib/super_diff/gem_version.rb +3 -3
  53. data/lib/super_diff/helpers.rb +10 -10
  54. data/lib/super_diff/implementation_checks.rb +2 -2
  55. data/lib/super_diff/line.rb +3 -3
  56. data/lib/super_diff/object_inspection/inspection_tree.rb +64 -73
  57. data/lib/super_diff/object_inspection/inspection_tree_builders/array.rb +29 -14
  58. data/lib/super_diff/object_inspection/inspection_tree_builders/custom_object.rb +17 -13
  59. data/lib/super_diff/object_inspection/inspection_tree_builders/date_like.rb +51 -0
  60. data/lib/super_diff/object_inspection/inspection_tree_builders/default_object.rb +43 -27
  61. data/lib/super_diff/object_inspection/inspection_tree_builders/defaults.rb +2 -1
  62. data/lib/super_diff/object_inspection/inspection_tree_builders/hash.rb +35 -18
  63. data/lib/super_diff/object_inspection/inspection_tree_builders/primitive.rb +3 -5
  64. data/lib/super_diff/object_inspection/inspection_tree_builders/time_like.rb +30 -36
  65. data/lib/super_diff/object_inspection/inspection_tree_builders.rb +13 -9
  66. data/lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb +11 -22
  67. data/lib/super_diff/object_inspection/nodes/as_prefix_when_rendering_to_lines.rb +1 -5
  68. data/lib/super_diff/object_inspection/nodes/as_prelude_when_rendering_to_lines.rb +1 -5
  69. data/lib/super_diff/object_inspection/nodes/as_single_line.rb +3 -7
  70. data/lib/super_diff/object_inspection/nodes/base.rb +9 -14
  71. data/lib/super_diff/object_inspection/nodes/inspection.rb +26 -34
  72. data/lib/super_diff/object_inspection/nodes/nesting.rb +1 -1
  73. data/lib/super_diff/object_inspection/nodes/only_when.rb +2 -6
  74. data/lib/super_diff/object_inspection/nodes/text.rb +1 -5
  75. data/lib/super_diff/object_inspection/nodes/when_empty.rb +2 -6
  76. data/lib/super_diff/object_inspection/nodes/when_non_empty.rb +2 -6
  77. data/lib/super_diff/object_inspection/nodes/when_rendering_to_lines.rb +1 -1
  78. data/lib/super_diff/object_inspection/nodes/when_rendering_to_string.rb +1 -5
  79. data/lib/super_diff/object_inspection/nodes.rb +7 -7
  80. data/lib/super_diff/object_inspection.rb +3 -3
  81. data/lib/super_diff/operation_tree_builders/array.rb +12 -11
  82. data/lib/super_diff/operation_tree_builders/base.rb +17 -15
  83. data/lib/super_diff/operation_tree_builders/custom_object.rb +8 -6
  84. data/lib/super_diff/operation_tree_builders/date_like.rb +15 -0
  85. data/lib/super_diff/operation_tree_builders/default_object.rb +29 -21
  86. data/lib/super_diff/operation_tree_builders/defaults.rb +1 -1
  87. data/lib/super_diff/operation_tree_builders/hash.rb +23 -24
  88. data/lib/super_diff/operation_tree_builders/main.rb +4 -11
  89. data/lib/super_diff/operation_tree_builders/multiline_string.rb +3 -3
  90. data/lib/super_diff/operation_tree_builders/time_like.rb +1 -11
  91. data/lib/super_diff/operation_tree_builders.rb +2 -1
  92. data/lib/super_diff/operation_tree_flatteners/base.rb +1 -5
  93. data/lib/super_diff/operation_tree_flatteners/collection.rb +13 -16
  94. data/lib/super_diff/operation_tree_flatteners/default_object.rb +1 -2
  95. data/lib/super_diff/operation_tree_flatteners/hash.rb +2 -10
  96. data/lib/super_diff/operation_tree_flatteners/multiline_string.rb +2 -1
  97. data/lib/super_diff/operation_tree_flatteners.rb +3 -3
  98. data/lib/super_diff/operation_trees/base.rb +3 -5
  99. data/lib/super_diff/operation_trees/default_object.rb +1 -3
  100. data/lib/super_diff/operations/binary_operation.rb +2 -2
  101. data/lib/super_diff/operations/unary_operation.rb +1 -1
  102. data/lib/super_diff/rails.rb +2 -1
  103. data/lib/super_diff/recursion_guard.rb +5 -4
  104. data/lib/super_diff/rspec/augmented_matcher.rb +4 -5
  105. data/lib/super_diff/rspec/differ.rb +6 -13
  106. data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +3 -2
  107. data/lib/super_diff/rspec/differs/collection_including.rb +1 -1
  108. data/lib/super_diff/rspec/differs/hash_including.rb +1 -1
  109. data/lib/super_diff/rspec/differs.rb +3 -3
  110. data/lib/super_diff/rspec/matcher_text_builders/base.rb +13 -15
  111. data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +5 -7
  112. data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +3 -5
  113. data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +2 -10
  114. data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +2 -6
  115. data/lib/super_diff/rspec/matcher_text_builders.rb +5 -8
  116. data/lib/super_diff/rspec/matcher_text_template.rb +13 -16
  117. data/lib/super_diff/rspec/monkey_patches.rb +180 -123
  118. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_containing_exactly.rb +14 -7
  119. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_including.rb +21 -13
  120. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb +35 -36
  121. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/generic_describable_matcher.rb +19 -0
  122. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/hash_including.rb +21 -15
  123. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/instance_of.rb +11 -10
  124. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/kind_of.rb +11 -10
  125. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/object_having_attributes.rb +14 -7
  126. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/value_within.rb +10 -11
  127. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders.rb +13 -9
  128. data/lib/super_diff/rspec/object_inspection.rb +1 -1
  129. data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +11 -10
  130. data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +7 -6
  131. data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +11 -10
  132. data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +22 -17
  133. data/lib/super_diff/rspec/operation_tree_builders.rb +4 -4
  134. data/lib/super_diff/rspec.rb +17 -18
  135. data/lib/super_diff/tiered_lines_elider.rb +87 -115
  136. data/lib/super_diff/tiered_lines_formatter.rb +5 -9
  137. data/lib/super_diff/version.rb +1 -1
  138. data/lib/super_diff.rb +13 -9
  139. data/spec/examples.txt +541 -483
  140. data/spec/integration/rails/active_record_spec.rb +3 -1
  141. data/spec/integration/rails/engines_spec.rb +25 -0
  142. data/spec/integration/rails/hash_with_indifferent_access_spec.rb +3 -1
  143. data/spec/integration/rspec/be_falsey_matcher_spec.rb +40 -35
  144. data/spec/integration/rspec/be_matcher_spec.rb +360 -320
  145. data/spec/integration/rspec/be_nil_matcher_spec.rb +38 -34
  146. data/spec/integration/rspec/be_predicate_matcher_spec.rb +376 -359
  147. data/spec/integration/rspec/be_truthy_matcher_spec.rb +38 -33
  148. data/spec/integration/rspec/contain_exactly_matcher_spec.rb +257 -254
  149. data/spec/integration/rspec/eq_matcher_spec.rb +695 -585
  150. data/spec/integration/rspec/generic_describable_matchers_spec.rb +177 -0
  151. data/spec/integration/rspec/have_attributes_matcher_spec.rb +312 -304
  152. data/spec/integration/rspec/have_predicate_matcher_spec.rb +291 -297
  153. data/spec/integration/rspec/include_matcher_spec.rb +327 -225
  154. data/spec/integration/rspec/magic_metadata_spec.rb +51 -0
  155. data/spec/integration/rspec/match_array_matcher_spec.rb +294 -291
  156. data/spec/integration/rspec/match_matcher_spec.rb +916 -903
  157. data/spec/integration/rspec/raise_error_matcher_spec.rb +1208 -449
  158. data/spec/integration/rspec/respond_to_matcher_spec.rb +702 -697
  159. data/spec/integration/rspec/third_party_matcher_spec.rb +142 -138
  160. data/spec/integration/rspec/unhandled_errors_spec.rb +88 -84
  161. data/spec/internal/log/test.log +0 -0
  162. data/spec/spec_helper.rb +20 -20
  163. data/spec/support/command_runner.rb +34 -57
  164. data/spec/support/integration/helpers.rb +44 -32
  165. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +28 -23
  166. data/spec/support/integration/matchers.rb +34 -0
  167. data/spec/support/integration/test_programs/base.rb +17 -22
  168. data/spec/support/integration/test_programs/plain.rb +6 -0
  169. data/spec/support/integration/test_programs/rspec_active_record.rb +4 -1
  170. data/spec/support/integration/test_programs/rspec_active_support.rb +4 -1
  171. data/spec/support/integration/test_programs/rspec_rails.rb +4 -1
  172. data/spec/support/integration/test_programs/rspec_rails_engine.rb +20 -0
  173. data/spec/support/models/active_record/person.rb +6 -4
  174. data/spec/support/models/active_record/shipping_address.rb +9 -10
  175. data/spec/support/models/customer.rb +2 -4
  176. data/spec/support/models/player.rb +3 -6
  177. data/spec/support/models/shipping_address.rb +4 -13
  178. data/spec/support/shared_examples/active_record.rb +258 -240
  179. data/spec/support/shared_examples/active_support.rb +174 -51
  180. data/spec/support/shared_examples/elided_diffs.rb +447 -423
  181. data/spec/support/shared_examples/hash_with_indifferent_access.rb +500 -464
  182. data/spec/support/shared_examples/key.rb +123 -0
  183. data/spec/support/unit/helpers.rb +1 -3
  184. data/spec/support/unit/matchers/match_output.rb +12 -13
  185. data/spec/unit/active_record/object_inspection_spec.rb +222 -206
  186. data/spec/unit/active_support/object_inspection_spec.rb +170 -0
  187. data/spec/unit/equality_matchers/main_spec.rb +1049 -984
  188. data/spec/unit/helpers_spec.rb +14 -21
  189. data/spec/unit/operation_tree_flatteners/array_spec.rb +557 -524
  190. data/spec/unit/operation_tree_flatteners/custom_object_spec.rb +619 -601
  191. data/spec/unit/operation_tree_flatteners/default_object_spec.rb +619 -621
  192. data/spec/unit/operation_tree_flatteners/hash_spec.rb +595 -556
  193. data/spec/unit/operation_tree_flatteners/multiline_string_spec.rb +102 -92
  194. data/spec/unit/rspec/matchers/be_compared_to_spec.rb +3 -3
  195. data/spec/unit/rspec/matchers/be_predicate_spec.rb +3 -3
  196. data/spec/unit/rspec/matchers/contain_exactly_spec.rb +1 -1
  197. data/spec/unit/rspec/matchers/have_attributes_spec.rb +1 -1
  198. data/spec/unit/rspec/matchers/have_predicate_spec.rb +2 -2
  199. data/spec/unit/rspec/matchers/include_spec.rb +2 -2
  200. data/spec/unit/rspec/matchers/match_array_spec.rb +2 -2
  201. data/spec/unit/rspec/matchers/raise_error_spec.rb +43 -11
  202. data/spec/unit/rspec/matchers/respond_to_spec.rb +23 -16
  203. data/spec/unit/rspec/object_inspection/rspec_matcher_spec.rb +91 -0
  204. data/spec/unit/rspec/object_inspection_spec.rb +351 -326
  205. data/spec/unit/super_diff_spec.rb +1594 -1437
  206. data/spec/unit/tiered_lines_elider_spec.rb +3508 -3536
  207. data/spec/unit/tiered_lines_formatter_spec.rb +54 -116
  208. data/super_diff.gemspec +13 -12
  209. metadata +88 -75
  210. data/lib/super_diff/errors/no_diff_formatter_available_error.rb +0 -21
  211. data/lib/super_diff/errors/no_operational_sequencer_available_error.rb +0 -22
  212. data/spec/tmp/warnings_logger/all_warnings.txt +0 -2
@@ -1,4 +1,4 @@
1
- require 'set'
1
+ require "set"
2
2
 
3
3
  module SuperDiff
4
4
  module RecursionGuard
@@ -6,9 +6,10 @@ module SuperDiff
6
6
  PLACEHOLDER = "∙∙∙".freeze
7
7
 
8
8
  def self.guarding_recursion_of(*objects, &block)
9
- already_seen_objects, first_seen_objects = objects.partition do |object|
10
- !SuperDiff.primitive?(object) && already_seen?(object)
11
- end
9
+ already_seen_objects, first_seen_objects =
10
+ objects.partition do |object|
11
+ !SuperDiff.primitive?(object) && already_seen?(object)
12
+ end
12
13
 
13
14
  first_seen_objects.each do |object|
14
15
  already_seen_object_ids.add(object.object_id)
@@ -43,8 +43,9 @@ module SuperDiff
43
43
  actual: actual_for_matcher_text,
44
44
  expected_for_failure_message: expected_for_failure_message,
45
45
  expected_for_description: expected_for_description,
46
- expected_action_for_failure_message: expected_action_for_failure_message,
47
- expected_action_for_description: expected_action_for_description,
46
+ expected_action_for_failure_message:
47
+ expected_action_for_failure_message,
48
+ expected_action_for_description: expected_action_for_description
48
49
  }
49
50
  end
50
51
 
@@ -84,9 +85,7 @@ module SuperDiff
84
85
 
85
86
  def matchers
86
87
  Object.new.tap do |object|
87
- object.singleton_class.class_eval do
88
- include ::RSpec::Matchers
89
- end
88
+ object.singleton_class.class_eval { include ::RSpec::Matchers }
90
89
  end
91
90
  end
92
91
 
@@ -7,11 +7,8 @@ module SuperDiff
7
7
 
8
8
  def diff
9
9
  if worth_diffing?
10
- diff = SuperDiff::Differs::Main.call(
11
- expected,
12
- actual,
13
- omit_empty: true,
14
- )
10
+ diff =
11
+ SuperDiff::Differs::Main.call(expected, actual, omit_empty: true)
15
12
  "\n\n" + diff
16
13
  else
17
14
  ""
@@ -23,8 +20,7 @@ module SuperDiff
23
20
  private
24
21
 
25
22
  def worth_diffing?
26
- comparing_inequal_values? &&
27
- !comparing_primitive_values? &&
23
+ comparing_inequal_values? && !comparing_primitive_values? &&
28
24
  !comparing_singleline_strings?
29
25
  end
30
26
 
@@ -33,16 +29,13 @@ module SuperDiff
33
29
  end
34
30
 
35
31
  def comparing_primitive_values?
36
- expected.is_a?(Symbol) ||
37
- expected.is_a?(Integer) ||
32
+ expected.is_a?(Symbol) || expected.is_a?(Integer) ||
38
33
  [true, false, nil].include?(expected)
39
34
  end
40
35
 
41
36
  def comparing_singleline_strings?
42
- expected.is_a?(String) &&
43
- actual.is_a?(String) &&
44
- !expected.include?("\n") &&
45
- !actual.include?("\n")
37
+ expected.is_a?(String) && actual.is_a?(String) &&
38
+ !expected.include?("\n") && !actual.include?("\n")
46
39
  end
47
40
 
48
41
  def helpers
@@ -3,8 +3,9 @@ module SuperDiff
3
3
  module Differs
4
4
  class CollectionContainingExactly < SuperDiff::Differs::Array
5
5
  def self.applies_to?(expected, actual)
6
- SuperDiff::RSpec.a_collection_containing_exactly_something?(expected) &&
7
- actual.is_a?(::Array)
6
+ SuperDiff::RSpec.a_collection_containing_exactly_something?(
7
+ expected
8
+ ) && actual.is_a?(::Array)
8
9
  end
9
10
 
10
11
  private
@@ -5,7 +5,7 @@ module SuperDiff
5
5
  def self.applies_to?(expected, actual)
6
6
  (
7
7
  SuperDiff::RSpec.a_collection_including_something?(expected) ||
8
- SuperDiff::RSpec.array_including_something?(expected)
8
+ SuperDiff::RSpec.array_including_something?(expected)
9
9
  ) && actual.is_a?(::Array)
10
10
  end
11
11
 
@@ -5,7 +5,7 @@ module SuperDiff
5
5
  def self.applies_to?(expected, actual)
6
6
  (
7
7
  SuperDiff::RSpec.a_hash_including_something?(expected) ||
8
- SuperDiff::RSpec.hash_including_something?(expected)
8
+ SuperDiff::RSpec.hash_including_something?(expected)
9
9
  ) && actual.is_a?(::Hash)
10
10
  end
11
11
 
@@ -3,16 +3,16 @@ module SuperDiff
3
3
  module Differs
4
4
  autoload(
5
5
  :CollectionContainingExactly,
6
- "super_diff/rspec/differs/collection_containing_exactly",
6
+ "super_diff/rspec/differs/collection_containing_exactly"
7
7
  )
8
8
  autoload(
9
9
  :CollectionIncluding,
10
- "super_diff/rspec/differs/collection_including",
10
+ "super_diff/rspec/differs/collection_including"
11
11
  )
12
12
  autoload :HashIncluding, "super_diff/rspec/differs/hash_including"
13
13
  autoload(
14
14
  :ObjectHavingAttributes,
15
- "super_diff/rspec/differs/object_having_attributes",
15
+ "super_diff/rspec/differs/object_having_attributes"
16
16
  )
17
17
  end
18
18
  end
@@ -28,11 +28,12 @@ module SuperDiff
28
28
  end
29
29
 
30
30
  def matcher_description
31
- template = MatcherTextTemplate.new do |t|
32
- t.add_text expected_action_for_description
33
- add_expected_value_to_description(t)
34
- add_extra_after_expected_to(t)
35
- end
31
+ template =
32
+ MatcherTextTemplate.new do |t|
33
+ t.add_text expected_action_for_description
34
+ add_expected_value_to_description(t)
35
+ add_extra_after_expected_to(t)
36
+ end
36
37
 
37
38
  Csi.decolorize(template.to_s(as_single_line: true))
38
39
  end
@@ -61,7 +62,7 @@ module SuperDiff
61
62
  :expected_for_description,
62
63
  :expected_action_for_failure_message,
63
64
  :expected_action_for_description,
64
- :template,
65
+ :template
65
66
  )
66
67
 
67
68
  def negated?
@@ -111,7 +112,7 @@ module SuperDiff
111
112
  template.add_text " "
112
113
  template.add_text_in_color(
113
114
  expected_color,
114
- expected_for_failure_message,
115
+ expected_for_failure_message
115
116
  )
116
117
  end
117
118
  end
@@ -130,17 +131,14 @@ module SuperDiff
130
131
  end
131
132
 
132
133
  def to_or_not_to
133
- if negated?
134
- "not to"
135
- else
136
- "to"
137
- end
134
+ negated? ? "not to" : "to"
138
135
  end
139
136
 
140
137
  def phrase_width
141
- [actual_phrase, expected_phrase].
142
- map { |text| Csi.decolorize(text.to_s).length }.
143
- max
138
+ [actual_phrase, expected_phrase].map do |text|
139
+ Csi.decolorize(text.to_s).length
140
+ end
141
+ .max
144
142
  end
145
143
 
146
144
  # TODO: Should this be applied to expected and actual automatically
@@ -31,21 +31,19 @@ module SuperDiff
31
31
  end
32
32
 
33
33
  def add_actual_value
34
- template.add_text_in_color(actual_color) do
35
- description_of(actual)
36
- end
34
+ template.add_text_in_color(actual_color) { description_of(actual) }
37
35
  end
38
36
 
39
37
  def add_expected_value_to_failure_message(template)
40
38
  template.add_text " "
41
39
  template.add_text_in_color(
42
40
  expected_color,
43
- "#{expected_for_failure_message}?",
41
+ "#{expected_for_failure_message}?"
44
42
  )
45
43
  template.add_text " or "
46
44
  template.add_text_in_color(
47
45
  expected_color,
48
- "#{expected_for_failure_message}s?",
46
+ "#{expected_for_failure_message}s?"
49
47
  )
50
48
  end
51
49
 
@@ -53,12 +51,12 @@ module SuperDiff
53
51
  template.add_text " "
54
52
  template.add_text_in_color(
55
53
  expected_color,
56
- "`#{expected_for_description}?`",
54
+ "`#{expected_for_description}?`"
57
55
  )
58
56
  template.add_text " or "
59
57
  template.add_text_in_color(
60
58
  expected_color,
61
- "`#{expected_for_description}s?`",
59
+ "`#{expected_for_description}s?`"
62
60
  )
63
61
  end
64
62
 
@@ -25,16 +25,14 @@ module SuperDiff
25
25
  end
26
26
 
27
27
  def add_actual_value
28
- template.add_text_in_color(actual_color) do
29
- description_of(actual)
30
- end
28
+ template.add_text_in_color(actual_color) { description_of(actual) }
31
29
  end
32
30
 
33
31
  def add_expected_value_to_failure_message(template)
34
32
  template.add_text " "
35
33
  template.add_text_in_color(
36
34
  expected_color,
37
- expected_for_failure_message,
35
+ expected_for_failure_message
38
36
  )
39
37
  end
40
38
 
@@ -42,7 +40,7 @@ module SuperDiff
42
40
  template.add_text " "
43
41
  template.add_text_in_color(
44
42
  expected_color,
45
- "`#{expected_for_description}`",
43
+ "`#{expected_for_description}`"
46
44
  )
47
45
  end
48
46
 
@@ -5,18 +5,10 @@ module SuperDiff
5
5
  protected
6
6
 
7
7
  def actual_phrase
8
- if actual
9
- "Expected raised exception"
10
- else
8
+ if actual == "exception-free block"
11
9
  "Expected"
12
- end
13
- end
14
-
15
- def add_actual_value
16
- if actual
17
- template.add_text_in_color(actual_color) { actual }
18
10
  else
19
- template.add_text("block")
11
+ "Expected raised exception"
20
12
  end
21
13
  end
22
14
  end
@@ -24,9 +24,7 @@ module SuperDiff
24
24
  end
25
25
 
26
26
  def add_extra_after_expected_to(template)
27
- if expected_arity
28
- add_arity_clause_to(template)
29
- end
27
+ add_arity_clause_to(template) if expected_arity
30
28
 
31
29
  if arbitrary_keywords?
32
30
  add_arbitrary_keywords_clause_to(template)
@@ -34,9 +32,7 @@ module SuperDiff
34
32
  add_keywords_clause_to(template)
35
33
  end
36
34
 
37
- if unlimited_arguments?
38
- add_unlimited_arguments_clause_to(template)
39
- end
35
+ add_unlimited_arguments_clause_to(template) if unlimited_arguments?
40
36
  end
41
37
 
42
38
  private
@@ -4,25 +4,22 @@ module SuperDiff
4
4
  autoload :Base, "super_diff/rspec/matcher_text_builders/base"
5
5
  autoload(
6
6
  :BePredicate,
7
- "super_diff/rspec/matcher_text_builders/be_predicate",
7
+ "super_diff/rspec/matcher_text_builders/be_predicate"
8
8
  )
9
9
  autoload(
10
10
  :ContainExactly,
11
- "super_diff/rspec/matcher_text_builders/contain_exactly",
11
+ "super_diff/rspec/matcher_text_builders/contain_exactly"
12
12
  )
13
13
  autoload(
14
14
  :HavePredicate,
15
- "super_diff/rspec/matcher_text_builders/have_predicate",
15
+ "super_diff/rspec/matcher_text_builders/have_predicate"
16
16
  )
17
17
  autoload :Match, "super_diff/rspec/matcher_text_builders/match"
18
18
  autoload(
19
19
  :RaiseError,
20
- "super_diff/rspec/matcher_text_builders/raise_error",
21
- )
22
- autoload(
23
- :RespondTo,
24
- "super_diff/rspec/matcher_text_builders/respond_to",
20
+ "super_diff/rspec/matcher_text_builders/raise_error"
25
21
  )
22
+ autoload(:RespondTo, "super_diff/rspec/matcher_text_builders/respond_to")
26
23
  end
27
24
  end
28
25
  end
@@ -10,9 +10,7 @@ module SuperDiff
10
10
  def initialize
11
11
  @tokens = []
12
12
 
13
- if block_given?
14
- yield self
15
- end
13
+ yield self if block_given?
16
14
  end
17
15
 
18
16
  def add_text(*args, &block)
@@ -44,16 +42,15 @@ module SuperDiff
44
42
  end
45
43
 
46
44
  def length_of_first_paragraph
47
- Csi.decolorize(to_string_in_singleline_mode).
48
- split(/\n\n/).
49
- first.
50
- length
45
+ Csi.decolorize(to_string_in_singleline_mode).split(/\n\n/).first.length
51
46
  end
52
47
 
53
48
  def to_s(as_single_line: nil)
54
- if length_of_first_paragraph > MAX_LINE_LENGTH || as_single_line == false
49
+ if length_of_first_paragraph > MAX_LINE_LENGTH ||
50
+ as_single_line == false
55
51
  to_string_in_multiline_mode
56
- elsif length_of_first_paragraph <= MAX_LINE_LENGTH || as_single_line == true
52
+ elsif length_of_first_paragraph <= MAX_LINE_LENGTH ||
53
+ as_single_line == true
57
54
  to_string_in_singleline_mode
58
55
  end
59
56
  end
@@ -77,14 +74,14 @@ module SuperDiff
77
74
  class Base
78
75
  def to_string_in_singleline_mode
79
76
  raise NotImplementedError.new(
80
- "#{self.class} must support #to_string_in_singleline_mode",
81
- )
77
+ "#{self.class} must support #to_string_in_singleline_mode"
78
+ )
82
79
  end
83
80
 
84
81
  def to_string_in_multiline_mode
85
82
  raise NotImplementedError.new(
86
- "#{self.class} must support #to_string_in_multiline_mode",
87
- )
83
+ "#{self.class} must support #to_string_in_multiline_mode"
84
+ )
88
85
  end
89
86
 
90
87
  def length
@@ -117,8 +114,8 @@ module SuperDiff
117
114
  def evaluate
118
115
  if immediate_value && block
119
116
  raise ArgumentError.new(
120
- "Cannot provide both immediate value and block",
121
- )
117
+ "Cannot provide both immediate value and block"
118
+ )
122
119
  end
123
120
 
124
121
  immediate_value || block.call
@@ -186,7 +183,7 @@ module SuperDiff
186
183
  evaluate.map do |value|
187
184
  colorizer.wrap(
188
185
  ::RSpec::Support::ObjectFormatter.format(value),
189
- color,
186
+ color
190
187
  )
191
188
  end
192
189
  end