super_diff 0.13.0 → 0.15.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 (276) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/super_diff/active_record/differs/active_record_relation.rb +2 -0
  4. data/lib/super_diff/active_record/differs.rb +3 -1
  5. data/lib/super_diff/active_record/inspection_tree_builders/active_record_model.rb +7 -5
  6. data/lib/super_diff/active_record/inspection_tree_builders/active_record_relation.rb +12 -10
  7. data/lib/super_diff/active_record/inspection_tree_builders.rb +4 -2
  8. data/lib/super_diff/active_record/monkey_patches.rb +4 -2
  9. data/lib/super_diff/active_record/object_inspection.rb +6 -4
  10. data/lib/super_diff/active_record/operation_tree_builders/active_record_model.rb +3 -1
  11. data/lib/super_diff/active_record/operation_tree_builders/active_record_relation.rb +3 -1
  12. data/lib/super_diff/active_record/operation_tree_builders.rb +4 -2
  13. data/lib/super_diff/active_record/operation_tree_flatteners/active_record_relation.rb +4 -2
  14. data/lib/super_diff/active_record/operation_tree_flatteners.rb +3 -1
  15. data/lib/super_diff/active_record/operation_trees/active_record_relation.rb +2 -0
  16. data/lib/super_diff/active_record/operation_trees.rb +3 -1
  17. data/lib/super_diff/active_record.rb +10 -8
  18. data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +2 -0
  19. data/lib/super_diff/active_support/differs.rb +3 -1
  20. data/lib/super_diff/active_support/inspection_tree_builders/hash_with_indifferent_access.rb +16 -14
  21. data/lib/super_diff/active_support/inspection_tree_builders/ordered_options.rb +16 -14
  22. data/lib/super_diff/active_support/inspection_tree_builders.rb +4 -2
  23. data/lib/super_diff/active_support/object_inspection.rb +6 -4
  24. data/lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb +6 -4
  25. data/lib/super_diff/active_support/operation_tree_builders.rb +3 -1
  26. data/lib/super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access.rb +4 -2
  27. data/lib/super_diff/active_support/operation_tree_flatteners.rb +3 -1
  28. data/lib/super_diff/active_support/operation_trees/hash_with_indifferent_access.rb +2 -0
  29. data/lib/super_diff/active_support/operation_trees.rb +3 -1
  30. data/lib/super_diff/active_support.rb +8 -6
  31. data/lib/super_diff/basic/diff_formatters/collection.rb +18 -18
  32. data/lib/super_diff/basic/diff_formatters/multiline_string.rb +2 -0
  33. data/lib/super_diff/basic/diff_formatters.rb +4 -2
  34. data/lib/super_diff/basic/differs/array.rb +2 -0
  35. data/lib/super_diff/basic/differs/custom_object.rb +3 -1
  36. data/lib/super_diff/basic/differs/date_like.rb +2 -0
  37. data/lib/super_diff/basic/differs/default_object.rb +3 -1
  38. data/lib/super_diff/basic/differs/hash.rb +2 -0
  39. data/lib/super_diff/basic/differs/multiline_string.rb +2 -0
  40. data/lib/super_diff/basic/differs/time_like.rb +2 -0
  41. data/lib/super_diff/basic/differs.rb +11 -9
  42. data/lib/super_diff/basic/inspection_tree_builders/array.rb +5 -3
  43. data/lib/super_diff/basic/inspection_tree_builders/custom_object.rb +5 -3
  44. data/lib/super_diff/basic/inspection_tree_builders/data_object.rb +6 -4
  45. data/lib/super_diff/basic/inspection_tree_builders/date_like.rb +7 -5
  46. data/lib/super_diff/basic/inspection_tree_builders/default_object.rb +7 -5
  47. data/lib/super_diff/basic/inspection_tree_builders/hash.rb +7 -5
  48. data/lib/super_diff/basic/inspection_tree_builders/primitive.rb +2 -0
  49. data/lib/super_diff/basic/inspection_tree_builders/range_object.rb +19 -0
  50. data/lib/super_diff/basic/inspection_tree_builders/time_like.rb +8 -8
  51. data/lib/super_diff/basic/inspection_tree_builders.rb +15 -9
  52. data/lib/super_diff/basic/operation_tree_builders/array.rb +6 -4
  53. data/lib/super_diff/basic/operation_tree_builders/custom_object.rb +3 -1
  54. data/lib/super_diff/basic/operation_tree_builders/data_object.rb +4 -2
  55. data/lib/super_diff/basic/operation_tree_builders/date_like.rb +2 -0
  56. data/lib/super_diff/basic/operation_tree_builders/default_object.rb +32 -31
  57. data/lib/super_diff/basic/operation_tree_builders/hash.rb +49 -46
  58. data/lib/super_diff/basic/operation_tree_builders/multiline_string.rb +5 -3
  59. data/lib/super_diff/basic/operation_tree_builders/time_like.rb +5 -3
  60. data/lib/super_diff/basic/operation_tree_builders.rb +12 -10
  61. data/lib/super_diff/basic/operation_tree_flatteners/array.rb +4 -2
  62. data/lib/super_diff/basic/operation_tree_flatteners/collection.rb +11 -11
  63. data/lib/super_diff/basic/operation_tree_flatteners/custom_object.rb +5 -3
  64. data/lib/super_diff/basic/operation_tree_flatteners/default_object.rb +6 -5
  65. data/lib/super_diff/basic/operation_tree_flatteners/hash.rb +5 -3
  66. data/lib/super_diff/basic/operation_tree_flatteners/multiline_string.rb +3 -1
  67. data/lib/super_diff/basic/operation_tree_flatteners.rb +8 -6
  68. data/lib/super_diff/basic/operation_trees/array.rb +2 -0
  69. data/lib/super_diff/basic/operation_trees/custom_object.rb +2 -0
  70. data/lib/super_diff/basic/operation_trees/default_object.rb +6 -4
  71. data/lib/super_diff/basic/operation_trees/hash.rb +2 -0
  72. data/lib/super_diff/basic/operation_trees/multiline_string.rb +3 -1
  73. data/lib/super_diff/basic/operation_trees.rb +9 -7
  74. data/lib/super_diff/basic.rb +9 -6
  75. data/lib/super_diff/core/abstract_differ.rb +2 -0
  76. data/lib/super_diff/core/abstract_inspection_tree_builder.rb +2 -0
  77. data/lib/super_diff/core/abstract_operation_tree.rb +4 -2
  78. data/lib/super_diff/core/abstract_operation_tree_builder.rb +15 -18
  79. data/lib/super_diff/core/abstract_operation_tree_flattener.rb +5 -3
  80. data/lib/super_diff/core/binary_operation.rb +3 -1
  81. data/lib/super_diff/core/colorized_document_extensions.rb +2 -0
  82. data/lib/super_diff/core/configuration.rb +14 -38
  83. data/lib/super_diff/core/differ_dispatcher.rb +4 -2
  84. data/lib/super_diff/core/gem_version.rb +2 -0
  85. data/lib/super_diff/core/helpers.rb +13 -11
  86. data/lib/super_diff/core/implementation_checks.rb +6 -2
  87. data/lib/super_diff/core/inspection_tree.rb +38 -38
  88. data/lib/super_diff/core/inspection_tree_builder_dispatcher.rb +5 -5
  89. data/lib/super_diff/core/inspection_tree_nodes/as_lines_when_rendering_to_lines.rb +3 -1
  90. data/lib/super_diff/core/inspection_tree_nodes/as_prefix_when_rendering_to_lines.rb +2 -0
  91. data/lib/super_diff/core/inspection_tree_nodes/as_prelude_when_rendering_to_lines.rb +2 -0
  92. data/lib/super_diff/core/inspection_tree_nodes/as_single_line.rb +2 -0
  93. data/lib/super_diff/core/inspection_tree_nodes/base.rb +9 -9
  94. data/lib/super_diff/core/inspection_tree_nodes/inspection.rb +2 -0
  95. data/lib/super_diff/core/inspection_tree_nodes/nesting.rb +2 -0
  96. data/lib/super_diff/core/inspection_tree_nodes/only_when.rb +5 -1
  97. data/lib/super_diff/core/inspection_tree_nodes/text.rb +2 -0
  98. data/lib/super_diff/core/inspection_tree_nodes/when_empty.rb +3 -1
  99. data/lib/super_diff/core/inspection_tree_nodes/when_non_empty.rb +3 -1
  100. data/lib/super_diff/core/inspection_tree_nodes/when_rendering_to_lines.rb +3 -1
  101. data/lib/super_diff/core/inspection_tree_nodes/when_rendering_to_string.rb +2 -0
  102. data/lib/super_diff/core/inspection_tree_nodes.rb +16 -14
  103. data/lib/super_diff/core/line.rb +9 -7
  104. data/lib/super_diff/core/no_differ_available_error.rb +7 -5
  105. data/lib/super_diff/core/no_inspection_tree_builder_available_error.rb +5 -3
  106. data/lib/super_diff/core/no_operation_tree_available_error.rb +4 -2
  107. data/lib/super_diff/core/no_operation_tree_builder_available_error.rb +7 -5
  108. data/lib/super_diff/core/operation_tree_builder_dispatcher.rb +3 -3
  109. data/lib/super_diff/core/operation_tree_finder.rb +8 -8
  110. data/lib/super_diff/core/prefix_for_next_inspection_tree_node.rb +2 -0
  111. data/lib/super_diff/core/prelude_for_next_inspection_tree_node.rb +2 -0
  112. data/lib/super_diff/core/recursion_guard.rb +6 -4
  113. data/lib/super_diff/core/tiered_lines.rb +2 -0
  114. data/lib/super_diff/core/tiered_lines_elider.rb +53 -54
  115. data/lib/super_diff/core/tiered_lines_formatter.rb +6 -4
  116. data/lib/super_diff/core/unary_operation.rb +2 -0
  117. data/lib/super_diff/core.rb +31 -29
  118. data/lib/super_diff/csi/bold_sequence.rb +2 -0
  119. data/lib/super_diff/csi/color.rb +4 -4
  120. data/lib/super_diff/csi/color_sequence_block.rb +3 -1
  121. data/lib/super_diff/csi/colorized_document.rb +7 -9
  122. data/lib/super_diff/csi/document.rb +15 -18
  123. data/lib/super_diff/csi/eight_bit_color.rb +32 -37
  124. data/lib/super_diff/csi/four_bit_color.rb +12 -9
  125. data/lib/super_diff/csi/reset_sequence.rb +2 -0
  126. data/lib/super_diff/csi/twenty_four_bit_color.rb +22 -21
  127. data/lib/super_diff/csi/uncolorized_document.rb +2 -0
  128. data/lib/super_diff/csi.rb +12 -10
  129. data/lib/super_diff/differs.rb +6 -4
  130. data/lib/super_diff/equality_matchers/array.rb +18 -16
  131. data/lib/super_diff/equality_matchers/base.rb +6 -4
  132. data/lib/super_diff/equality_matchers/default.rb +5 -3
  133. data/lib/super_diff/equality_matchers/defaults.rb +2 -0
  134. data/lib/super_diff/equality_matchers/hash.rb +18 -16
  135. data/lib/super_diff/equality_matchers/main.rb +3 -1
  136. data/lib/super_diff/equality_matchers/multiline_string.rb +18 -16
  137. data/lib/super_diff/equality_matchers/primitive.rb +15 -13
  138. data/lib/super_diff/equality_matchers/singleline_string.rb +16 -14
  139. data/lib/super_diff/equality_matchers.rb +11 -9
  140. data/lib/super_diff/errors.rb +4 -2
  141. data/lib/super_diff/object_inspection.rb +17 -15
  142. data/lib/super_diff/operation_tree_builders.rb +6 -4
  143. data/lib/super_diff/operation_tree_flatteners.rb +6 -4
  144. data/lib/super_diff/operation_trees.rb +6 -4
  145. data/lib/super_diff/operations.rb +4 -2
  146. data/lib/super_diff/rails.rb +4 -2
  147. data/lib/super_diff/rspec/augmented_matcher.rb +3 -1
  148. data/lib/super_diff/rspec/differ.rb +16 -7
  149. data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +2 -0
  150. data/lib/super_diff/rspec/differs/collection_including.rb +2 -0
  151. data/lib/super_diff/rspec/differs/hash_including.rb +2 -0
  152. data/lib/super_diff/rspec/differs/object_having_attributes.rb +2 -0
  153. data/lib/super_diff/rspec/differs.rb +6 -4
  154. data/lib/super_diff/rspec/inspection_tree_builders/collection_containing_exactly.rb +12 -10
  155. data/lib/super_diff/rspec/inspection_tree_builders/collection_including.rb +10 -8
  156. data/lib/super_diff/rspec/inspection_tree_builders/double.rb +20 -18
  157. data/lib/super_diff/rspec/inspection_tree_builders/generic_describable_matcher.rb +2 -0
  158. data/lib/super_diff/rspec/inspection_tree_builders/hash_including.rb +10 -8
  159. data/lib/super_diff/rspec/inspection_tree_builders/instance_of.rb +2 -0
  160. data/lib/super_diff/rspec/inspection_tree_builders/kind_of.rb +2 -0
  161. data/lib/super_diff/rspec/inspection_tree_builders/object_having_attributes.rb +12 -10
  162. data/lib/super_diff/rspec/inspection_tree_builders/primitive.rb +2 -0
  163. data/lib/super_diff/rspec/inspection_tree_builders/value_within.rb +6 -4
  164. data/lib/super_diff/rspec/inspection_tree_builders.rb +12 -10
  165. data/lib/super_diff/rspec/matcher_text_builders/base.rb +12 -12
  166. data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +19 -17
  167. data/lib/super_diff/rspec/matcher_text_builders/contain_exactly.rb +3 -1
  168. data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +7 -5
  169. data/lib/super_diff/rspec/matcher_text_builders/match.rb +6 -4
  170. data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +5 -3
  171. data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +20 -18
  172. data/lib/super_diff/rspec/matcher_text_builders.rb +9 -7
  173. data/lib/super_diff/rspec/matcher_text_template.rb +34 -39
  174. data/lib/super_diff/rspec/monkey_patches.rb +129 -56
  175. data/lib/super_diff/rspec/object_inspection.rb +7 -5
  176. data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +4 -4
  177. data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +2 -0
  178. data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +2 -0
  179. data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +2 -0
  180. data/lib/super_diff/rspec/operation_tree_builders.rb +6 -4
  181. data/lib/super_diff/rspec-rails.rb +4 -2
  182. data/lib/super_diff/rspec.rb +27 -14
  183. data/lib/super_diff/version.rb +3 -1
  184. data/lib/super_diff.rb +24 -26
  185. data/super_diff.gemspec +20 -19
  186. metadata +6 -185
  187. data/spec/examples.txt +0 -450
  188. data/spec/integration/rails/active_record_spec.rb +0 -21
  189. data/spec/integration/rails/active_support_spec.rb +0 -19
  190. data/spec/integration/rails/engines_spec.rb +0 -25
  191. data/spec/integration/rails/hash_with_indifferent_access_spec.rb +0 -21
  192. data/spec/integration/rspec/be_falsey_matcher_spec.rb +0 -58
  193. data/spec/integration/rspec/be_matcher_spec.rb +0 -605
  194. data/spec/integration/rspec/be_nil_matcher_spec.rb +0 -57
  195. data/spec/integration/rspec/be_predicate_matcher_spec.rb +0 -615
  196. data/spec/integration/rspec/be_truthy_matcher_spec.rb +0 -62
  197. data/spec/integration/rspec/contain_exactly_matcher_spec.rb +0 -377
  198. data/spec/integration/rspec/eq_matcher_spec.rb +0 -1066
  199. data/spec/integration/rspec/generic_describable_matchers_spec.rb +0 -177
  200. data/spec/integration/rspec/have_attributes_matcher_spec.rb +0 -443
  201. data/spec/integration/rspec/have_predicate_matcher_spec.rb +0 -478
  202. data/spec/integration/rspec/include_matcher_spec.rb +0 -452
  203. data/spec/integration/rspec/magic_metadata_spec.rb +0 -51
  204. data/spec/integration/rspec/match_array_matcher_spec.rb +0 -424
  205. data/spec/integration/rspec/match_matcher_spec.rb +0 -1359
  206. data/spec/integration/rspec/raise_error_matcher_spec.rb +0 -1488
  207. data/spec/integration/rspec/respond_to_matcher_spec.rb +0 -999
  208. data/spec/integration/rspec/third_party_matcher_spec.rb +0 -245
  209. data/spec/integration/rspec/unhandled_errors_spec.rb +0 -150
  210. data/spec/spec_helper.rb +0 -91
  211. data/spec/support/colorizer.rb +0 -9
  212. data/spec/support/command_runner.rb +0 -253
  213. data/spec/support/helpers.rb +0 -21
  214. data/spec/support/integration/helpers.rb +0 -124
  215. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +0 -104
  216. data/spec/support/integration/matchers.rb +0 -177
  217. data/spec/support/integration/test_programs/base.rb +0 -143
  218. data/spec/support/integration/test_programs/plain.rb +0 -19
  219. data/spec/support/integration/test_programs/rspec_active_record.rb +0 -20
  220. data/spec/support/integration/test_programs/rspec_active_support.rb +0 -20
  221. data/spec/support/integration/test_programs/rspec_rails.rb +0 -20
  222. data/spec/support/integration/test_programs/rspec_rails_engine.rb +0 -20
  223. data/spec/support/models/a.rb +0 -11
  224. data/spec/support/models/active_record/person.rb +0 -28
  225. data/spec/support/models/active_record/query.rb +0 -15
  226. data/spec/support/models/active_record/shipping_address.rb +0 -24
  227. data/spec/support/models/customer.rb +0 -22
  228. data/spec/support/models/empty_class.rb +0 -6
  229. data/spec/support/models/item.rb +0 -10
  230. data/spec/support/models/order.rb +0 -9
  231. data/spec/support/models/person.rb +0 -20
  232. data/spec/support/models/player.rb +0 -30
  233. data/spec/support/models/point.rb +0 -7
  234. data/spec/support/models/shipping_address.rb +0 -25
  235. data/spec/support/shared_examples/active_record.rb +0 -428
  236. data/spec/support/shared_examples/active_support.rb +0 -188
  237. data/spec/support/shared_examples/elided_diffs.rb +0 -938
  238. data/spec/support/shared_examples/hash_with_indifferent_access.rb +0 -749
  239. data/spec/support/shared_examples/key.rb +0 -123
  240. data/spec/support/unit/helpers.rb +0 -24
  241. data/spec/support/unit/matchers/be_deprecated_in_favor_of.rb +0 -39
  242. data/spec/support/unit/matchers/match_output.rb +0 -40
  243. data/spec/unit/active_record/object_inspection_spec.rb +0 -289
  244. data/spec/unit/active_support/object_inspection_spec.rb +0 -170
  245. data/spec/unit/basic/inspection_tree_builders/data_object_spec.rb +0 -146
  246. data/spec/unit/basic/operation_tree_builders/data_object_spec.rb +0 -82
  247. data/spec/unit/basic/operation_tree_flatteners/array_spec.rb +0 -637
  248. data/spec/unit/basic/operation_tree_flatteners/custom_object_spec.rb +0 -685
  249. data/spec/unit/basic/operation_tree_flatteners/default_object_spec.rb +0 -685
  250. data/spec/unit/basic/operation_tree_flatteners/hash_spec.rb +0 -671
  251. data/spec/unit/basic/operation_tree_flatteners/multiline_string_spec.rb +0 -131
  252. data/spec/unit/core/configuration_no_rspec_spec.rb +0 -58
  253. data/spec/unit/core/configuration_spec.rb +0 -176
  254. data/spec/unit/core/helpers_spec.rb +0 -68
  255. data/spec/unit/core/tiered_lines_elider_spec.rb +0 -6328
  256. data/spec/unit/core/tiered_lines_formatter_spec.rb +0 -131
  257. data/spec/unit/deprecations_spec.rb +0 -176
  258. data/spec/unit/equality_matchers/main_spec.rb +0 -1842
  259. data/spec/unit/rspec/matchers/be_compared_to_spec.rb +0 -23
  260. data/spec/unit/rspec/matchers/be_falsey_spec.rb +0 -9
  261. data/spec/unit/rspec/matchers/be_nil_spec.rb +0 -9
  262. data/spec/unit/rspec/matchers/be_predicate_spec.rb +0 -31
  263. data/spec/unit/rspec/matchers/be_spec.rb +0 -17
  264. data/spec/unit/rspec/matchers/be_truthy_spec.rb +0 -9
  265. data/spec/unit/rspec/matchers/contain_exactly_spec.rb +0 -11
  266. data/spec/unit/rspec/matchers/eq_spec.rb +0 -9
  267. data/spec/unit/rspec/matchers/have_attributes_spec.rb +0 -11
  268. data/spec/unit/rspec/matchers/have_predicate_spec.rb +0 -21
  269. data/spec/unit/rspec/matchers/include_spec.rb +0 -21
  270. data/spec/unit/rspec/matchers/match_array_spec.rb +0 -11
  271. data/spec/unit/rspec/matchers/match_spec.rb +0 -9
  272. data/spec/unit/rspec/matchers/raise_error_spec.rb +0 -77
  273. data/spec/unit/rspec/matchers/respond_to_spec.rb +0 -85
  274. data/spec/unit/rspec/object_inspection/rspec_matcher_spec.rb +0 -91
  275. data/spec/unit/rspec/object_inspection_spec.rb +0 -471
  276. data/spec/unit/super_diff_spec.rb +0 -2115
