super_diff 0.11.0 → 0.13.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 (242) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +23 -182
  3. data/lib/super_diff/active_record/differs/active_record_relation.rb +1 -1
  4. data/lib/super_diff/active_record/inspection_tree_builders/active_record_model.rb +57 -0
  5. data/lib/super_diff/active_record/inspection_tree_builders/active_record_relation.rb +34 -0
  6. data/lib/super_diff/active_record/inspection_tree_builders.rb +14 -0
  7. data/lib/super_diff/active_record/monkey_patches.rb +6 -3
  8. data/lib/super_diff/active_record/object_inspection.rb +16 -4
  9. data/lib/super_diff/active_record/operation_tree_builders/active_record_model.rb +6 -2
  10. data/lib/super_diff/active_record/operation_tree_builders/active_record_relation.rb +1 -1
  11. data/lib/super_diff/active_record/operation_tree_flatteners/active_record_relation.rb +1 -1
  12. data/lib/super_diff/active_record/operation_trees/active_record_relation.rb +1 -1
  13. data/lib/super_diff/active_record.rb +12 -16
  14. data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +1 -1
  15. data/lib/super_diff/active_support/inspection_tree_builders/hash_with_indifferent_access.rb +44 -0
  16. data/lib/super_diff/active_support/inspection_tree_builders/ordered_options.rb +44 -0
  17. data/lib/super_diff/active_support/inspection_tree_builders.rb +14 -0
  18. data/lib/super_diff/active_support/object_inspection.rb +16 -4
  19. data/lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb +1 -1
  20. data/lib/super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access.rb +1 -1
  21. data/lib/super_diff/active_support/operation_trees/hash_with_indifferent_access.rb +1 -1
  22. data/lib/super_diff/active_support.rb +11 -15
  23. data/lib/super_diff/basic/diff_formatters/collection.rb +135 -0
  24. data/lib/super_diff/basic/diff_formatters/multiline_string.rb +34 -0
  25. data/lib/super_diff/basic/diff_formatters.rb +11 -0
  26. data/lib/super_diff/basic/differs/array.rb +17 -0
  27. data/lib/super_diff/basic/differs/custom_object.rb +19 -0
  28. data/lib/super_diff/basic/differs/date_like.rb +17 -0
  29. data/lib/super_diff/basic/differs/default_object.rb +24 -0
  30. data/lib/super_diff/basic/differs/hash.rb +17 -0
  31. data/lib/super_diff/basic/differs/multiline_string.rb +18 -0
  32. data/lib/super_diff/basic/differs/time_like.rb +17 -0
  33. data/lib/super_diff/basic/differs.rb +24 -0
  34. data/lib/super_diff/{object_inspection → basic}/inspection_tree_builders/array.rb +3 -3
  35. data/lib/super_diff/{object_inspection → basic}/inspection_tree_builders/custom_object.rb +3 -3
  36. data/lib/super_diff/basic/inspection_tree_builders/data_object.rb +40 -0
  37. data/lib/super_diff/{object_inspection → basic}/inspection_tree_builders/date_like.rb +3 -3
  38. data/lib/super_diff/{object_inspection → basic}/inspection_tree_builders/default_object.rb +5 -7
  39. data/lib/super_diff/{object_inspection → basic}/inspection_tree_builders/hash.rb +3 -3
  40. data/lib/super_diff/{object_inspection → basic}/inspection_tree_builders/primitive.rb +4 -4
  41. data/lib/super_diff/{object_inspection → basic}/inspection_tree_builders/time_like.rb +3 -3
  42. data/lib/super_diff/basic/inspection_tree_builders.rb +24 -0
  43. data/lib/super_diff/basic/operation_tree_builders/array.rb +111 -0
  44. data/lib/super_diff/basic/operation_tree_builders/custom_object.rb +42 -0
  45. data/lib/super_diff/basic/operation_tree_builders/data_object.rb +18 -0
  46. data/lib/super_diff/basic/operation_tree_builders/date_like.rb +17 -0
  47. data/lib/super_diff/basic/operation_tree_builders/default_object.rb +117 -0
  48. data/lib/super_diff/basic/operation_tree_builders/hash.rb +222 -0
  49. data/lib/super_diff/basic/operation_tree_builders/multiline_string.rb +90 -0
  50. data/lib/super_diff/basic/operation_tree_builders/time_like.rb +26 -0
  51. data/lib/super_diff/basic/operation_tree_builders.rb +38 -0
  52. data/lib/super_diff/basic/operation_tree_flatteners/array.rb +17 -0
  53. data/lib/super_diff/basic/operation_tree_flatteners/collection.rb +140 -0
  54. data/lib/super_diff/basic/operation_tree_flatteners/custom_object.rb +30 -0
  55. data/lib/super_diff/basic/operation_tree_flatteners/default_object.rb +32 -0
  56. data/lib/super_diff/basic/operation_tree_flatteners/hash.rb +35 -0
  57. data/lib/super_diff/basic/operation_tree_flatteners/multiline_string.rb +20 -0
  58. data/lib/super_diff/basic/operation_tree_flatteners.rb +24 -0
  59. data/lib/super_diff/basic/operation_trees/array.rb +17 -0
  60. data/lib/super_diff/basic/operation_trees/custom_object.rb +17 -0
  61. data/lib/super_diff/basic/operation_trees/default_object.rb +42 -0
  62. data/lib/super_diff/basic/operation_trees/hash.rb +17 -0
  63. data/lib/super_diff/basic/operation_trees/multiline_string.rb +17 -0
  64. data/lib/super_diff/basic/operation_trees.rb +25 -0
  65. data/lib/super_diff/basic.rb +50 -0
  66. data/lib/super_diff/{differs/base.rb → core/abstract_differ.rb} +2 -2
  67. data/lib/super_diff/core/abstract_inspection_tree_builder.rb +26 -0
  68. data/lib/super_diff/{operation_trees/base.rb → core/abstract_operation_tree.rb} +6 -2
  69. data/lib/super_diff/{operation_tree_builders/base.rb → core/abstract_operation_tree_builder.rb} +4 -8
  70. data/lib/super_diff/{operation_tree_flatteners/base.rb → core/abstract_operation_tree_flattener.rb} +2 -2
  71. data/lib/super_diff/{operations → core}/binary_operation.rb +1 -1
  72. data/lib/super_diff/core/colorized_document_extensions.rb +20 -0
  73. data/lib/super_diff/core/configuration.rb +196 -0
  74. data/lib/super_diff/core/differ_dispatcher.rb +31 -0
  75. data/lib/super_diff/core/gem_version.rb +47 -0
  76. data/lib/super_diff/core/helpers.rb +88 -0
  77. data/lib/super_diff/core/implementation_checks.rb +21 -0
  78. data/lib/super_diff/{object_inspection → core}/inspection_tree.rb +7 -6
  79. data/lib/super_diff/core/inspection_tree_builder_dispatcher.rb +23 -0
  80. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/as_lines_when_rendering_to_lines.rb +9 -3
  81. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/as_prefix_when_rendering_to_lines.rb +3 -3
  82. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/as_prelude_when_rendering_to_lines.rb +3 -3
  83. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/as_single_line.rb +3 -3
  84. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/base.rb +2 -2
  85. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/inspection.rb +7 -11
  86. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/nesting.rb +2 -2
  87. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/only_when.rb +2 -2
  88. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/text.rb +2 -2
  89. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/when_empty.rb +2 -2
  90. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/when_non_empty.rb +2 -2
  91. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/when_rendering_to_lines.rb +2 -2
  92. data/lib/super_diff/{object_inspection/nodes → core/inspection_tree_nodes}/when_rendering_to_string.rb +2 -2
  93. data/lib/super_diff/core/inspection_tree_nodes.rb +55 -0
  94. data/lib/super_diff/core/line.rb +85 -0
  95. data/lib/super_diff/{errors → core}/no_differ_available_error.rb +1 -1
  96. data/lib/super_diff/core/no_inspection_tree_builder_available_error.rb +21 -0
  97. data/lib/super_diff/core/no_operation_tree_available_error.rb +20 -0
  98. data/lib/super_diff/core/no_operation_tree_builder_available_error.rb +24 -0
  99. data/lib/super_diff/{operation_tree_builders/main.rb → core/operation_tree_builder_dispatcher.rb} +9 -13
  100. data/lib/super_diff/core/operation_tree_finder.rb +27 -0
  101. data/lib/super_diff/core/prefix_for_next_inspection_tree_node.rb +6 -0
  102. data/lib/super_diff/core/prelude_for_next_inspection_tree_node.rb +6 -0
  103. data/lib/super_diff/core/recursion_guard.rb +52 -0
  104. data/lib/super_diff/core/tiered_lines.rb +6 -0
  105. data/lib/super_diff/core/tiered_lines_elider.rb +472 -0
  106. data/lib/super_diff/core/tiered_lines_formatter.rb +77 -0
  107. data/lib/super_diff/{operations → core}/unary_operation.rb +1 -1
  108. data/lib/super_diff/core.rb +69 -0
  109. data/lib/super_diff/csi.rb +0 -32
  110. data/lib/super_diff/differs.rb +19 -12
  111. data/lib/super_diff/equality_matchers/array.rb +3 -3
  112. data/lib/super_diff/equality_matchers/default.rb +8 -3
  113. data/lib/super_diff/equality_matchers/defaults.rb +1 -1
  114. data/lib/super_diff/equality_matchers/hash.rb +3 -3
  115. data/lib/super_diff/equality_matchers/multiline_string.rb +3 -3
  116. data/lib/super_diff/equality_matchers/primitive.rb +3 -3
  117. data/lib/super_diff/equality_matchers/singleline_string.rb +2 -2
  118. data/lib/super_diff/errors.rb +12 -8
  119. data/lib/super_diff/object_inspection.rb +63 -14
  120. data/lib/super_diff/operation_tree_builders.rb +19 -15
  121. data/lib/super_diff/operation_tree_flatteners.rb +19 -16
  122. data/lib/super_diff/operation_trees.rb +19 -9
  123. data/lib/super_diff/operations.rb +12 -2
  124. data/lib/super_diff/rspec/augmented_matcher.rb +1 -1
  125. data/lib/super_diff/rspec/differ.rb +4 -5
  126. data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +1 -1
  127. data/lib/super_diff/rspec/differs/collection_including.rb +1 -1
  128. data/lib/super_diff/rspec/differs/hash_including.rb +1 -1
  129. data/lib/super_diff/rspec/differs/object_having_attributes.rb +1 -1
  130. data/lib/super_diff/rspec/inspection_tree_builders/collection_containing_exactly.rb +34 -0
  131. data/lib/super_diff/rspec/inspection_tree_builders/collection_including.rb +40 -0
  132. data/lib/super_diff/rspec/inspection_tree_builders/double.rb +100 -0
  133. data/lib/super_diff/rspec/inspection_tree_builders/generic_describable_matcher.rb +17 -0
  134. data/lib/super_diff/rspec/inspection_tree_builders/hash_including.rb +40 -0
  135. data/lib/super_diff/rspec/inspection_tree_builders/instance_of.rb +25 -0
  136. data/lib/super_diff/rspec/inspection_tree_builders/kind_of.rb +25 -0
  137. data/lib/super_diff/rspec/inspection_tree_builders/object_having_attributes.rb +34 -0
  138. data/lib/super_diff/rspec/inspection_tree_builders/primitive.rb +9 -0
  139. data/lib/super_diff/rspec/inspection_tree_builders/value_within.rb +30 -0
  140. data/lib/super_diff/rspec/inspection_tree_builders.rb +40 -0
  141. data/lib/super_diff/rspec/object_inspection.rb +14 -4
  142. data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +4 -4
  143. data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +1 -1
  144. data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +1 -1
  145. data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +2 -2
  146. data/lib/super_diff/rspec.rb +20 -18
  147. data/lib/super_diff/version.rb +1 -1
  148. data/lib/super_diff.rb +70 -23
  149. data/spec/examples.txt +450 -543
  150. data/spec/spec_helper.rb +1 -0
  151. data/spec/support/integration/helpers.rb +4 -1
  152. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +1 -1
  153. data/spec/support/models/active_record/person.rb +8 -1
  154. data/spec/support/models/point.rb +7 -0
  155. data/spec/support/shared_examples/active_record.rb +5 -5
  156. data/spec/support/unit/helpers.rb +12 -1
  157. data/spec/support/unit/matchers/be_deprecated_in_favor_of.rb +39 -0
  158. data/spec/unit/active_record/object_inspection_spec.rb +5 -5
  159. data/spec/unit/basic/inspection_tree_builders/data_object_spec.rb +146 -0
  160. data/spec/unit/basic/operation_tree_builders/data_object_spec.rb +82 -0
  161. data/spec/unit/{operation_tree_flatteners → basic/operation_tree_flatteners}/array_spec.rb +8 -8
  162. data/spec/unit/{operation_tree_flatteners → basic/operation_tree_flatteners}/custom_object_spec.rb +9 -9
  163. data/spec/unit/{operation_tree_flatteners → basic/operation_tree_flatteners}/default_object_spec.rb +9 -9
  164. data/spec/unit/{operation_tree_flatteners → basic/operation_tree_flatteners}/hash_spec.rb +8 -8
  165. data/spec/unit/{operation_tree_flatteners → basic/operation_tree_flatteners}/multiline_string_spec.rb +4 -4
  166. data/spec/unit/core/configuration_no_rspec_spec.rb +58 -0
  167. data/spec/unit/core/configuration_spec.rb +176 -0
  168. data/spec/unit/{helpers_spec.rb → core/helpers_spec.rb} +2 -2
  169. data/spec/unit/{tiered_lines_elider_spec.rb → core/tiered_lines_elider_spec.rb} +2 -2
  170. data/spec/unit/{tiered_lines_formatter_spec.rb → core/tiered_lines_formatter_spec.rb} +1 -1
  171. data/spec/unit/deprecations_spec.rb +176 -0
  172. data/spec/unit/equality_matchers/main_spec.rb +5 -5
  173. data/super_diff.gemspec +10 -3
  174. metadata +144 -120
  175. data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_model.rb +0 -51
  176. data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_relation.rb +0 -36
  177. data/lib/super_diff/active_record/object_inspection/inspection_tree_builders.rb +0 -16
  178. data/lib/super_diff/active_support/object_inspection/inspection_tree_builders/hash_with_indifferent_access.rb +0 -46
  179. data/lib/super_diff/active_support/object_inspection/inspection_tree_builders/ordered_options.rb +0 -46
  180. data/lib/super_diff/active_support/object_inspection/inspection_tree_builders.rb +0 -16
  181. data/lib/super_diff/colorized_document_extensions.rb +0 -18
  182. data/lib/super_diff/configuration.rb +0 -149
  183. data/lib/super_diff/diff_formatters/collection.rb +0 -132
  184. data/lib/super_diff/diff_formatters/multiline_string.rb +0 -31
  185. data/lib/super_diff/differs/array.rb +0 -15
  186. data/lib/super_diff/differs/custom_object.rb +0 -17
  187. data/lib/super_diff/differs/date_like.rb +0 -15
  188. data/lib/super_diff/differs/default_object.rb +0 -19
  189. data/lib/super_diff/differs/defaults.rb +0 -13
  190. data/lib/super_diff/differs/empty.rb +0 -13
  191. data/lib/super_diff/differs/hash.rb +0 -15
  192. data/lib/super_diff/differs/main.rb +0 -31
  193. data/lib/super_diff/differs/multiline_string.rb +0 -16
  194. data/lib/super_diff/differs/time_like.rb +0 -15
  195. data/lib/super_diff/gem_version.rb +0 -45
  196. data/lib/super_diff/helpers.rb +0 -86
  197. data/lib/super_diff/implementation_checks.rb +0 -19
  198. data/lib/super_diff/line.rb +0 -83
  199. data/lib/super_diff/object_inspection/inspection_tree_builders/base.rb +0 -27
  200. data/lib/super_diff/object_inspection/inspection_tree_builders/defaults.rb +0 -15
  201. data/lib/super_diff/object_inspection/inspection_tree_builders/main.rb +0 -30
  202. data/lib/super_diff/object_inspection/inspection_tree_builders.rb +0 -48
  203. data/lib/super_diff/object_inspection/nodes.rb +0 -50
  204. data/lib/super_diff/object_inspection/prefix_for_next_node.rb +0 -6
  205. data/lib/super_diff/object_inspection/prelude_for_next_node.rb +0 -6
  206. data/lib/super_diff/operation_tree_builders/array.rb +0 -107
  207. data/lib/super_diff/operation_tree_builders/custom_object.rb +0 -40
  208. data/lib/super_diff/operation_tree_builders/date_like.rb +0 -15
  209. data/lib/super_diff/operation_tree_builders/default_object.rb +0 -119
  210. data/lib/super_diff/operation_tree_builders/defaults.rb +0 -5
  211. data/lib/super_diff/operation_tree_builders/hash.rb +0 -218
  212. data/lib/super_diff/operation_tree_builders/multiline_string.rb +0 -86
  213. data/lib/super_diff/operation_tree_builders/time_like.rb +0 -24
  214. data/lib/super_diff/operation_tree_flatteners/array.rb +0 -15
  215. data/lib/super_diff/operation_tree_flatteners/collection.rb +0 -136
  216. data/lib/super_diff/operation_tree_flatteners/custom_object.rb +0 -28
  217. data/lib/super_diff/operation_tree_flatteners/default_object.rb +0 -31
  218. data/lib/super_diff/operation_tree_flatteners/hash.rb +0 -33
  219. data/lib/super_diff/operation_tree_flatteners/multiline_string.rb +0 -18
  220. data/lib/super_diff/operation_trees/array.rb +0 -15
  221. data/lib/super_diff/operation_trees/custom_object.rb +0 -15
  222. data/lib/super_diff/operation_trees/default_object.rb +0 -40
  223. data/lib/super_diff/operation_trees/defaults.rb +0 -5
  224. data/lib/super_diff/operation_trees/hash.rb +0 -15
  225. data/lib/super_diff/operation_trees/main.rb +0 -35
  226. data/lib/super_diff/operation_trees/multiline_string.rb +0 -15
  227. data/lib/super_diff/recursion_guard.rb +0 -50
  228. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_containing_exactly.rb +0 -36
  229. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_including.rb +0 -42
  230. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb +0 -102
  231. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/generic_describable_matcher.rb +0 -19
  232. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/hash_including.rb +0 -42
  233. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/instance_of.rb +0 -27
  234. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/kind_of.rb +0 -27
  235. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/object_having_attributes.rb +0 -36
  236. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/primitive.rb +0 -10
  237. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/value_within.rb +0 -32
  238. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders.rb +0 -48
  239. data/lib/super_diff/tiered_lines.rb +0 -4
  240. data/lib/super_diff/tiered_lines_elider.rb +0 -462
  241. data/lib/super_diff/tiered_lines_formatter.rb +0 -75
  242. data/spec/internal/log/test.log +0 -0
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe SuperDiff::OperationTreeFlatteners::Hash do
3
+ RSpec.describe SuperDiff::Basic::OperationTreeFlatteners::Hash do
4
4
  context "given an empty tree" do
