super_diff 0.12.1 → 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 (272) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -19
  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 +42 -0
  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 +3 -1
  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 +18 -8
  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 +20 -0
  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 +15 -9
  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 +12 -7
  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 +23 -43
  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 +14 -12
  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 -42
  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 +3 -1
  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 -27
  185. data/super_diff.gemspec +20 -18
  186. metadata +15 -182
  187. data/spec/examples.txt +0 -704
  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/internal/log/test.log +0 -0
  211. data/spec/spec_helper.rb +0 -90
  212. data/spec/support/colorizer.rb +0 -9
  213. data/spec/support/command_runner.rb +0 -253
  214. data/spec/support/helpers.rb +0 -21
  215. data/spec/support/integration/helpers.rb +0 -124
  216. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +0 -104
  217. data/spec/support/integration/matchers.rb +0 -177
  218. data/spec/support/integration/test_programs/base.rb +0 -143
  219. data/spec/support/integration/test_programs/plain.rb +0 -19
  220. data/spec/support/integration/test_programs/rspec_active_record.rb +0 -20
  221. data/spec/support/integration/test_programs/rspec_active_support.rb +0 -20
  222. data/spec/support/integration/test_programs/rspec_rails.rb +0 -20
  223. data/spec/support/integration/test_programs/rspec_rails_engine.rb +0 -20
  224. data/spec/support/models/a.rb +0 -11
  225. data/spec/support/models/active_record/person.rb +0 -28
  226. data/spec/support/models/active_record/query.rb +0 -15
  227. data/spec/support/models/active_record/shipping_address.rb +0 -24
  228. data/spec/support/models/customer.rb +0 -22
  229. data/spec/support/models/empty_class.rb +0 -6
  230. data/spec/support/models/item.rb +0 -10
  231. data/spec/support/models/order.rb +0 -9
  232. data/spec/support/models/person.rb +0 -20
  233. data/spec/support/models/player.rb +0 -30
  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/operation_tree_flatteners/array_spec.rb +0 -637
  246. data/spec/unit/basic/operation_tree_flatteners/custom_object_spec.rb +0 -685
  247. data/spec/unit/basic/operation_tree_flatteners/default_object_spec.rb +0 -685
  248. data/spec/unit/basic/operation_tree_flatteners/hash_spec.rb +0 -671
  249. data/spec/unit/basic/operation_tree_flatteners/multiline_string_spec.rb +0 -131
  250. data/spec/unit/core/helpers_spec.rb +0 -68
  251. data/spec/unit/core/tiered_lines_elider_spec.rb +0 -6328
  252. data/spec/unit/core/tiered_lines_formatter_spec.rb +0 -131
  253. data/spec/unit/deprecations_spec.rb +0 -176
  254. data/spec/unit/equality_matchers/main_spec.rb +0 -1842
  255. data/spec/unit/rspec/matchers/be_compared_to_spec.rb +0 -23
  256. data/spec/unit/rspec/matchers/be_falsey_spec.rb +0 -9
  257. data/spec/unit/rspec/matchers/be_nil_spec.rb +0 -9
  258. data/spec/unit/rspec/matchers/be_predicate_spec.rb +0 -31
  259. data/spec/unit/rspec/matchers/be_spec.rb +0 -17
  260. data/spec/unit/rspec/matchers/be_truthy_spec.rb +0 -9
  261. data/spec/unit/rspec/matchers/contain_exactly_spec.rb +0 -11
  262. data/spec/unit/rspec/matchers/eq_spec.rb +0 -9
  263. data/spec/unit/rspec/matchers/have_attributes_spec.rb +0 -11
  264. data/spec/unit/rspec/matchers/have_predicate_spec.rb +0 -21
  265. data/spec/unit/rspec/matchers/include_spec.rb +0 -21
  266. data/spec/unit/rspec/matchers/match_array_spec.rb +0 -11
  267. data/spec/unit/rspec/matchers/match_spec.rb +0 -9
  268. data/spec/unit/rspec/matchers/raise_error_spec.rb +0 -77
  269. data/spec/unit/rspec/matchers/respond_to_spec.rb +0 -85
  270. data/spec/unit/rspec/object_inspection/rspec_matcher_spec.rb +0 -91
  271. data/spec/unit/rspec/object_inspection_spec.rb +0 -471
  272. data/spec/unit/super_diff_spec.rb +0 -2115