@@ -1,19 +1,21 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module Differs
3
5
  def self.const_missing(missing_const_name)
4
6
  if missing_const_name == :Base
5
- warn <<~EOT
7
+ warn <<~WARNING
6
8
  WARNING: SuperDiff::Differs::#{missing_const_name} is deprecated and will be removed in the next major release.
7
9
  Please use SuperDiff::Core::AbstractDiffer instead.
8
10
  #{caller_locations.join("\n")}
9
- EOT
11
+ WARNING
10
12
  Core::AbstractDiffer
11
13
  elsif Basic::Differs.const_defined?(missing_const_name)
12
- warn <<~EOT
14
+ warn <<~WARNING
13
15
  WARNING: SuperDiff::Differs::#{missing_const_name} is deprecated and will be removed in the next major release.
14
16
  Please use SuperDiff::Basic::Differs::#{missing_const_name} instead.
15
17
  #{caller_locations.join("\n")}
16
- EOT
18
+ WARNING
17
19
  Basic::Differs.const_get(missing_const_name)
18
20
  else
19
21
  super
@@ -1,30 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module EqualityMatchers
3
5
  class Array < Base
4
6
  def self.applies_to?(value)
5
- value.class == ::Array
7
+ value.instance_of?(::Array)
6
8
  end
7
9
 
