super_diff 0.9.0 → 0.11.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 (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