@@ -1,23 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `be` matcher used with an operator" do
4
- describe "#description" do
5
- %i[== === =~].each do |operator|
6
- context "when the operator is #{operator}" do
7
- it "returns the correct output" do
8
- expect(be.public_send(operator, 2).description).to eq("#{operator} 2")
9
- end
10
- end
11
- end
12
-
13
- %i[< <= >= >].each do |operator|
14
- context "when the operator is #{operator}" do
15
- it "returns the correct output" do
16
- expect(be.public_send(operator, 2).description).to eq(
17
- "be #{operator} 2"
18
- )
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,9 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `be_truthy` matcher" do
4
- describe "#description" do
5
- it "returns the correct output" do
6
- expect(be_falsey.description).to eq("be falsey")
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `be_nil` matcher" do
4
- describe "#description" do
5
- it "returns the correct output" do
6
- expect(be_nil.description).to eq("be nil")
7
- end
8
- end
9
- end
@@ -1,31 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `be_<predicate>` matcher" do
4
- describe "#description" do
5
- it "returns the correct output" do
6
- expect(be_famous.description).to eq(
7
- "return true for `famous?` or `famouss?`"
8
- )
9
- end
10
- end
11
- end
12
-
13
- RSpec.describe "RSpec's `be_a_<predicate>` matcher" do
14
- describe "#description" do
15
- it "returns the correct output" do
16
- expect(be_a_big_big_star.description).to eq(
17
- "return true for `big_big_star?` or `big_big_stars?`"
18
- )
19
- end
20
- end
21
- end
22
-
23
- RSpec.describe "RSpec's `be_an_<predicate>` matcher" do
24
- describe "#description" do
25
- it "returns the correct output" do
26
- expect(be_an_open_book.description).to eq(
27
- "return true for `open_book?` or `open_books?`"
28
- )
29
- end
30
- end
31
- end
@@ -1,17 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `be` matcher" do
4
- describe "#description" do
5
- context "given nothing" do
6
- it "returns the correct output" do
7
- expect(be.description).to eq("be truthy")
8
- end
9
- end
10
-
11
- context "given an argument" do
12
- it "returns the correct output" do
13
- expect(be(:foo).description).to eq("equal :foo")
14
- end
15
- end
16
- end
17
- end
@@ -1,9 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `be_truthy` matcher" do
4
- describe "#description" do
5
- it "returns the correct output" do
6
- expect(be_truthy.description).to eq("be truthy")
7
- end
8
- end
9
- end
@@ -1,11 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `contain_exactly` matcher" do
4
- describe "#description" do
5
- it "returns the correct output" do
6
- expect(contain_exactly(:foo, :bar, :baz).description).to eq(
7
- "contain exactly :foo, :bar and :baz"
8
- )
9
- end
10
- end
11
- end
@@ -1,9 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `eq` matcher" do
4
- describe "#description" do
5
- it "returns the correct output" do
6
- expect(eq(:foo).description).to eq("eq :foo")
7
- end
8
- end
9
- end
@@ -1,11 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `have_attributes` matcher" do
4
- describe "#description" do
5
- it "returns the correct output" do
6
- expect(have_attributes(foo: "bar", baz: "qux").description).to eq(
7
- %|have attributes (foo: "bar", baz: "qux")|
8
- )
9
- end
10
- end
11
- end
@@ -1,21 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `have_<predicate>` matcher" do
4
- describe "#description" do
5
- context "given nothing" do
6
- it "returns the correct output" do
7
- expect(have_experience.description).to eq(
8
- "return true for `has_experience?`"
9
- )
10
- end
11
- end
12
-
13
- context "given an argument" do
14
- it "returns the correct output" do
15
- expect(have_ingredients(:sugar).description).to eq(
16
- "return true for `has_ingredients?(:sugar)`"
17
- )
18
- end
19
- end
20
- end
21
- end
@@ -1,21 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `include` matcher" do
4
- describe "#description" do
5
- context "given a list of items" do
6
- it "returns the correct output" do
7
- expect(include(:foo, :bar, :baz).description).to eq(
8
- "include :foo, :bar, and :baz"
9
- )
10
- end
11
- end
12
-
13
- context "given a hash" do
14
- it "returns the correct output" do
15
- expect(include(foo: "bar", baz: "qux").description).to eq(
16
- 'include (foo: "bar", baz: "qux")'
17
- )
18
- end
19
- end
20
- end
21
- end
@@ -1,11 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `match_array` matcher" do
4
- describe "#description" do
5
- it "returns the correct output" do
6
- expect(match_array(%i[foo bar baz]).description).to eq(
7
- "match array with :foo, :bar and :baz"
8
- )
9
- end
10
- end
11
- end
@@ -1,9 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `match` matcher" do
4
- describe "#description" do
5
- it "returns the correct output" do
6
- expect(match(:foo).description).to eq("match :foo")
7
- end
8
- end
9
- end
@@ -1,77 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `raise_error` matcher" do
4
- describe "#description" do
5
- context "given only an exception class" do
6
- it "returns the correct output" do
7
- expect(raise_error(RuntimeError).description).to eq(
8
- "raise a kind of RuntimeError"
9
- )
10
- end
11
- end
12
-
13
- context "given only a string message" do
14
- it "returns the correct output" do
15
- expect(raise_error("hell").description).to eq(
16
- %|raise a kind of Exception with message "hell"|
17
- )
18
- end
19
- end
20
-
21
- context "given only a regexp message" do
22
- it "returns the correct output" do
23
- expect(raise_error(/hell/i).description).to eq(
24
- "raise a kind of Exception with message matching /hell/i"
25
- )
26
- end
27
- end
28
-
29
- context "given both an exception and string message" do
30
- it "returns the correct output" do
31
- expect(raise_error(RuntimeError, "hell").description).to eq(
32
- %|raise a kind of RuntimeError with message "hell"|
33
- )
34
- end
35
- end
36
-
37
- context "given both an exception and regexp message" do
38
- it "returns the correct output" do
39
- expect(raise_error(RuntimeError, /hell/i).description).to eq(
40
- "raise a kind of RuntimeError with message matching /hell/i"
41
- )
42
- end
43
- end
44
-
45
- context "given a simple RSpec matcher" do
46
- it "returns the correct output" do
47
- expect(raise_error(a_kind_of(RuntimeError)).description).to eq(
48
- "raise #<a kind of RuntimeError>"
49
- )
50
- end
51
- end
52
-
53
- context "given a simple RSpec matcher and string message" do
54
- it "returns the correct output" do
55
- expect(raise_error(a_kind_of(RuntimeError), "boo").description).to eq(
56
- 'raise #<a kind of RuntimeError> with message "boo"'
57
- )
58
- end
59
- end
60
-
61
- context "given a simple RSpec matcher and regexp message" do
62
- it "returns the correct output" do
63
- expect(raise_error(a_kind_of(RuntimeError), /boo/i).description).to eq(
64
- "raise #<a kind of RuntimeError> with message matching /boo/i"
65
- )
66
- end
67
- end
68
-
69
- context "given a compound RSpec matcher" do
70
- it "returns the correct output" do
71
- expect(raise_error(a_kind_of(Array).or eq(true)).description).to eq(
72
- "raise #<a kind of Array or eq true>"
73
- )
74
- end
75
- end
76
- end
77
- end
@@ -1,85 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "RSpec's `respond_to` matcher" do
4
- describe "#description" do
5
- context "without any qualifiers" do
6
- it "returns the correct output" do
7
- expect(respond_to(:foo, :bar, :baz).description).to eq(
8
- "respond to :foo, :bar and :baz"
9
- )
10
- end
11
- end
12
-
13
- context "qualified with #with + #arguments" do
14
- it "returns the correct output" do
15
- expect(
16
- respond_to(:foo, :bar, :baz).with(3).arguments.description
17
- ).to eq("respond to :foo, :bar and :baz with 3 arguments")
18
- end
19
- end
20
-
21
- context "qualified with #with_keywords" do
22
- it "returns the correct output" do
23
- matcher =
24
- respond_to(:foo, :bar, :baz).with_keywords(:qux, :blargh, :fizz)
25
-
26
- expect(matcher.description).to eq(
27
- "respond to :foo, :bar and :baz with keywords :qux, :blargh " +
28
- "and :fizz"
29
- )
30
- end
31
- end
32
-
33
- context "qualified with #with_any_keywords" do
34
- it "returns the correct output" do
35
- matcher = respond_to(:foo, :bar, :baz).with_any_keywords
36
-
37
- expect(matcher.description).to eq(
38
- "respond to :foo, :bar and :baz with any keywords"
39
- )
40
- end
41
- end
42
-
43
- context "qualified with #with_unlimited_arguments" do
44
- it "returns the correct output" do
45
- matcher = respond_to(:foo, :bar, :baz).with_unlimited_arguments
46
-
47
- expect(matcher.description).to eq(
48
- "respond to :foo, :bar and :baz with unlimited arguments"
49
- )
50
- end
51
- end
52
-
53
- context "qualified with #with_any_keywords + #with_unlimited_arguments" do
54
- it "returns the correct output" do
55
- matcher =
56
- respond_to(
57
- :foo,
58
- :bar,
59
- :baz
60
- ).with_any_keywords.with_unlimited_arguments
61
-
62
- expect(matcher.description).to eq(
63
- "respond to :foo, :bar and :baz with any keywords and unlimited " +
64
- "arguments"
65
- )
66
- end
67
- end
68
-
69
- context "qualified with #with_keywords + #with_unlimited_arguments" do
70
- it "returns the correct output" do
71
- matcher =
72
- respond_to(:foo, :bar, :baz).with_keywords(
73
- :qux,
74
- :blargh,
75
- :fizz
76
- ).with_unlimited_arguments
77
-
78
- expect(matcher.description).to eq(
79
- "respond to :foo, :bar and :baz with keywords :qux, :blargh and " +
80
- ":fizz and unlimited arguments"
81
- )
82
- end
83
- end
84
- end
85
- end
@@ -1,91 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe SuperDiff, type: :unit do
4
- describe ".inspect_object", "for RSpec matchers" do
5
- context "given a custom matcher" do
6
- let(:custom_matcher) do
7
- proc do |expected, &block_arg|
8
- declarations =
9
- proc do
10
- match do |actual|
11
- actual.is_a?(Integer) && actual >= 0 &&
12
- (Math.sqrt(actual) % 1).zero?
13
- end
14
- description { "be a perfect square" }
15
- end
16
- RSpec::Matchers::DSL::Matcher.new(
17
- :be_a_square,
18
- declarations,
19
- RSpec::Matchers::DSL,
20
- *expected,
21
- &block_arg
22
- )
23
- end
24
- end
25
-
26
- context "given as_lines: false" do
27
- it "returns the matcher's description string" do
28
- string =
29
- described_class.inspect_object(
30
- custom_matcher.call(4),
31
- as_lines: false
32
- )
33
- expect(string).to eq("#<be a perfect square>")
34
- end
35
- end
36
-
37
- context "given as_lines: true" do
38
- it "returns an inspected version of the matcher as multiple lines" do
39
- tiered_lines =
40
- described_class.inspect_object(
41
- custom_matcher.call(4),
42
- as_lines: true,
43
- type: :delete,
44
- indentation_level: 1
45
- )
46
- expect(tiered_lines).to match(
47
- [
48
- an_object_having_attributes(
49
- type: :delete,
50
- indentation_level: 1,
51
- value: "#<be a perfect square>"
52
- )
53
- ]
54
- )
55
- end
56
- end
57
- end
58
-
59
- context "given a built-in matcher" do
60
- let(:matcher) { be_a(Numeric) }
61
-
62
- context "given as_lines: false" do
63
- it "returns the matcher's description string" do
64
- string = described_class.inspect_object(matcher, as_lines: false)
65
- expect(string).to eq("#<be a kind of Numeric>")
66
- end
67
- end
68
-
69
- context "given as_lines: true" do
70
- it "returns an inspected version of the matcher as multiple lines" do
71
- tiered_lines =
72
- described_class.inspect_object(
73
- matcher,
74
- as_lines: true,
75
- type: :delete,
76
- indentation_level: 1
77
- )
78
- expect(tiered_lines).to match(
79
- [
80
- an_object_having_attributes(
81
- type: :delete,
82
- indentation_level: 1,
83
- value: "#<be a kind of Numeric>"
84
- )
85
- ]
86
- )
87
- end
88
- end
89
- end
90
- end
91
- end