8
10
  def fail
9
11
  <<~OUTPUT.strip
10
- Differing arrays.
12
+ Differing arrays.
11
13
 
12
- #{
13
- Core::Helpers.style(
14
- :expected,
15
- "Expected: " + SuperDiff.inspect_object(expected, as_lines: false)
16
- )
17
- }
18
- #{
19
- Core::Helpers.style(
20
- :actual,
21
- " Actual: " + SuperDiff.inspect_object(actual, as_lines: false)
22
- )
23
- }
14
+ #{
15
+ Core::Helpers.style(
16
+ :expected,
17
+ "Expected: #{SuperDiff.inspect_object(expected, as_lines: false)}"
18
+ )
19
+ }
20
+ #{
21
+ Core::Helpers.style(
22
+ :actual,
23
+ " Actual: #{SuperDiff.inspect_object(actual, as_lines: false)}"
24
+ )
25
+ }
24
26
 
25
- Diff:
27
+ Diff:
26
28
 
27
- #{diff}
29
+ #{diff}
28
30
  OUTPUT
29
31
  end
30
32
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module EqualityMatchers
3
5
  class Base
@@ -11,14 +13,14 @@ module SuperDiff
11
13
  [
12
14
  :expected!,
13
15
  :actual!,
14
- extra_operation_tree_builder_classes: [],
15
- extra_diff_formatter_classes: []
16
+ { extra_operation_tree_builder_classes: [],
17
+ extra_diff_formatter_classes: [] }
16
18
  ]
