super_diff 0.12.1 → 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 (271) 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/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 -27
  184. data/super_diff.gemspec +20 -18
  185. metadata +15 -182
  186. data/spec/examples.txt +0 -704
  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/internal/log/test.log +0 -0
  210. data/spec/spec_helper.rb +0 -90
  211. data/spec/support/colorizer.rb +0 -9
  212. data/spec/support/command_runner.rb +0 -253
  213. data/spec/support/helpers.rb +0 -21
  214. data/spec/support/integration/helpers.rb +0 -124
  215. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +0 -104
  216. data/spec/support/integration/matchers.rb +0 -177
  217. data/spec/support/integration/test_programs/base.rb +0 -143
  218. data/spec/support/integration/test_programs/plain.rb +0 -19
  219. data/spec/support/integration/test_programs/rspec_active_record.rb +0 -20
  220. data/spec/support/integration/test_programs/rspec_active_support.rb +0 -20
  221. data/spec/support/integration/test_programs/rspec_rails.rb +0 -20
  222. data/spec/support/integration/test_programs/rspec_rails_engine.rb +0 -20
  223. data/spec/support/models/a.rb +0 -11
  224. data/spec/support/models/active_record/person.rb +0 -28
  225. data/spec/support/models/active_record/query.rb +0 -15
  226. data/spec/support/models/active_record/shipping_address.rb +0 -24
  227. data/spec/support/models/customer.rb +0 -22
  228. data/spec/support/models/empty_class.rb +0 -6
  229. data/spec/support/models/item.rb +0 -10
  230. data/spec/support/models/order.rb +0 -9
  231. data/spec/support/models/person.rb +0 -20
  232. data/spec/support/models/player.rb +0 -30
  233. data/spec/support/models/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/operation_tree_flatteners/array_spec.rb +0 -637
  245. data/spec/unit/basic/operation_tree_flatteners/custom_object_spec.rb +0 -685
  246. data/spec/unit/basic/operation_tree_flatteners/default_object_spec.rb +0 -685
  247. data/spec/unit/basic/operation_tree_flatteners/hash_spec.rb +0 -671
  248. data/spec/unit/basic/operation_tree_flatteners/multiline_string_spec.rb +0 -131
  249. data/spec/unit/core/helpers_spec.rb +0 -68
  250. data/spec/unit/core/tiered_lines_elider_spec.rb +0 -6328
  251. data/spec/unit/core/tiered_lines_formatter_spec.rb +0 -131
  252. data/spec/unit/deprecations_spec.rb +0 -176
  253. data/spec/unit/equality_matchers/main_spec.rb +0 -1842
  254. data/spec/unit/rspec/matchers/be_compared_to_spec.rb +0 -23
  255. data/spec/unit/rspec/matchers/be_falsey_spec.rb +0 -9
  256. data/spec/unit/rspec/matchers/be_nil_spec.rb +0 -9
  257. data/spec/unit/rspec/matchers/be_predicate_spec.rb +0 -31
  258. data/spec/unit/rspec/matchers/be_spec.rb +0 -17
  259. data/spec/unit/rspec/matchers/be_truthy_spec.rb +0 -9
  260. data/spec/unit/rspec/matchers/contain_exactly_spec.rb +0 -11
  261. data/spec/unit/rspec/matchers/eq_spec.rb +0 -9
  262. data/spec/unit/rspec/matchers/have_attributes_spec.rb +0 -11
  263. data/spec/unit/rspec/matchers/have_predicate_spec.rb +0 -21
  264. data/spec/unit/rspec/matchers/include_spec.rb +0 -21
  265. data/spec/unit/rspec/matchers/match_array_spec.rb +0 -11
  266. data/spec/unit/rspec/matchers/match_spec.rb +0 -9
  267. data/spec/unit/rspec/matchers/raise_error_spec.rb +0 -77
  268. data/spec/unit/rspec/matchers/respond_to_spec.rb +0 -85
  269. data/spec/unit/rspec/object_inspection/rspec_matcher_spec.rb +0 -91
  270. data/spec/unit/rspec/object_inspection_spec.rb +0 -471
  271. 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