super_diff 0.13.0 → 0.14.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 (275) 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/object_inspection.rb +7 -5
  175. data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +4 -4
  176. data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +2 -0
  177. data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +2 -0
  178. data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +2 -0
  179. data/lib/super_diff/rspec/operation_tree_builders.rb +6 -4
  180. data/lib/super_diff/rspec-rails.rb +4 -2
  181. data/lib/super_diff/rspec.rb +15 -13
  182. data/lib/super_diff/version.rb +3 -1
  183. data/lib/super_diff.rb +24 -26
  184. data/super_diff.gemspec +20 -19
  185. metadata +6 -185
  186. data/spec/examples.txt +0 -450
  187. data/spec/integration/rails/active_record_spec.rb +0 -21
  188. data/spec/integration/rails/active_support_spec.rb +0 -19
  189. data/spec/integration/rails/engines_spec.rb +0 -25
  190. data/spec/integration/rails/hash_with_indifferent_access_spec.rb +0 -21
  191. data/spec/integration/rspec/be_falsey_matcher_spec.rb +0 -58
  192. data/spec/integration/rspec/be_matcher_spec.rb +0 -605
  193. data/spec/integration/rspec/be_nil_matcher_spec.rb +0 -57
  194. data/spec/integration/rspec/be_predicate_matcher_spec.rb +0 -615
  195. data/spec/integration/rspec/be_truthy_matcher_spec.rb +0 -62
  196. data/spec/integration/rspec/contain_exactly_matcher_spec.rb +0 -377
  197. data/spec/integration/rspec/eq_matcher_spec.rb +0 -1066
  198. data/spec/integration/rspec/generic_describable_matchers_spec.rb +0 -177
  199. data/spec/integration/rspec/have_attributes_matcher_spec.rb +0 -443
  200. data/spec/integration/rspec/have_predicate_matcher_spec.rb +0 -478
  201. data/spec/integration/rspec/include_matcher_spec.rb +0 -452
  202. data/spec/integration/rspec/magic_metadata_spec.rb +0 -51
  203. data/spec/integration/rspec/match_array_matcher_spec.rb +0 -424
  204. data/spec/integration/rspec/match_matcher_spec.rb +0 -1359
  205. data/spec/integration/rspec/raise_error_matcher_spec.rb +0 -1488
  206. data/spec/integration/rspec/respond_to_matcher_spec.rb +0 -999
  207. data/spec/integration/rspec/third_party_matcher_spec.rb +0 -245
  208. data/spec/integration/rspec/unhandled_errors_spec.rb +0 -150
  209. data/spec/spec_helper.rb +0 -91
  210. data/spec/support/colorizer.rb +0 -9
  211. data/spec/support/command_runner.rb +0 -253
  212. data/spec/support/helpers.rb +0 -21
  213. data/spec/support/integration/helpers.rb +0 -124
  214. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +0 -104
  215. data/spec/support/integration/matchers.rb +0 -177
  216. data/spec/support/integration/test_programs/base.rb +0 -143
  217. data/spec/support/integration/test_programs/plain.rb +0 -19
  218. data/spec/support/integration/test_programs/rspec_active_record.rb +0 -20
  219. data/spec/support/integration/test_programs/rspec_active_support.rb +0 -20
  220. data/spec/support/integration/test_programs/rspec_rails.rb +0 -20
  221. data/spec/support/integration/test_programs/rspec_rails_engine.rb +0 -20
  222. data/spec/support/models/a.rb +0 -11
  223. data/spec/support/models/active_record/person.rb +0 -28
  224. data/spec/support/models/active_record/query.rb +0 -15
  225. data/spec/support/models/active_record/shipping_address.rb +0 -24
  226. data/spec/support/models/customer.rb +0 -22
  227. data/spec/support/models/empty_class.rb +0 -6
  228. data/spec/support/models/item.rb +0 -10
  229. data/spec/support/models/order.rb +0 -9
  230. data/spec/support/models/person.rb +0 -20
  231. data/spec/support/models/player.rb +0 -30
  232. data/spec/support/models/point.rb +0 -7
  233. data/spec/support/models/shipping_address.rb +0 -25
  234. data/spec/support/shared_examples/active_record.rb +0 -428
  235. data/spec/support/shared_examples/active_support.rb +0 -188
  236. data/spec/support/shared_examples/elided_diffs.rb +0 -938
  237. data/spec/support/shared_examples/hash_with_indifferent_access.rb +0 -749
  238. data/spec/support/shared_examples/key.rb +0 -123
  239. data/spec/support/unit/helpers.rb +0 -24
  240. data/spec/support/unit/matchers/be_deprecated_in_favor_of.rb +0 -39
  241. data/spec/support/unit/matchers/match_output.rb +0 -40
  242. data/spec/unit/active_record/object_inspection_spec.rb +0 -289
  243. data/spec/unit/active_support/object_inspection_spec.rb +0 -170
  244. data/spec/unit/basic/inspection_tree_builders/data_object_spec.rb +0 -146
  245. data/spec/unit/basic/operation_tree_builders/data_object_spec.rb +0 -82
  246. data/spec/unit/basic/operation_tree_flatteners/array_spec.rb +0 -637
  247. data/spec/unit/basic/operation_tree_flatteners/custom_object_spec.rb +0 -685
  248. data/spec/unit/basic/operation_tree_flatteners/default_object_spec.rb +0 -685
  249. data/spec/unit/basic/operation_tree_flatteners/hash_spec.rb +0 -671
  250. data/spec/unit/basic/operation_tree_flatteners/multiline_string_spec.rb +0 -131
  251. data/spec/unit/core/configuration_no_rspec_spec.rb +0 -58
  252. data/spec/unit/core/configuration_spec.rb +0 -176
  253. data/spec/unit/core/helpers_spec.rb +0 -68
  254. data/spec/unit/core/tiered_lines_elider_spec.rb +0 -6328
  255. data/spec/unit/core/tiered_lines_formatter_spec.rb +0 -131
  256. data/spec/unit/deprecations_spec.rb +0 -176
  257. data/spec/unit/equality_matchers/main_spec.rb +0 -1842
  258. data/spec/unit/rspec/matchers/be_compared_to_spec.rb +0 -23
  259. data/spec/unit/rspec/matchers/be_falsey_spec.rb +0 -9
  260. data/spec/unit/rspec/matchers/be_nil_spec.rb +0 -9
  261. data/spec/unit/rspec/matchers/be_predicate_spec.rb +0 -31
  262. data/spec/unit/rspec/matchers/be_spec.rb +0 -17
  263. data/spec/unit/rspec/matchers/be_truthy_spec.rb +0 -9
  264. data/spec/unit/rspec/matchers/contain_exactly_spec.rb +0 -11
  265. data/spec/unit/rspec/matchers/eq_spec.rb +0 -9
  266. data/spec/unit/rspec/matchers/have_attributes_spec.rb +0 -11
  267. data/spec/unit/rspec/matchers/have_predicate_spec.rb +0 -21
  268. data/spec/unit/rspec/matchers/include_spec.rb +0 -21
  269. data/spec/unit/rspec/matchers/match_array_spec.rb +0 -11
  270. data/spec/unit/rspec/matchers/match_spec.rb +0 -9
  271. data/spec/unit/rspec/matchers/raise_error_spec.rb +0 -77
  272. data/spec/unit/rspec/matchers/respond_to_spec.rb +0 -85
  273. data/spec/unit/rspec/object_inspection/rspec_matcher_spec.rb +0 -91
  274. data/spec/unit/rspec/object_inspection_spec.rb +0 -471
  275. 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