17
19
  )
18
20
 
19
21
  def call
20
- if expected == actual
21
- ""
22
+ if expected == actual # rubocop:disable Style/GuardClause `fail` is not Kernel#fail
23
+ ''
22
24
  else
23
25
  fail
24
26
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module EqualityMatchers
3
5
  class Default < Base
@@ -20,20 +22,20 @@ module SuperDiff
20
22
  def expected_line
21
23
  Core::Helpers.style(
22
24
  :expected,
23
- "Expected: " + SuperDiff.inspect_object(expected, as_lines: false)
25
+ "Expected: #{SuperDiff.inspect_object(expected, as_lines: false)}"
24
26
  )
25
27
  end
26
28
 
27
29
  def actual_line
28
30
  Core::Helpers.style(
29
31
  :actual,
30
- " Actual: " + SuperDiff.inspect_object(actual, as_lines: false)
32
+ " Actual: #{SuperDiff.inspect_object(actual, as_lines: false)}"
31
33
  )
32
34
  end
33
35
 
34
36
  def diff_section
35
37
  if diff.empty?
36
- ""
38
+ ''
37
39
  else
38
40
  <<~SECTION
39
41
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module EqualityMatchers
3
5
  DEFAULTS = [
@@ -1,30 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module EqualityMatchers
3
5
  class Hash < Base
4
6
  def self.applies_to?(value)
5
- value.class == ::Hash
7
+ value.instance_of?(::Hash)
6
8
  end
7
9
 
8
10
  def fail
9
11
  <<~OUTPUT.strip
10
- Differing hashes.
12
+ Differing hashes.
11
13
 
12
- #{
13
- Core::Helpers.style(
14
- :expected,
15
- "Expected: " + SuperDiff.inspect_object(expected, as_lines: false)
16
- )
17
- }
18
- #{
19
- Core::Helpers.style(
20
- :actual,
21
- " Actual: " + SuperDiff.inspect_object(actual, as_lines: false)
22
- )
23
- }
14
+ #{
15
+ Core::Helpers.style(
16
+ :expected,
17
+ "Expected: #{SuperDiff.inspect_object(expected, as_lines: false)}"
18
+ )
19
+ }
20
+ #{
21
+ Core::Helpers.style(
22
+ :actual,
23
+ " Actual: #{SuperDiff.inspect_object(actual, as_lines: false)}"
24
+ )
25
+ }
24
26
 