5
5
  it "returns a set of lines which are simply the open token and close token" do
6
6
  expect(described_class.call([])).to match(
@@ -30,7 +30,7 @@ RSpec.describe SuperDiff::OperationTreeFlatteners::Hash do
30
30
  it "returns a series of lines from inspecting each value, creating multiple lines upon encountering inner data structures" do
31
31
  collection = Array.new(3) { :some_value }
32
32
  operation_tree =
33
- SuperDiff::OperationTrees::Hash.new(
33
+ SuperDiff::Basic::OperationTrees::Hash.new(
34
34
  [
35
35
  double(
36
36
  :operation,
@@ -140,7 +140,7 @@ RSpec.describe SuperDiff::OperationTreeFlatteners::Hash do
140
140
  expected = Array.new(3) { :some_value }
141
141
  actual = Array.new(4) { :some_value }
142
142
  operation_tree =
143
- SuperDiff::OperationTrees::Hash.new(
143
+ SuperDiff::Basic::OperationTrees::Hash.new(
144
144
  [
145
145
  double(
146
146
  :operation,
@@ -280,7 +280,7 @@ RSpec.describe SuperDiff::OperationTreeFlatteners::Hash do
280
280
  collection = Array.new(3) { :some_value }
281
281
  subcollection = Array.new(2) { :some_value }
282
282
  operation_tree =
283
- SuperDiff::OperationTrees::Hash.new(
283
+ SuperDiff::Basic::OperationTrees::Hash.new(
284
284
  [
285
285
  double(
286
286
  :operation,
@@ -300,7 +300,7 @@ RSpec.describe SuperDiff::OperationTreeFlatteners::Hash do
300
300
  right_key: :baz,
301
301
  right_index: 1,
302
302
  children:
303
- SuperDiff::OperationTrees::Hash.new(
303
+ SuperDiff::Basic::OperationTrees::Hash.new(
304
304
  [
305
305
  double(
306
306
  :operation,
@@ -429,7 +429,7 @@ RSpec.describe SuperDiff::OperationTreeFlatteners::Hash do
429
429
  .tap { |collection| collection << right_collection }
430
430
 
431
431
  operation_tree =
432
- SuperDiff::OperationTrees::Hash.new(
432
+ SuperDiff::Basic::OperationTrees::Hash.new(
433
433
  [
434
434
  double(
435
435
  :operation,
@@ -529,7 +529,7 @@ RSpec.describe SuperDiff::OperationTreeFlatteners::Hash do
529
529
  Array.new(1) { :some_value }.tap { |coll| coll << right_subcollection }
530
530
 
531
531
  operation_tree =
532
- SuperDiff::OperationTrees::Hash.new(
532
+ SuperDiff::Basic::OperationTrees::Hash.new(
533
533
  [
534
534
  double(
535
535
  :operation,
@@ -549,7 +549,7 @@ RSpec.describe SuperDiff::OperationTreeFlatteners::Hash do
549
549
  right_key: :baz,
550
550
  right_index: 1,
551
551
  children:
552
- SuperDiff::OperationTrees::Hash.new(
552
+ SuperDiff::Basic::OperationTrees::Hash.new(
553
553
  [
554
554
  double(
555
555
  :operation,
@@ -1,9 +1,9 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe SuperDiff::OperationTreeFlatteners::MultilineString do
3
+ RSpec.describe SuperDiff::Basic::OperationTreeFlatteners::MultilineString do
4
4
  context "given an empty tree" do
5
5
  it "returns an empty set of lines" do
6
- operation_tree = SuperDiff::OperationTrees::MultilineString.new([])
6
+ operation_tree = SuperDiff::Basic::OperationTrees::MultilineString.new([])
7
7
  flattened_operation_tree = described_class.call(operation_tree)
8
8
  expect(flattened_operation_tree).to eq([])
9
9
  end
@@ -13,7 +13,7 @@ RSpec.describe SuperDiff::OperationTreeFlatteners::MultilineString do
13
13
  it "returns a series of lines from printing each value" do
14
14
  collection = Array.new(3) { :some_value }
15
15
  operation_tree =
16
- SuperDiff::OperationTrees::MultilineString.new(
16
+ SuperDiff::Basic::OperationTrees::MultilineString.new(
17
17
  [
18
18
  double(
19
19
  :operation,
@@ -73,7 +73,7 @@ RSpec.describe SuperDiff::OperationTreeFlatteners::MultilineString do
73
73
  it "returns a series of lines from printing each value" do
74
74
  collection = Array.new(3) { :some_value }
75
75
  operation_tree =
76
- SuperDiff::OperationTrees::MultilineString.new(
76
+ SuperDiff::Basic::OperationTrees::MultilineString.new(
77
77
  [
78
78
  double(
79
79
  :operation,
@@ -0,0 +1,58 @@
1
+ require "delegate"
2
+ require "super_diff"
3
+
4
+ class FakeTTYDecorator < SimpleDelegator
5
+ def initialize(obj, is_tty:)
6
+ super(obj)
7
+ @is_tty = is_tty
8
+ end
9
+
10
+ def isatty = @is_tty
11
+ def tty? = isatty
12
+ end
13
+
14
+ RSpec.describe SuperDiff::Core::Configuration, with_superdiff_rspec: false do
15
+ describe "#color_enabled?" do
16
+ it "is true when stdout is a TTY" do
17
+ original_stdout = $stdout
18
+ color_enabled = nil
19
+ begin
20
+ $stdout = FakeTTYDecorator.new(StringIO.new, is_tty: true)
21
+ color_enabled = SuperDiff.configuration.color_enabled?
22
+ ensure
23
+ $stdout = original_stdout
24
+ end
25
+ expect(color_enabled).to be(true)
26
+ end
27
+
28
+ it "is false when stdout is not a TTY but we are in CI" do
29
+ original_stdout = $stdout
30
+ original_ci = ENV["CI"]
31
+ color_enabled = nil
32
+ begin
33
+ $stdout = FakeTTYDecorator.new(StringIO.new, is_tty: false)
34
+ ENV["CI"] = "true"
35
+ color_enabled = SuperDiff.configuration.color_enabled?
36
+ ensure
37
+ $stdout = original_stdout
38
+ ENV["CI"] = original_ci
39
+ end
40
+ expect(color_enabled).to be(true)
41
+ end
42
+
43
+ it "is false when stdout is not a TTY and we are not in CI" do
44
+ original_stdout = $stdout
45
+ original_ci = ENV["CI"]
46
+ color_enabled = nil
47
+ begin
48
+ $stdout = FakeTTYDecorator.new(StringIO.new, is_tty: false)
49
+ ENV["CI"] = nil
50
+ color_enabled = SuperDiff.configuration.color_enabled?
51
+ ensure
52
+ $stdout = original_stdout
53
+ ENV["CI"] = original_ci
54
+ end
55
+ expect(color_enabled).to be(false)
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,176 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe SuperDiff::Core::Configuration do
4
+ it "maintains frozen instance variables" do
5
+ expect(described_class.new.instance_variables).to all(be_frozen)
6
+ end
7
+
8
+ describe ".new" do
9
+ context "when passed nothing" do
10
+ subject(:config) { described_class.new }
11
+
12
+ it "creates a Configuration object with reasonable defaults" do
13
+ expect(config.actual_color).to eq(:yellow)
14
+ end
15
+ end
16
+
17
+ context "when passed options" do
18
+ subject(:config) { described_class.new(actual_color: :cyan) }
19
+
20
+ it "overrides the defaults with the provided options" do
21
+ expect(config.actual_color).to eq(:cyan)
22
+ end
23
+
24
+ it "uses the defaults for other options" do
25
+ expect(config.border_color).to eq(:blue)
26
+ end
27
+ end
28
+ end
29
+
30
+ describe ".dup" do
31
+ subject(:duplicated_config) { original_config.dup }
32
+
33
+ let(:original_config) { described_class.new(overrides) }
34
+ let(:in_both) { Class.new }
35
+ let(:in_duplicated_only) { Class.new }
36
+ let(:in_original_only) { Class.new }
37
+
38
+ let(:overrides) do
39
+ {
40
+ extra_diff_formatter_classes: [],
41
+ extra_differ_classes: [],
42
+ extra_inspection_tree_builder_classes: [],
43
+ extra_operation_tree_builder_classes: [],
44
+ extra_operation_tree_classes: []
45
+ }
46
+ end
47
+
48
+ %i[
49
+ diff_formatter
50
+ differ
51
+ operation_tree_builder
52
+ operation_tree
53
+ inspection_tree_builder
54
+ ].each do |object_type|
55
+ it "duplicates extra #{object_type.to_s.tr("_", " ")} classes" do
56
+ add_method_name = :"add_extra_#{object_type}_class"
57
+ get_method_name = :"extra_#{object_type}_classes"
58
+
59
+ original_config.send(add_method_name, in_both)
60
+ expect {
61
+ duplicated_config.send(get_method_name) << in_duplicated_only
62
+ }.to raise_error(FrozenError)
63
+ duplicated_config.send(add_method_name, in_duplicated_only)
64
+ original_config.send(add_method_name, in_original_only)
65
+
66
+ expect(original_config.send(get_method_name)).to include(
67
+ in_both,
68
+ in_original_only
69
+ )
70
+ expect(original_config.send(get_method_name)).not_to include(
71
+ in_duplicated_only
72
+ )
73
+
74
+ expect(duplicated_config.send(get_method_name)).to include(
75
+ in_both,
76
+ in_duplicated_only
77
+ )
78
+ expect(duplicated_config.send(get_method_name)).not_to include(
79
+ in_original_only
80
+ )
81
+ end
82
+ end
83
+ end
84
+
85
+ %i[
86
+ diff_formatter
87
+ differ
88
+ operation_tree_builder
89
+ operation_tree
90
+ inspection_tree_builder
91
+ ].each do |object_type|
92
+ describe "#add_extra_#{object_type}_classes" do
93
+ let(:config) { described_class.new }
94
+ let(:new_class1) { Class.new }
95
+ let(:new_class2) { Class.new }
96
+
97
+ it "appends multiple given classes" do
98
+ config.send("add_extra_#{object_type}_classes", new_class1, new_class2)
99
+ expect(config.send("extra_#{object_type}_classes")[-2..]).to eq(
100
+ [new_class1, new_class2]
101
+ )
102
+ end
103
+
104
+ it "appends a single given class" do
105
+ config.send("add_extra_#{object_type}_classes", new_class1)
106
+ expect(config.send("extra_#{object_type}_classes")[-1]).to eq(
107
+ new_class1
108
+ )
109
+ end
110
+ end
111
+
112
+ describe "#prepend_extra_#{object_type}_classes" do
113
+ let(:config) { described_class.new }
114
+ let(:new_class1) { Class.new }
115
+ let(:new_class2) { Class.new }
116
+
117
+ it "prepends multiple given classes" do
118
+ config.send(
119
+ "prepend_extra_#{object_type}_classes",
120
+ new_class1,
121
+ new_class2
122
+ )
123
+ expect(config.send("extra_#{object_type}_classes")[..1]).to eq(
124
+ [new_class1, new_class2]
125
+ )
126
+ end
127
+
128
+ it "prepends a single given class" do
129
+ config.send("prepend_extra_#{object_type}_classes", new_class1)
130
+ expect(config.send("extra_#{object_type}_classes")[0]).to eq(new_class1)
131
+ end
132
+ end
133
+ end
134
+
135
+ describe "#color_enabled?" do
136
+ context "when explicitly set" do
137
+ it "equals what was set" do
138
+ [true, false].each do |value|
139
+ SuperDiff.configuration.color_enabled.tap do |original|
140
+ SuperDiff.configuration.color_enabled = value
141
+ expect(SuperDiff.configuration.color_enabled?).to be(value)
142
+ SuperDiff.configuration.color_enabled = original
143
+ end
144
+ end
145
+ end
146
+ end
147
+
148
+ context "when not explicitly set" do
149
+ context 'when ENV["CI"] is true' do
150
+ it "is true" do
151
+ color_enabled = nil
152
+ ClimateControl.modify(CI: "true") do
153
+ color_enabled = SuperDiff.configuration.color_enabled?
154
+ end
155
+ expect(color_enabled).to be(true)
156
+ end
157
+ end
158
+
159
+ context 'when ENV["CI"] is not true' do
160
+ it "defaults to RSpec's config" do
161
+ ClimateControl.modify(CI: nil) do
162
+ %i[automatic on off].each do |value|
163
+ RSpec.configuration.color_mode.tap do |original|
164
+ RSpec.configuration.color_mode = value
165
+ expect(SuperDiff.configuration.color_enabled?).to eq(
166
+ RSpec.configuration.color_enabled?
167
+ )
168
+ RSpec.configuration.color_mode = original
169
+ end
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end
176
+ end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe SuperDiff::Helpers do
3
+ RSpec.describe SuperDiff::Core::Helpers do
4
4
  shared_examples "helper tests" do
5
5
  describe "with_slice_of_array_replaced" do
6
6
  context "if the given range covers the whole array" do
@@ -32,7 +32,7 @@ RSpec.describe SuperDiff::Helpers do
32
32
  end
33
33
 
34
34
  describe "object_address_for" do
35
- if SuperDiff::Helpers.ruby_version_matches?(">= 2.7.0")
35
+ if SuperDiff::Core::Helpers.ruby_version_matches?(">= 2.7.0")
36
36
  it "returns an empty string for Floats" do
37
37
  expect(helper.object_address_for(1.0)).to eq("")
38
38
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe SuperDiff::TieredLinesElider, type: :unit do
3
+ RSpec.describe SuperDiff::Core::TieredLinesElider, type: :unit do
4
4
  context "and the gem is configured with :diff_elision_maximum" do
5
5
  context "and :diff_elision_maximum is more than 0" do
6
6
  context "and the line tree contains a section of noops that does not span more than the maximum" do
@@ -6299,7 +6299,7 @@ RSpec.describe SuperDiff::TieredLinesElider, type: :unit do
6299
6299
 
6300
6300
  def an_actual_line(**args)
6301
6301
  add_comma = args.delete(:add_comma?) { false }
6302
- SuperDiff::Line.new(**args, add_comma: add_comma)
6302
+ SuperDiff::Core::Line.new(**args, add_comma: add_comma)
6303
6303
  end
6304
6304
 
6305
6305
  def an_expected_line(type:, indentation_level:, value:, children: [], **rest)
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe SuperDiff::TieredLinesFormatter, type: :unit do
3
+ RSpec.describe SuperDiff::Core::TieredLinesFormatter, type: :unit do
4
4
  it "formats the given lines as an array of strings with appropriate colors and indentation" do
5
5
  tiered_lines = [
6
6
  line(type: :noop, indentation_level: 0, value: "["),
@@ -0,0 +1,176 @@
1
+ require "spec_helper"
2
+
3
+ # stree-ignore
4
+ common_constant_remappings = {
5
+ "SuperDiff::ColorizedDocumentExtensions" => "SuperDiff::Core::ColorizedDocumentExtensions",
6
+ "SuperDiff::Configuration" => "SuperDiff::Core::Configuration",
7
+ # TODO: Add back?
8
+ # "SuperDiff::DiffFormatters::Collection" => "SuperDiff::Basic::DiffFormatters::Collection",
9
+ # "SuperDiff::DiffFormatters::MultilineString" => "SuperDiff::Basic::DiffFormatters::MultilineString",
10
+ "SuperDiff::Differs::Array" => "SuperDiff::Basic::Differs::Array",
11
+ "SuperDiff::Differs::Base" => "SuperDiff::Core::AbstractDiffer",
12
+ "SuperDiff::Differs::CustomObject" => "SuperDiff::Basic::Differs::CustomObject",
13
+ "SuperDiff::Differs::DateLike" => "SuperDiff::Basic::Differs::DateLike",
14
+ "SuperDiff::Differs::DefaultObject" => "SuperDiff::Basic::Differs::DefaultObject",
15
+ "SuperDiff::Differs::Hash" => "SuperDiff::Basic::Differs::Hash",
16
+ "SuperDiff::Differs::MultilineString" => "SuperDiff::Basic::Differs::MultilineString",
17
+ "SuperDiff::Differs::TimeLike" => "SuperDiff::Basic::Differs::TimeLike",
18
+ "SuperDiff::Errors::NoDifferAvailableError" => "SuperDiff::Core::NoDifferAvailableError",
19
+ "SuperDiff::GemVersion" => "SuperDiff::Core::GemVersion",
20
+ "SuperDiff::Helpers" => "SuperDiff::Core::Helpers",
21
+ "SuperDiff::ImplementationChecks" => "SuperDiff::Core::ImplementationChecks",
22
+ "SuperDiff::Line" => "SuperDiff::Core::Line",
23
+ "SuperDiff::ObjectInspection::InspectionTree" => "SuperDiff::Core::InspectionTree",
24
+ "SuperDiff::ObjectInspection::InspectionTreeBuilders::Array" => "SuperDiff::Basic::InspectionTreeBuilders::Array",
25
+ "SuperDiff::ObjectInspection::InspectionTreeBuilders::Base" => "SuperDiff::Core::AbstractInspectionTreeBuilder",
26
+ "SuperDiff::ObjectInspection::InspectionTreeBuilders::CustomObject" => "SuperDiff::Basic::InspectionTreeBuilders::CustomObject",
27
+ "SuperDiff::ObjectInspection::InspectionTreeBuilders::DateLike" => "SuperDiff::Basic::InspectionTreeBuilders::DateLike",
28
+ "SuperDiff::ObjectInspection::InspectionTreeBuilders::DefaultObject" => "SuperDiff::Basic::InspectionTreeBuilders::DefaultObject",
29
+ "SuperDiff::ObjectInspection::InspectionTreeBuilders::Hash" => "SuperDiff::Basic::InspectionTreeBuilders::Hash",
30
+ "SuperDiff::ObjectInspection::InspectionTreeBuilders::Primitive" => "SuperDiff::Basic::InspectionTreeBuilders::Primitive",
31
+ "SuperDiff::ObjectInspection::InspectionTreeBuilders::TimeLike" => "SuperDiff::Basic::InspectionTreeBuilders::TimeLike",
32
+ "SuperDiff::ObjectInspection::Nodes::AsLinesWhenRenderingToLines" => "SuperDiff::Core::InspectionTreeNodes::AsLinesWhenRenderingToLines",
33
+ "SuperDiff::ObjectInspection::Nodes::AsPrefixWhenRenderingToLines" => "SuperDiff::Core::InspectionTreeNodes::AsPrefixWhenRenderingToLines",
34
+ "SuperDiff::ObjectInspection::Nodes::AsPreludeWhenRenderingToLines" => "SuperDiff::Core::InspectionTreeNodes::AsPreludeWhenRenderingToLines",
35
+ "SuperDiff::ObjectInspection::Nodes::AsSingleLine" => "SuperDiff::Core::InspectionTreeNodes::AsSingleLine",
36
+ "SuperDiff::ObjectInspection::Nodes::Base" => "SuperDiff::Core::InspectionTreeNodes::Base",
37
+ "SuperDiff::ObjectInspection::Nodes::Inspection" => "SuperDiff::Core::InspectionTreeNodes::Inspection",
38
+ "SuperDiff::ObjectInspection::Nodes::Nesting" => "SuperDiff::Core::InspectionTreeNodes::Nesting",
39
+ "SuperDiff::ObjectInspection::Nodes::OnlyWhen" => "SuperDiff::Core::InspectionTreeNodes::OnlyWhen",
40
+ "SuperDiff::ObjectInspection::Nodes::Text" => "SuperDiff::Core::InspectionTreeNodes::Text",
41
+ "SuperDiff::ObjectInspection::Nodes::WhenEmpty" => "SuperDiff::Core::InspectionTreeNodes::WhenEmpty",
42
+ "SuperDiff::ObjectInspection::Nodes::WhenNonEmpty" => "SuperDiff::Core::InspectionTreeNodes::WhenNonEmpty",
43
+ "SuperDiff::ObjectInspection::Nodes::WhenRenderingToLines" => "SuperDiff::Core::InspectionTreeNodes::WhenRenderingToLines",
44
+ "SuperDiff::ObjectInspection::Nodes::WhenRenderingToString" => "SuperDiff::Core::InspectionTreeNodes::WhenRenderingToString",
45
+ "SuperDiff::ObjectInspection::PrefixForNextNode" => "SuperDiff::Core::PrefixForNextInspectionTreeNode",
46
+ "SuperDiff::ObjectInspection::PreludeForNextNode" => "SuperDiff::Core::PreludeForNextInspectionTreeNode",
47
+ "SuperDiff::OperationTreeBuilders::Array" => "SuperDiff::Basic::OperationTreeBuilders::Array",
48
+ "SuperDiff::OperationTreeBuilders::Base" => "SuperDiff::Core::AbstractOperationTreeBuilder",
49
+ "SuperDiff::OperationTreeBuilders::CustomObject" => "SuperDiff::Basic::OperationTreeBuilders::CustomObject",
50
+ "SuperDiff::OperationTreeBuilders::DateLike" => "SuperDiff::Basic::OperationTreeBuilders::DateLike",
51
+ "SuperDiff::OperationTreeBuilders::DefaultObject" => "SuperDiff::Basic::OperationTreeBuilders::DefaultObject",
52
+ "SuperDiff::OperationTreeBuilders::Hash" => "SuperDiff::Basic::OperationTreeBuilders::Hash",
53
+ "SuperDiff::OperationTreeBuilders::MultilineString" => "SuperDiff::Basic::OperationTreeBuilders::MultilineString",
54
+ "SuperDiff::OperationTreeBuilders::TimeLike" => "SuperDiff::Basic::OperationTreeBuilders::TimeLike",
55
+ "SuperDiff::OperationTreeFlatteners::Array" => "SuperDiff::Basic::OperationTreeFlatteners::Array",
56
+ "SuperDiff::OperationTreeFlatteners::Base" => "SuperDiff::Core::AbstractOperationTreeFlattener",
57
+ "SuperDiff::OperationTreeFlatteners::Collection" => "SuperDiff::Basic::OperationTreeFlatteners::Collection",
58
+ "SuperDiff::OperationTreeFlatteners::CustomObject" => "SuperDiff::Basic::OperationTreeFlatteners::CustomObject",
59
+ "SuperDiff::OperationTreeFlatteners::DefaultObject" => "SuperDiff::Basic::OperationTreeFlatteners::DefaultObject",
60
+ "SuperDiff::OperationTreeFlatteners::Hash" => "SuperDiff::Basic::OperationTreeFlatteners::Hash",
61
+ "SuperDiff::OperationTreeFlatteners::MultilineString" => "SuperDiff::Basic::OperationTreeFlatteners::MultilineString",
62
+ "SuperDiff::OperationTrees::Array" => "SuperDiff::Basic::OperationTrees::Array",
63
+ "SuperDiff::OperationTrees::Base" => "SuperDiff::Core::AbstractOperationTree",
64
+ "SuperDiff::OperationTrees::CustomObject" => "SuperDiff::Basic::OperationTrees::CustomObject",
65
+ "SuperDiff::OperationTrees::DefaultObject" => "SuperDiff::Basic::OperationTrees::DefaultObject",
66
+ "SuperDiff::OperationTrees::Hash" => "SuperDiff::Basic::OperationTrees::Hash",
67
+ "SuperDiff::OperationTrees::MultilineString" => "SuperDiff::Basic::OperationTrees::MultilineString",
68
+ "SuperDiff::Operations::BinaryOperation" => "SuperDiff::Core::BinaryOperation",
69
+ "SuperDiff::Operations::UnaryOperation" => "SuperDiff::Core::UnaryOperation",
70
+ "SuperDiff::RSpec::ObjectInspection::InspectionTreeBuilders::CollectionContainingExactly" => "SuperDiff::RSpec::InspectionTreeBuilders::CollectionContainingExactly",
71
+ "SuperDiff::RSpec::ObjectInspection::InspectionTreeBuilders::CollectionIncluding" => "SuperDiff::RSpec::InspectionTreeBuilders::CollectionIncluding",
72
+ "SuperDiff::RSpec::ObjectInspection::InspectionTreeBuilders::Double" => "SuperDiff::RSpec::InspectionTreeBuilders::Double",
73
+ "SuperDiff::RSpec::ObjectInspection::InspectionTreeBuilders::GenericDescribableMatcher" => "SuperDiff::RSpec::InspectionTreeBuilders::GenericDescribableMatcher",
74
+ "SuperDiff::RSpec::ObjectInspection::InspectionTreeBuilders::HashIncluding" => "SuperDiff::RSpec::InspectionTreeBuilders::HashIncluding",
75
+ "SuperDiff::RSpec::ObjectInspection::InspectionTreeBuilders::InstanceOf" => "SuperDiff::RSpec::InspectionTreeBuilders::InstanceOf",
76
+ "SuperDiff::RSpec::ObjectInspection::InspectionTreeBuilders::KindOf" => "SuperDiff::RSpec::InspectionTreeBuilders::KindOf",
77
+ "SuperDiff::RSpec::ObjectInspection::InspectionTreeBuilders::ObjectHavingAttributes" => "SuperDiff::RSpec::InspectionTreeBuilders::ObjectHavingAttributes",
78
+ "SuperDiff::RSpec::ObjectInspection::InspectionTreeBuilders::Primitive" => "SuperDiff::RSpec::InspectionTreeBuilders::Primitive",
79
+ "SuperDiff::RSpec::ObjectInspection::InspectionTreeBuilders::ValueWithin" => "SuperDiff::RSpec::InspectionTreeBuilders::ValueWithin",
80
+ "SuperDiff::RecursionGuard" => "SuperDiff::Core::RecursionGuard",
81
+ "SuperDiff::TieredLines" => "SuperDiff::Core::TieredLines",
82
+ "SuperDiff::TieredLinesElider" => "SuperDiff::Core::TieredLinesElider",
83
+ "SuperDiff::TieredLinesFormatter" => "SuperDiff::Core::TieredLinesFormatter",
84
+ }
85
+
86
+ # stree-ignore
87
+ active_record_constant_remappings = {
88
+ "SuperDiff::ActiveRecord::ObjectInspection::InspectionTreeBuilders::ActiveRecordModel" => "SuperDiff::ActiveRecord::InspectionTreeBuilders::ActiveRecordModel",
89
+ "SuperDiff::ActiveRecord::ObjectInspection::InspectionTreeBuilders::ActiveRecordRelation" => "SuperDiff::ActiveRecord::InspectionTreeBuilders::ActiveRecordRelation",
90
+ }
91
+
92
+ # stree-ignore
93
+ active_support_constant_remappings = {
94
+ "SuperDiff::ActiveSupport::ObjectInspection::InspectionTreeBuilders::HashWithIndifferentAccess" => "SuperDiff::ActiveSupport::InspectionTreeBuilders::HashWithIndifferentAccess",
95
+ "SuperDiff::ActiveSupport::ObjectInspection::InspectionTreeBuilders::OrderedOptions" => "SuperDiff::ActiveSupport::InspectionTreeBuilders::OrderedOptions",
96
+ }
97
+
98
+ common_constant_remappings.each do |old_constant_name, new_constant_name|
99
+ RSpec.describe old_constant_name, type: :unit do
100
+ it "maps to #{new_constant_name}" do
101
+ capture_warnings do
102
+ expect(Object.const_get(old_constant_name)).to be(
103
+ Object.const_get(new_constant_name)
104
+ )
105
+ end
106
+ end
107
+
108
+ it "points users to #{new_constant_name} instead" do
109
+ expect(old_constant_name).to be_deprecated_in_favor_of(new_constant_name)
110
+ end
111
+ end
112
+ end
113
+
114
+ active_record_constant_remappings.each do |old_constant_name, new_constant_name|
115
+ RSpec.describe old_constant_name, type: :unit, active_record: true do
116
+ it "maps to #{new_constant_name}" do
117
+ capture_warnings do
118
+ expect(Object.const_get(old_constant_name)).to be(
119
+ Object.const_get(new_constant_name)
120
+ )
121
+ end
122
+ end
123
+
124
+ it "points users to #{new_constant_name} instead" do
125
+ expect(old_constant_name).to be_deprecated_in_favor_of(new_constant_name)
126
+ end
127
+ end
128
+ end
129
+
130
+ active_support_constant_remappings.each do |old_constant_name, new_constant_name|
131
+ RSpec.describe old_constant_name, type: :unit, active_support: true do
132
+ it "maps to #{new_constant_name}" do
133
+ capture_warnings do
134
+ expect(Object.const_get(old_constant_name)).to be(
135
+ Object.const_get(new_constant_name)
136
+ )
137
+ end
138
+ end
139
+
140
+ it "points users to #{new_constant_name} instead" do
141
+ expect(old_constant_name).to be_deprecated_in_favor_of(new_constant_name)
142
+ end
143
+ end
144
+ end
145
+
146
+ RSpec.describe "SuperDiff::Differs::Main.call", type: :unit do
147
+ it "maps to SuperDiff.diff" do
148
+ capture_warnings do
149
+ diff_before = SuperDiff::Differs::Main.call(1, 2)
150
+ diff_after = SuperDiff.diff(1, 2)
151
+ expect(diff_before).to eq(diff_after)
152
+ end
153
+ end
154
+ end
155
+
156
+ RSpec.describe "SuperDiff::OperationTreeBuilders::Main.call", type: :unit do
157
+ it "maps to SuperDiff.build_operation_tree_for" do
158
+ capture_warnings do
159
+ operation_tree_builder_before =
160
+ SuperDiff::OperationTreeBuilders::Main.call(1, 2)
161
+ operation_tree_builder_after = SuperDiff.build_operation_tree_for(1, 2)
162
+ expect(operation_tree_builder_before).to eq(operation_tree_builder_after)
163
+ end
164
+ end
165
+ end
166
+
167
+ RSpec.describe "SuperDiff::OperationTrees::Main.call", type: :unit do
168
+ it "maps to SuperDiff.find_operation_tree_for" do
169
+ capture_warnings do
170
+ operation_tree_before =
171
+ SuperDiff::OperationTrees::Main.call(%i[foo bar baz])
172
+ operation_tree_after = SuperDiff.find_operation_tree_for(%i[foo bar baz])
173
+ expect(operation_tree_before).to eq(operation_tree_after)
174
+ end
175
+ end
176
+ end
@@ -1598,8 +1598,8 @@ RSpec.describe SuperDiff::EqualityMatchers::Main, type: :unit do
1598
1598
 
1599
1599
  #{
1600
1600
  colored do
1601
- expected_line %(Expected: #<SuperDiff::Test::Player:#{SuperDiff::Helpers.object_address_for(expected)} @character="mirage", @handle="martymcfly", @health=0.3, @inventory=["flatline", "purple body shield"], @shields=0.6, @ultimate=0.8>)
1602
- actual_line %( Actual: #<SuperDiff::Test::Player:#{SuperDiff::Helpers.object_address_for(actual)} @character="lifeline", @handle="docbrown", @health=0.3, @inventory=["wingman", "mastiff"], @shields=0.6, @ultimate=0.8>)
1601
+ expected_line %(Expected: #<SuperDiff::Test::Player:#{SuperDiff::Core::Helpers.object_address_for(expected)} @character="mirage", @handle="martymcfly", @health=0.3, @inventory=["flatline", "purple body shield"], @shields=0.6, @ultimate=0.8>)
1602
+ actual_line %( Actual: #<SuperDiff::Test::Player:#{SuperDiff::Core::Helpers.object_address_for(actual)} @character="lifeline", @handle="docbrown", @health=0.3, @inventory=["wingman", "mastiff"], @shields=0.6, @ultimate=0.8>)
1603
1603
  end
1604
1604
  }
1605
1605
 
@@ -1607,7 +1607,7 @@ RSpec.describe SuperDiff::EqualityMatchers::Main, type: :unit do
1607
1607
 
1608
1608
  #{
1609
1609
  colored do
1610
- plain_line %( #<SuperDiff::Test::Player:#{SuperDiff::Helpers.object_address_for(actual)} {)
1610
+ plain_line %( #<SuperDiff::Test::Player:#{SuperDiff::Core::Helpers.object_address_for(actual)} {)
1611
1611
  expected_line %(- @character="mirage",)
1612
1612
  actual_line %(+ @character="lifeline",)
1613
1613
  expected_line %(- @handle="martymcfly",)
@@ -1677,8 +1677,8 @@ RSpec.describe SuperDiff::EqualityMatchers::Main, type: :unit do
1677
1677
 
1678
1678
  #{
1679
1679
  colored do
1680
- expected_line %(Expected: #<SuperDiff::Test::Item:#{SuperDiff::Helpers.object_address_for(expected)} @name="camera", @quantity=3>)
1681
- actual_line %( Actual: #<SuperDiff::Test::Player:#{SuperDiff::Helpers.object_address_for(actual)} @character="Jon", @handle="mcmire", @health=4, @inventory=["sword"], @shields=11.4, @ultimate=true>)
1680
+ expected_line %(Expected: #<SuperDiff::Test::Item:#{SuperDiff::Core::Helpers.object_address_for(expected)} @name="camera", @quantity=3>)
1681
+ actual_line %( Actual: #<SuperDiff::Test::Player:#{SuperDiff::Core::Helpers.object_address_for(actual)} @character="Jon", @handle="mcmire", @health=4, @inventory=["sword"], @shields=11.4, @ultimate=true>)
1682
1682
  end
1683
1683
  }
1684
1684
  STR
data/super_diff.gemspec CHANGED
@@ -3,9 +3,9 @@ require File.expand_path("lib/super_diff/version", __dir__)
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "super_diff"
5
5
  s.version = SuperDiff::VERSION
6
- s.authors = ["Elliot Winkler"]
7
- s.email = ["elliot.winkler@gmail.com"]
8
- s.homepage = "https://github.com/mcmire/super_diff"
6
+ s.authors = ["Elliot Winkler", "Splitwise, Inc."]
7
+ s.email = ["oss-community@splitwise.com"]
8
+ s.homepage = "https://github.com/splitwise/super_diff"
9
9
  s.summary =
10
10
  "A better way to view differences between complex data structures in RSpec."
11
11
  s.license = "MIT"
@@ -13,6 +13,13 @@ Gem::Specification.new do |s|
13
13
  SuperDiff is a gem that hooks into RSpec to intelligently display the
14
14
  differences between two data structures of any type.
15
15
  DESC
16
+ s.metadata = {
17
+ "bug_tracker_uri" => "https://github.com/splitwise/super_diff/issues",
18
+ "changelog_uri" =>
19
+ "https://github.com/splitwise/super_diff/blob/main/CHANGELOG.md",
20
+ "rubygems_mfa_required" => "true",
21
+ "source_code_uri" => "https://github.com/splitwise/super_diff"
22
+ }
16
23
  s.required_ruby_version = ">= 3"
17
24
 
18
25
  s.files = %w[README.md super_diff.gemspec] + Dir["lib/**/*"]