25
- Diff:
27
+ Diff:
26
28
 
27
- #{diff}
29
+ #{diff}
28
30
  OUTPUT
29
31
  end
30
32
 
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module EqualityMatchers
3
5
  class Main
4
6
  extend AttrExtras.mixin
5
7
 
6
- method_object [:expected!, :actual!, extra_classes: []]
8
+ method_object [:expected!, :actual!, { extra_classes: [] }]
7
9
 
8
10
  def call
9
11
  resolved_class.call(expected: expected, actual: actual)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module EqualityMatchers
3
5
  class MultilineString < Base
@@ -7,25 +9,25 @@ module SuperDiff
7
9
 
8
10
  def fail
9
11
  <<~OUTPUT.strip
10
- Differing strings.
12
+ Differing strings.
11
13
 
12
- #{
13
- # TODO: This whole thing should not be red or green, just the values
14
- Core::Helpers.style(
15
- :expected,
16
- "Expected: " + SuperDiff.inspect_object(expected, as_lines: false)
17
- )
18
- }
19
- #{
20
- Core::Helpers.style(
21
- :actual,
22
- " Actual: " + SuperDiff.inspect_object(actual, as_lines: false)
23
- )
24
- }
14
+ #{
15
+ # TODO: This whole thing should not be red or green, just the values
16
+ Core::Helpers.style(
17
+ :expected,
18
+ "Expected: #{SuperDiff.inspect_object(expected, as_lines: false)}"
19
+ )
20
+ }
21
+ #{
22
+ Core::Helpers.style(
23
+ :actual,
24
+ " Actual: #{SuperDiff.inspect_object(actual, as_lines: false)}"
25
+ )
26
+ }
25
27
 
26
- Diff:
28
+ Diff:
27
29
 
28
- #{diff}
30
+ #{diff}
29
31
  OUTPUT
30
32
  end
31
33
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module EqualityMatchers
3
5
  class Primitive < Base
@@ -8,20 +10,20 @@ module SuperDiff
8
10
 
9
11
  def fail
10
12
  <<~OUTPUT.strip
11
- Differing #{Core::Helpers.plural_type_for(actual)}.
13
+ Differing #{Core::Helpers.plural_type_for(actual)}.
12
14
 
13
- #{
14
- Core::Helpers.style(
15
- :expected,
16
- "Expected: " + SuperDiff.inspect_object(expected, as_lines: false)
17
- )
18
- }
19
- #{
20
- Core::Helpers.style(
21
- :actual,
22
- " Actual: " + SuperDiff.inspect_object(actual, as_lines: false)
23
- )
24
- }
15
+ #{
16
+ Core::Helpers.style(
17
+ :expected,
18
+ "Expected: #{SuperDiff.inspect_object(expected, as_lines: false)}"
19
+ )
20
+ }
21
+ #{
22
+ Core::Helpers.style(
23
+ :actual,
24
+ " Actual: #{SuperDiff.inspect_object(actual, as_lines: false)}"
25
+ )
26
+ }
25
27
  OUTPUT
26
28
  end
27
29
  end
@@ -1,26 +1,28 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module EqualityMatchers
3
5
  class SinglelineString < Base
4
6
  def self.applies_to?(value)
5
- value.class == ::String
7
+ value.instance_of?(::String)
6
8
  end
7
9
 
8
10
  def fail
9
11
  <<~OUTPUT.strip
10
- Differing strings.
12
+ Differing strings.
11
13
 
12
- #{
13
- Core::Helpers.style(
14
- :expected,
15
- "Expected: " + SuperDiff.inspect_object(expected, as_lines: false)
16
- )
17
- }
18
- #{
19
- Core::Helpers.style(
20
- :actual,
21
- " Actual: " + SuperDiff.inspect_object(actual, as_lines: false)
22
- )
23
- }
14
+ #{
15
+ Core::Helpers.style(
16
+ :expected,
17
+ "Expected: #{SuperDiff.inspect_object(expected, as_lines: false)}"
18
+ )
19
+ }
20
+ #{
21
+ Core::Helpers.style(
22
+ :actual,
23
+ " Actual: #{SuperDiff.inspect_object(actual, as_lines: false)}"
24
+ )
25
+ }
24
26
  OUTPUT
25
27
  end
26
28
  end
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module EqualityMatchers
3
- autoload :Array, "super_diff/equality_matchers/array"
4
- autoload :Base, "super_diff/equality_matchers/base"
5
- autoload :Hash, "super_diff/equality_matchers/hash"
6
- autoload :Main, "super_diff/equality_matchers/main"
7
- autoload :MultilineString, "super_diff/equality_matchers/multiline_string"
8
- autoload :Default, "super_diff/equality_matchers/default"
9
- autoload :Primitive, "super_diff/equality_matchers/primitive"
5
+ autoload :Array, 'super_diff/equality_matchers/array'
6
+ autoload :Base, 'super_diff/equality_matchers/base'
7
+ autoload :Hash, 'super_diff/equality_matchers/hash'
8
+ autoload :Main, 'super_diff/equality_matchers/main'
9
+ autoload :MultilineString, 'super_diff/equality_matchers/multiline_string'
10
+ autoload :Default, 'super_diff/equality_matchers/default'
11
+ autoload :Primitive, 'super_diff/equality_matchers/primitive'
10
12
  autoload(
11
13
  :SinglelineString,
12
- "super_diff/equality_matchers/singleline_string"
14
+ 'super_diff/equality_matchers/singleline_string'
13
15
  )
14
16
  end
15
17
  end
16
18
 
17
- require "super_diff/equality_matchers/defaults"
19
+ require 'super_diff/equality_matchers/defaults'
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module Errors
3
5
  def self.const_missing(missing_const_name)
4
6
  if Core.const_defined?(missing_const_name)
5
- warn <<~EOT
7
+ warn <<~WARNING
6
8
  WARNING: SuperDiff::Errors::#{missing_const_name} is deprecated and will be removed in the next major release.
7
9
  Please use SuperDiff::Core::#{missing_const_name} instead.
8
10
  #{caller_locations.join("\n")}
9
- EOT
11
+ WARNING
10
12
  Core.const_get(missing_const_name)
11
13
  else
12
14
  super
@@ -1,20 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module ObjectInspection
3
5
  module InspectionTreeBuilders
4
6
  def self.const_missing(missing_const_name)
5
7
  if missing_const_name == :Base
6
- warn <<~EOT
8
+ warn <<~WARNING
7
9
  WARNING: SuperDiff::ObjectInspection::InspectionTreeBuilders::#{missing_const_name} is deprecated and will be removed in the next major release.
8
10
  Please use SuperDiff::Core::AbstractInspectionTreeBuilder instead.
9
11
  #{caller_locations.join("\n")}
10
- EOT
12
+ WARNING
11
13
  Core::AbstractInspectionTreeBuilder
12
14
  elsif Basic::InspectionTreeBuilders.const_defined?(missing_const_name)
13
- warn <<~EOT
14
- WARNING: SuperDiff::ObjectInspection::InspectionTreeBuilders::#{missing_const_name} is deprecated and will be removed in the next major release.
15
- Please use SuperDiff::Basic::InspectionTreeBuilders::#{missing_const_name} instead.
16
- #{caller_locations.join("\n")}
17
- EOT
15
+ warn <<~WARNING
16
+ WARNING: SuperDiff::ObjectInspection::InspectionTreeBuilders::#{missing_const_name} is deprecated and will be removed in the next major release.
17
+ Please use SuperDiff::Basic::InspectionTreeBuilders::#{missing_const_name} instead.
18
+ #{caller_locations.join("\n")}
19
+ WARNING
18
20
  Basic::InspectionTreeBuilders.const_get(missing_const_name)
19
21
  else
20
22
  super
@@ -25,11 +27,11 @@ module SuperDiff
25
27
  module Nodes
26
28
  def self.const_missing(missing_const_name)
27
29
  if Core::InspectionTreeNodes.const_defined?(missing_const_name)
28
- warn <<~EOT
30
+ warn <<~WARNING
29
31
  WARNING: SuperDiff::ObjectInspection::Nodes::#{missing_const_name} is deprecated and will be removed in the next major release.
30
32
  Please use SuperDiff::Core::InspectionTreeNodes::#{missing_const_name} instead.
31
33
  #{caller_locations.join("\n")}
32
- EOT
34
+ WARNING
33
35
  Core::InspectionTreeNodes.const_get(missing_const_name)
34
36
  else
35
37
  super
@@ -39,25 +41,25 @@ module SuperDiff
39
41
 
40
42
  def self.const_missing(missing_const_name)
41
43
  if missing_const_name == :PrefixForNextNode
42
- warn <<~EOT
44
+ warn <<~WARNING
43
45
  WARNING: SuperDiff::ObjectInspection::PrefixForNextNode is deprecated and will be removed in the next major release.
44
46
  Please use SuperDiff::Core::PrefixForNextInspectionTreeNode instead.
45
47
  #{caller_locations.join("\n")}
46
- EOT
48
+ WARNING
47
49
  Core::PrefixForNextInspectionTreeNode
48
50
  elsif missing_const_name == :PreludeForNextNode
49
- warn <<~EOT
51
+ warn <<~WARNING
50
52
  WARNING: SuperDiff::ObjectInspection::PreludeForNextNode is deprecated and will be removed in the next major release.
51
53
  Please use SuperDiff::Core::PreludeForNextInspectionTreeNode instead.
52
54
  #{caller_locations.join("\n")}
53
- EOT
55
+ WARNING
54
56
  Core::PreludeForNextInspectionTreeNode
55
57
  elsif Core.const_defined?(missing_const_name)
56
- warn <<~EOT
58
+ warn <<~WARNING
57
59
  WARNING: SuperDiff::ObjectInspection::#{missing_const_name} is deprecated and will be removed in the next major release.
58
60
  Please use SuperDiff::Core::#{missing_const_name} instead.
59
61
  #{caller_locations.join("\n")}
60
- EOT
62
+ WARNING
61
63
  Core.const_get(missing_const_name)
62
64
  else
63
65
  super
@@ -1,19 +1,21 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module OperationTreeBuilders
3
5
  def self.const_missing(missing_const_name)
4
6
  if missing_const_name == :Base
5
- warn <<~EOT
7
+ warn <<~WARNING
6
8
  WARNING: SuperDiff::OperationTreeBuilders::#{missing_const_name} is deprecated and will be removed in the next major release.
7
9
  Please use SuperDiff::Core::AbstractOperationTreeBuilder instead.
8
10
  #{caller_locations.join("\n")}
9
- EOT
11
+ WARNING
10
12
  Core::AbstractOperationTreeBuilder
11
13
  elsif Basic::OperationTreeBuilders.const_defined?(missing_const_name)
12
- warn <<~EOT
14
+ warn <<~WARNING
13
15
  WARNING: SuperDiff::OperationTreeBuilders::#{missing_const_name} is deprecated and will be removed in the next major release.
14
16
  Please use SuperDiff::Basic::OperationTreeBuilders::#{missing_const_name} instead.
15
17
  #{caller_locations.join("\n")}
16
- EOT
18
+ WARNING
17
19
  Basic::OperationTreeBuilders.const_get(missing_const_name)
18
20
  else
19
21
  super
@@ -1,19 +1,21 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module OperationTreeFlatteners
3
5
  def self.const_missing(missing_const_name)
4
6
  if missing_const_name == :Base
5
- warn <<~EOT
7
+ warn <<~WARNING
6
8
  WARNING: SuperDiff::OperationTreeFlatteners::#{missing_const_name} is deprecated and will be removed in the next major release.
7
9
  Please use SuperDiff::Core::AbstractOperationTreeFlattener instead.
8
10
  #{caller_locations.join("\n")}
9
- EOT
11
+ WARNING
10
12
  Core::AbstractOperationTreeFlattener
11
13
  elsif Basic::OperationTreeFlatteners.const_defined?(missing_const_name)
12
- warn <<~EOT
14
+ warn <<~WARNING
13
15
  WARNING: SuperDiff::OperationTreeFlatteners::#{missing_const_name} is deprecated and will be removed in the next major release.
14
16
  Please use SuperDiff::Basic::OperationTreeFlatteners::#{missing_const_name} instead.
15
17
  #{caller_locations.join("\n")}
16
- EOT
18
+ WARNING
17
19
  Basic::OperationTreeFlatteners.const_get(missing_const_name)
18
20
  else
19
21
  super
@@ -1,19 +1,21 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module OperationTrees
3
5
  def self.const_missing(missing_const_name)
4
6
  if missing_const_name == :Base
5
- warn <<~EOT
7
+ warn <<~WARNING
6
8
  WARNING: SuperDiff::OperationTrees::#{missing_const_name} is deprecated and will be removed in the next major release.
7
9
  Please use SuperDiff::Core::AbstractOperationTree instead.
8
10
  #{caller_locations.join("\n")}
9
- EOT
11
+ WARNING
10
12
  Core::AbstractOperationTree
11
13
  elsif Basic::OperationTrees.const_defined?(missing_const_name)
12
- warn <<~EOT
14
+ warn <<~WARNING
13
15
  WARNING: SuperDiff::OperationTrees::#{missing_const_name} is deprecated and will be removed in the next major release.
14
16
  Please use SuperDiff::Basic::OperationTrees::#{missing_const_name} instead.
15
17
  #{caller_locations.join("\n")}
16
- EOT
18
+ WARNING
17
19
  Basic::OperationTrees.const_get(missing_const_name)
18
20
  else
19
21
  super
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module Operations
3
5
  def self.const_missing(missing_const_name)
4
6
  if Core.const_defined?(missing_const_name)
5
- warn <<~EOT
7
+ warn <<~WARNING
6
8
  WARNING: SuperDiff::Operations::#{missing_const_name} is deprecated and will be removed in the next major release.
7
9
  Please use SuperDiff::Core::#{missing_const_name} instead.
8
10
  #{caller_locations.join("\n")}
9
- EOT
11
+ WARNING
10
12
  Core.const_get(missing_const_name)
11
13
  else
12
14
  super
@@ -1,2 +1,4 @@
1
- require "super_diff/active_support"
2
- require "super_diff/active_record" if defined?(ActiveRecord)
1
+ # frozen_string_literal: true
2
+
3
+ require 'super_diff/active_support'
4
+ require 'super_diff/active_record' if defined?(ActiveRecord)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module RSpec
3
5
  module AugmentedMatcher
@@ -30,7 +32,7 @@ module SuperDiff
30
32
  end
31
33
 
32
34
  def matcher_text_builder
33
- @_matcher_text_builder ||=
35
+ @matcher_text_builder ||=
34
36
  matcher_text_builder_class.new(**matcher_text_builder_args)
35
37
  end
36
38
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module RSpec
3
5
  class Differ
@@ -8,19 +10,19 @@ module SuperDiff
8
10
  def diff
9
11
  if worth_diffing?
10
12
  diff = SuperDiff.diff(expected, actual)
11
- "\n\n" + diff
13
+ "\n\n#{diff}"
12
14
  else
13
- ""
15
+ ''
14
16
  end
15
17
  rescue Core::NoDifferAvailableError
16
- ""
18
+ ''
17
19
  end
18
20
 
19
21
  private
20
22
 
21
23
  def worth_diffing?
22
24
  comparing_inequal_values? && !comparing_primitive_values? &&
23
- !comparing_singleline_strings?
25
+ !comparing_proc_values? && !comparing_singleline_strings?
24
26
  end
25
27
 
26
28
  def comparing_inequal_values?
@@ -28,8 +30,15 @@ module SuperDiff
28
30
  end
29
31
 
30
32
  def comparing_primitive_values?
31
- expected.is_a?(Symbol) || expected.is_a?(Integer) ||
32
- [true, false, nil].include?(expected)
33
+ # strings are indeed primitives, but we still may want to diff them if
34
+ # they are multiline strings (see #comparing_singleline_strings?)
35
+ return false if expected.is_a?(String)
36
+
37
+ SuperDiff.primitive?(expected)
38
+ end
39
+
40
+ def comparing_proc_values?
41
+ expected.is_a?(Proc)
33
42
  end
34
43
 
35
44
  def comparing_singleline_strings?
@@ -38,7 +47,7 @@ module SuperDiff
38
47
  end
39
48
 
40
49
  def helpers
41
- @_helpers ||= RSpecHelpers.new
50
+ @helpers ||= RSpecHelpers.new
42
51
  end
43
52
 
44
53
  class RSpecHelpers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module RSpec
3
5
  module Differs
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module RSpec
3
5
  module Differs
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SuperDiff
2
4
  module RSpec
3
5
  module Differs