super_diff 0.9.0 → 0.10.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 (193) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +65 -26
  3. data/lib/super_diff/active_record/differs/active_record_relation.rb +1 -2
  4. data/lib/super_diff/active_record/differs.rb +1 -1
  5. data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_model.rb +5 -13
  6. data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_relation.rb +1 -3
  7. data/lib/super_diff/active_record/object_inspection/inspection_tree_builders.rb +2 -2
  8. data/lib/super_diff/active_record/object_inspection.rb +1 -1
  9. data/lib/super_diff/active_record/operation_tree_builders/active_record_model.rb +1 -2
  10. data/lib/super_diff/active_record/operation_tree_builders/active_record_relation.rb +1 -2
  11. data/lib/super_diff/active_record/operation_tree_builders.rb +2 -2
  12. data/lib/super_diff/active_record/operation_tree_flatteners.rb +1 -1
  13. data/lib/super_diff/active_record/operation_trees.rb +1 -1
  14. data/lib/super_diff/active_record.rb +7 -15
  15. data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +5 -6
  16. data/lib/super_diff/active_support/differs.rb +1 -1
  17. data/lib/super_diff/active_support/object_inspection/inspection_tree_builders/hash_with_indifferent_access.rb +3 -9
  18. data/lib/super_diff/active_support/object_inspection/inspection_tree_builders.rb +1 -1
  19. data/lib/super_diff/active_support/object_inspection.rb +1 -1
  20. data/lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb +5 -6
  21. data/lib/super_diff/active_support/operation_tree_builders.rb +1 -1
  22. data/lib/super_diff/active_support/operation_tree_flatteners.rb +1 -1
  23. data/lib/super_diff/active_support/operation_trees.rb +1 -1
  24. data/lib/super_diff/active_support.rb +6 -11
  25. data/lib/super_diff/colorized_document_extensions.rb +2 -4
  26. data/lib/super_diff/configuration.rb +14 -8
  27. data/lib/super_diff/csi/color.rb +4 -4
  28. data/lib/super_diff/csi/colorized_document.rb +12 -16
  29. data/lib/super_diff/csi/document.rb +8 -19
  30. data/lib/super_diff/csi/eight_bit_color.rb +19 -19
  31. data/lib/super_diff/csi/four_bit_color.rb +82 -31
  32. data/lib/super_diff/csi/twenty_four_bit_color.rb +12 -11
  33. data/lib/super_diff/csi/uncolorized_document.rb +2 -6
  34. data/lib/super_diff/csi.rb +10 -14
  35. data/lib/super_diff/diff_formatters/collection.rb +35 -41
  36. data/lib/super_diff/differs/default_object.rb +1 -1
  37. data/lib/super_diff/differs/defaults.rb +1 -1
  38. data/lib/super_diff/differs/main.rb +2 -13
  39. data/lib/super_diff/equality_matchers/array.rb +10 -12
  40. data/lib/super_diff/equality_matchers/base.rb +1 -1
  41. data/lib/super_diff/equality_matchers/default.rb +2 -4
  42. data/lib/super_diff/equality_matchers/defaults.rb +1 -1
  43. data/lib/super_diff/equality_matchers/hash.rb +10 -12
  44. data/lib/super_diff/equality_matchers/multiline_string.rb +11 -13
  45. data/lib/super_diff/equality_matchers/primitive.rb +10 -12
  46. data/lib/super_diff/equality_matchers/singleline_string.rb +10 -12
  47. data/lib/super_diff/equality_matchers.rb +1 -1
  48. data/lib/super_diff/errors.rb +3 -3
  49. data/lib/super_diff/gem_version.rb +3 -3
  50. data/lib/super_diff/helpers.rb +10 -10
  51. data/lib/super_diff/implementation_checks.rb +2 -2
  52. data/lib/super_diff/line.rb +3 -3
  53. data/lib/super_diff/object_inspection/inspection_tree.rb +46 -60
  54. data/lib/super_diff/object_inspection/inspection_tree_builders/array.rb +2 -6
  55. data/lib/super_diff/object_inspection/inspection_tree_builders/custom_object.rb +3 -9
  56. data/lib/super_diff/object_inspection/inspection_tree_builders/default_object.rb +5 -14
  57. data/lib/super_diff/object_inspection/inspection_tree_builders/defaults.rb +1 -1
  58. data/lib/super_diff/object_inspection/inspection_tree_builders/hash.rb +4 -12
  59. data/lib/super_diff/object_inspection/inspection_tree_builders/time_like.rb +6 -23
  60. data/lib/super_diff/object_inspection/inspection_tree_builders.rb +9 -9
  61. data/lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb +8 -20
  62. data/lib/super_diff/object_inspection/nodes/as_prefix_when_rendering_to_lines.rb +1 -5
  63. data/lib/super_diff/object_inspection/nodes/as_prelude_when_rendering_to_lines.rb +1 -5
  64. data/lib/super_diff/object_inspection/nodes/as_single_line.rb +3 -7
  65. data/lib/super_diff/object_inspection/nodes/base.rb +9 -14
  66. data/lib/super_diff/object_inspection/nodes/inspection.rb +26 -34
  67. data/lib/super_diff/object_inspection/nodes/nesting.rb +1 -1
  68. data/lib/super_diff/object_inspection/nodes/only_when.rb +2 -6
  69. data/lib/super_diff/object_inspection/nodes/text.rb +1 -5
  70. data/lib/super_diff/object_inspection/nodes/when_empty.rb +2 -6
  71. data/lib/super_diff/object_inspection/nodes/when_non_empty.rb +2 -6
  72. data/lib/super_diff/object_inspection/nodes/when_rendering_to_lines.rb +1 -1
  73. data/lib/super_diff/object_inspection/nodes/when_rendering_to_string.rb +1 -5
  74. data/lib/super_diff/object_inspection/nodes.rb +7 -7
  75. data/lib/super_diff/object_inspection.rb +3 -3
  76. data/lib/super_diff/operation_tree_builders/array.rb +12 -11
  77. data/lib/super_diff/operation_tree_builders/base.rb +17 -15
  78. data/lib/super_diff/operation_tree_builders/custom_object.rb +8 -6
  79. data/lib/super_diff/operation_tree_builders/default_object.rb +29 -21
  80. data/lib/super_diff/operation_tree_builders/hash.rb +23 -24
  81. data/lib/super_diff/operation_tree_builders/main.rb +4 -11
  82. data/lib/super_diff/operation_tree_builders/multiline_string.rb +3 -3
  83. data/lib/super_diff/operation_tree_builders/time_like.rb +1 -11
  84. data/lib/super_diff/operation_tree_builders.rb +1 -1
  85. data/lib/super_diff/operation_tree_flatteners/base.rb +1 -5
  86. data/lib/super_diff/operation_tree_flatteners/collection.rb +13 -16
  87. data/lib/super_diff/operation_tree_flatteners/default_object.rb +1 -2
  88. data/lib/super_diff/operation_tree_flatteners/hash.rb +2 -10
  89. data/lib/super_diff/operation_tree_flatteners/multiline_string.rb +2 -1
  90. data/lib/super_diff/operation_tree_flatteners.rb +3 -3
  91. data/lib/super_diff/operation_trees/base.rb +3 -5
  92. data/lib/super_diff/operation_trees/default_object.rb +1 -3
  93. data/lib/super_diff/operations/binary_operation.rb +2 -2
  94. data/lib/super_diff/operations/unary_operation.rb +1 -1
  95. data/lib/super_diff/rails.rb +2 -1
  96. data/lib/super_diff/recursion_guard.rb +5 -4
  97. data/lib/super_diff/rspec/augmented_matcher.rb +4 -5
  98. data/lib/super_diff/rspec/differ.rb +6 -13
  99. data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +3 -2
  100. data/lib/super_diff/rspec/differs/collection_including.rb +1 -1
  101. data/lib/super_diff/rspec/differs/hash_including.rb +1 -1
  102. data/lib/super_diff/rspec/differs.rb +3 -3
  103. data/lib/super_diff/rspec/matcher_text_builders/base.rb +13 -15
  104. data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +5 -7
  105. data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +3 -5
  106. data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +1 -5
  107. data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +2 -6
  108. data/lib/super_diff/rspec/matcher_text_builders.rb +5 -8
  109. data/lib/super_diff/rspec/matcher_text_template.rb +13 -16
  110. data/lib/super_diff/rspec/monkey_patches.rb +122 -116
  111. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_including.rb +8 -6
  112. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb +11 -16
  113. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/hash_including.rb +2 -1
  114. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/instance_of.rb +8 -6
  115. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/kind_of.rb +8 -6
  116. data/lib/super_diff/rspec/object_inspection/inspection_tree_builders.rb +9 -9
  117. data/lib/super_diff/rspec/object_inspection.rb +1 -1
  118. data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +11 -10
  119. data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +7 -6
  120. data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +11 -10
  121. data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +22 -17
  122. data/lib/super_diff/rspec/operation_tree_builders.rb +4 -4
  123. data/lib/super_diff/rspec.rb +11 -13
  124. data/lib/super_diff/tiered_lines_elider.rb +87 -115
  125. data/lib/super_diff/tiered_lines_formatter.rb +5 -9
  126. data/lib/super_diff/version.rb +1 -1
  127. data/lib/super_diff.rb +4 -9
  128. data/spec/examples.txt +493 -485
  129. data/spec/integration/rails/active_record_spec.rb +3 -1
  130. data/spec/integration/rails/engines_spec.rb +20 -0
  131. data/spec/integration/rails/hash_with_indifferent_access_spec.rb +3 -1
  132. data/spec/integration/rspec/be_falsey_matcher_spec.rb +40 -35
  133. data/spec/integration/rspec/be_matcher_spec.rb +360 -320
  134. data/spec/integration/rspec/be_nil_matcher_spec.rb +38 -34
  135. data/spec/integration/rspec/be_predicate_matcher_spec.rb +376 -359
  136. data/spec/integration/rspec/be_truthy_matcher_spec.rb +38 -33
  137. data/spec/integration/rspec/contain_exactly_matcher_spec.rb +242 -239
  138. data/spec/integration/rspec/eq_matcher_spec.rb +595 -557
  139. data/spec/integration/rspec/have_attributes_matcher_spec.rb +294 -286
  140. data/spec/integration/rspec/have_predicate_matcher_spec.rb +291 -297
  141. data/spec/integration/rspec/include_matcher_spec.rb +317 -215
  142. data/spec/integration/rspec/match_array_matcher_spec.rb +276 -273
  143. data/spec/integration/rspec/match_matcher_spec.rb +847 -834
  144. data/spec/integration/rspec/raise_error_matcher_spec.rb +468 -453
  145. data/spec/integration/rspec/respond_to_matcher_spec.rb +702 -697
  146. data/spec/integration/rspec/third_party_matcher_spec.rb +142 -138
  147. data/spec/integration/rspec/unhandled_errors_spec.rb +88 -84
  148. data/spec/spec_helper.rb +17 -20
  149. data/spec/support/command_runner.rb +34 -57
  150. data/spec/support/integration/helpers.rb +35 -28
  151. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +28 -23
  152. data/spec/support/integration/test_programs/base.rb +12 -17
  153. data/spec/support/integration/test_programs/plain.rb +6 -0
  154. data/spec/support/integration/test_programs/rspec_active_record.rb +4 -1
  155. data/spec/support/integration/test_programs/rspec_active_support.rb +4 -1
  156. data/spec/support/integration/test_programs/rspec_rails.rb +4 -1
  157. data/spec/support/integration/test_programs/rspec_rails_engine.rb +30 -0
  158. data/spec/support/models/active_record/person.rb +6 -4
  159. data/spec/support/models/active_record/shipping_address.rb +9 -10
  160. data/spec/support/models/customer.rb +2 -4
  161. data/spec/support/models/player.rb +3 -6
  162. data/spec/support/models/shipping_address.rb +4 -13
  163. data/spec/support/shared_examples/active_record.rb +232 -214
  164. data/spec/support/shared_examples/active_support.rb +53 -51
  165. data/spec/support/shared_examples/elided_diffs.rb +405 -381
  166. data/spec/support/shared_examples/hash_with_indifferent_access.rb +424 -388
  167. data/spec/support/shared_examples/key.rb +123 -0
  168. data/spec/support/unit/helpers.rb +1 -3
  169. data/spec/support/unit/matchers/match_output.rb +12 -13
  170. data/spec/unit/active_record/object_inspection_spec.rb +222 -206
  171. data/spec/unit/equality_matchers/main_spec.rb +1049 -984
  172. data/spec/unit/helpers_spec.rb +14 -21
  173. data/spec/unit/operation_tree_flatteners/array_spec.rb +557 -524
  174. data/spec/unit/operation_tree_flatteners/custom_object_spec.rb +619 -601
  175. data/spec/unit/operation_tree_flatteners/default_object_spec.rb +619 -621
  176. data/spec/unit/operation_tree_flatteners/hash_spec.rb +595 -556
  177. data/spec/unit/operation_tree_flatteners/multiline_string_spec.rb +102 -92
  178. data/spec/unit/rspec/matchers/be_compared_to_spec.rb +3 -3
  179. data/spec/unit/rspec/matchers/be_predicate_spec.rb +3 -3
  180. data/spec/unit/rspec/matchers/contain_exactly_spec.rb +1 -1
  181. data/spec/unit/rspec/matchers/have_attributes_spec.rb +1 -1
  182. data/spec/unit/rspec/matchers/have_predicate_spec.rb +2 -2
  183. data/spec/unit/rspec/matchers/include_spec.rb +2 -2
  184. data/spec/unit/rspec/matchers/match_array_spec.rb +2 -2
  185. data/spec/unit/rspec/matchers/raise_error_spec.rb +5 -5
  186. data/spec/unit/rspec/matchers/respond_to_spec.rb +23 -16
  187. data/spec/unit/rspec/object_inspection_spec.rb +349 -324
  188. data/spec/unit/super_diff_spec.rb +1542 -1449
  189. data/spec/unit/tiered_lines_elider_spec.rb +3508 -3536
  190. data/spec/unit/tiered_lines_formatter_spec.rb +54 -116
  191. data/super_diff.gemspec +13 -12
  192. metadata +73 -73
  193. data/spec/tmp/warnings_logger/all_warnings.txt +0 -2
@@ -1,47 +1,48 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe "Integration with RSpec's #match_array matcher", type: :integration do
3
+ RSpec.describe "Integration with RSpec's #match_array matcher",
4
+ type: :integration do
4
5
  context "when a few number of values are given" do
5
6
  it "produces the correct failure message when used in the positive" do
6
7
  as_both_colored_and_uncolored do |color_enabled|
7
8
  snippet = <<~TEST.strip
8
9
  expected = ["Einie", "Marty"]
9
- actual = ["Marty", "Jennifer", "Doc"]
10
+ actual = ["Marty", "Jennifer", "Doc"]
10
11
  expect(actual).to match_array(expected)
11
12
  TEST
12
- program = make_plain_test_program(
13
- snippet,
14
- color_enabled: color_enabled,
15
- )
13
+ program = make_plain_test_program(snippet, color_enabled: color_enabled)
16
14
 
17
- expected_output = build_expected_output(
18
- color_enabled: color_enabled,
19
- snippet: %|expect(actual).to match_array(expected)|,
20
- expectation: proc {
21
- line do
22
- plain %|Expected |
23
- actual %|["Marty", "Jennifer", "Doc"]|
24
- plain %| to match array with |
25
- expected %|"Einie"|
26
- plain %| and |
27
- expected %|"Marty"|
28
- plain %|.|
29
- end
30
- },
31
- diff: proc {
32
- plain_line %| [|
33
- plain_line %| "Marty",|
34
- actual_line %|+ "Jennifer",|
35
- actual_line %|+ "Doc",|
36
- # expected_line %|- "Einie"| # TODO
37
- expected_line %|- "Einie",|
38
- plain_line %| ]|
39
- },
40
- )
15
+ expected_output =
16
+ build_expected_output(
17
+ color_enabled: color_enabled,
18
+ snippet: "expect(actual).to match_array(expected)",
19
+ expectation:
20
+ proc do
21
+ line do
22
+ plain "Expected "
23
+ actual %|["Marty", "Jennifer", "Doc"]|
24
+ plain " to match array with "
25
+ expected %|"Einie"|
26
+ plain " and "
27
+ expected %|"Marty"|
28
+ plain "."
29
+ end
30
+ end,
31
+ diff:
32
+ proc do
33
+ plain_line " ["
34
+ plain_line %| "Marty",|
35
+ actual_line %|+ "Jennifer",|
36
+ actual_line %|+ "Doc",|
37
+ # expected_line %|- "Einie"| # TODO
38
+ expected_line %|- "Einie",|
39
+ plain_line " ]"
40
+ end
41
+ )
41
42
 
42
- expect(program).
43
- to produce_output_when_run(expected_output).
44
- in_color(color_enabled)
43
+ expect(program).to produce_output_when_run(expected_output).in_color(
44
+ color_enabled
45
+ )
45
46
  end
46
47
  end
47
48
 
@@ -51,30 +52,29 @@ RSpec.describe "Integration with RSpec's #match_array matcher", type: :integrati
51
52
  values = ["Einie", "Marty"]
52
53
  expect(values).not_to match_array(values)
53
54
  TEST
54
- program = make_plain_test_program(
55
- snippet,
56
- color_enabled: color_enabled,
57
- )
55
+ program = make_plain_test_program(snippet, color_enabled: color_enabled)
58
56
 
59
- expected_output = build_expected_output(
60
- color_enabled: color_enabled,
61
- snippet: %|expect(values).not_to match_array(values)|,
62
- expectation: proc {
63
- line do
64
- plain %|Expected |
65
- actual %|["Einie", "Marty"]|
66
- plain %| not to match array with |
67
- expected %|"Einie"|
68
- plain %| and |
69
- expected %|"Marty"|
70
- plain %|.|
71
- end
72
- },
73
- )
57
+ expected_output =
58
+ build_expected_output(
59
+ color_enabled: color_enabled,
60
+ snippet: "expect(values).not_to match_array(values)",
61
+ expectation:
62
+ proc do
63
+ line do
64
+ plain "Expected "
65
+ actual %|["Einie", "Marty"]|
66
+ plain " not to match array with "
67
+ expected %|"Einie"|
68
+ plain " and "
69
+ expected %|"Marty"|
70
+ plain "."
71
+ end
72
+ end
73
+ )
74
74
 
75
- expect(program).
76
- to produce_output_when_run(expected_output).
77
- in_color(color_enabled)
75
+ expect(program).to produce_output_when_run(expected_output).in_color(
76
+ color_enabled
77
+ )
78
78
  end
79
79
  end
80
80
  end
@@ -91,7 +91,7 @@ RSpec.describe "Integration with RSpec's #match_array matcher", type: :integrati
91
91
  "George McFly",
92
92
  "Lorraine McFly"
93
93
  ]
94
- actual = [
94
+ actual = [
95
95
  "Marty McFly",
96
96
  "Doc Brown",
97
97
  "Einie",
@@ -99,49 +99,50 @@ RSpec.describe "Integration with RSpec's #match_array matcher", type: :integrati
99
99
  ]
100
100
  expect(actual).to match_array(expected)
101
101
  TEST
102
- program = make_plain_test_program(
103
- snippet,
104
- color_enabled: color_enabled,
105
- )
102
+ program =
103
+ make_plain_test_program(snippet, color_enabled: color_enabled)
106
104
 
107
- expected_output = build_expected_output(
108
- color_enabled: color_enabled,
109
- snippet: %|expect(actual).to match_array(expected)|,
110
- expectation: proc {
111
- line do
112
- plain %| Expected |
113
- actual %|["Marty McFly", "Doc Brown", "Einie", "Lorraine McFly"]|
114
- end
105
+ expected_output =
106
+ build_expected_output(
107
+ color_enabled: color_enabled,
108
+ snippet: "expect(actual).to match_array(expected)",
109
+ expectation:
110
+ proc do
111
+ line do
112
+ plain " Expected "
113
+ actual %|["Marty McFly", "Doc Brown", "Einie", "Lorraine McFly"]|
114
+ end
115
115
 
116
- line do
117
- plain %|to match array with |
118
- expected %|"Doc Brown"|
119
- plain %|, |
120
- expected %|"Marty McFly"|
121
- plain %|, |
122
- expected %|"Biff Tannen"|
123
- plain %|, |
124
- expected %|"George McFly"|
125
- plain %| and |
126
- expected %|"Lorraine McFly"|
127
- end
128
- },
129
- diff: proc {
130
- plain_line %| [|
131
- plain_line %| "Marty McFly",|
132
- plain_line %| "Doc Brown",|
133
- plain_line %| "Lorraine McFly",|
134
- actual_line %|+ "Einie",|
135
- expected_line %|- "Biff Tannen",|
136
- # expected_line %|- "George McFly"| # TODO
137
- expected_line %|- "George McFly",|
138
- plain_line %| ]|
139
- },
140
- )
116
+ line do
117
+ plain "to match array with "
118
+ expected %|"Doc Brown"|
119
+ plain ", "
120
+ expected %|"Marty McFly"|
121
+ plain ", "
122
+ expected %|"Biff Tannen"|
123
+ plain ", "
124
+ expected %|"George McFly"|
125
+ plain " and "
126
+ expected %|"Lorraine McFly"|
127
+ end
128
+ end,
129
+ diff:
130
+ proc do
131
+ plain_line " ["
132
+ plain_line %| "Marty McFly",|
133
+ plain_line %| "Doc Brown",|
134
+ plain_line %| "Lorraine McFly",|
135
+ actual_line %|+ "Einie",|
136
+ expected_line %|- "Biff Tannen",|
137
+ # expected_line %|- "George McFly"| # TODO
138
+ expected_line %|- "George McFly",|
139
+ plain_line " ]"
140
+ end
141
+ )
141
142
 
142
- expect(program).
143
- to produce_output_when_run(expected_output).
144
- in_color(color_enabled)
143
+ expect(program).to produce_output_when_run(expected_output).in_color(
144
+ color_enabled
145
+ )
145
146
  end
146
147
  end
147
148
 
@@ -156,37 +157,37 @@ RSpec.describe "Integration with RSpec's #match_array matcher", type: :integrati
156
157
  ]
157
158
  expect(values).not_to match_array(values)
158
159
  TEST
159
- program = make_plain_test_program(
160
- snippet,
161
- color_enabled: color_enabled,
162
- )
160
+ program =
161
+ make_plain_test_program(snippet, color_enabled: color_enabled)
163
162
 
164
- expected_output = build_expected_output(
165
- color_enabled: color_enabled,
166
- snippet: %|expect(values).not_to match_array(values)|,
167
- newline_before_expectation: true,
168
- expectation: proc {
169
- line do
170
- plain %| Expected |
171
- actual %|["Marty McFly", "Doc Brown", "Einie", "Lorraine McFly"]|
172
- end
163
+ expected_output =
164
+ build_expected_output(
165
+ color_enabled: color_enabled,
166
+ snippet: "expect(values).not_to match_array(values)",
167
+ newline_before_expectation: true,
168
+ expectation:
169
+ proc do
170
+ line do
171
+ plain " Expected "
172
+ actual %|["Marty McFly", "Doc Brown", "Einie", "Lorraine McFly"]|
173
+ end
173
174
 
174
- line do
175
- plain %|not to match array with |
176
- expected %|"Marty McFly"|
177
- plain %|, |
178
- expected %|"Doc Brown"|
179
- plain %|, |
180
- expected %|"Einie"|
181
- plain %| and |
182
- expected %|"Lorraine McFly"|
183
- end
184
- },
185
- )
175
+ line do
176
+ plain "not to match array with "
177
+ expected %|"Marty McFly"|
178
+ plain ", "
179
+ expected %|"Doc Brown"|
180
+ plain ", "
181
+ expected %|"Einie"|
182
+ plain " and "
183
+ expected %|"Lorraine McFly"|
184
+ end
185
+ end
186
+ )
186
187
 
187
- expect(program).
188
- to produce_output_when_run(expected_output).
189
- in_color(color_enabled)
188
+ expect(program).to produce_output_when_run(expected_output).in_color(
189
+ color_enabled
190
+ )
190
191
  end
191
192
  end
192
193
  end
@@ -202,7 +203,7 @@ RSpec.describe "Integration with RSpec's #match_array matcher", type: :integrati
202
203
  /Georg McFly/,
203
204
  /Lorrain McFly/
204
205
  ]
205
- actual = [
206
+ actual = [
206
207
  "Marty McFly",
207
208
  "Doc Brown",
208
209
  "Einie",
@@ -210,50 +211,51 @@ RSpec.describe "Integration with RSpec's #match_array matcher", type: :integrati
210
211
  ]
211
212
  expect(actual).to match_array(expected)
212
213
  TEST
213
- program = make_plain_test_program(
214
- snippet,
215
- color_enabled: color_enabled,
216
- )
214
+ program =
215
+ make_plain_test_program(snippet, color_enabled: color_enabled)
217
216
 
218
- expected_output = build_expected_output(
219
- color_enabled: color_enabled,
220
- snippet: %|expect(actual).to match_array(expected)|,
221
- expectation: proc {
222
- line do
223
- plain %| Expected |
224
- actual %|["Marty McFly", "Doc Brown", "Einie", "Lorraine McFly"]|
225
- end
217
+ expected_output =
218
+ build_expected_output(
219
+ color_enabled: color_enabled,
220
+ snippet: "expect(actual).to match_array(expected)",
221
+ expectation:
222
+ proc do
223
+ line do
224
+ plain " Expected "
225
+ actual %|["Marty McFly", "Doc Brown", "Einie", "Lorraine McFly"]|
226
+ end
226
227
 
227
- line do
228
- plain %|to match array with |
229
- expected %|/ Brown$/|
230
- plain %|, |
231
- expected %|"Marty McFly"|
232
- plain %|, |
233
- expected %|"Biff Tannen"|
234
- plain %|, |
235
- expected %|/Georg McFly/|
236
- plain %| and |
237
- expected %|/Lorrain McFly/|
238
- end
239
- },
240
- diff: proc {
241
- plain_line %| [|
242
- plain_line %| "Marty McFly",|
243
- plain_line %| "Doc Brown",|
244
- actual_line %|+ "Einie",|
245
- actual_line %|+ "Lorraine McFly",|
246
- expected_line %|- "Biff Tannen",|
247
- expected_line %|- /Georg McFly/,|
248
- # expected_line %|- /Lorrain McFly/| # TODO
249
- expected_line %|- /Lorrain McFly/,|
250
- plain_line %| ]|
251
- },
252
- )
228
+ line do
229
+ plain "to match array with "
230
+ expected "/ Brown$/"
231
+ plain ", "
232
+ expected %|"Marty McFly"|
233
+ plain ", "
234
+ expected %|"Biff Tannen"|
235
+ plain ", "
236
+ expected "/Georg McFly/"
237
+ plain " and "
238
+ expected "/Lorrain McFly/"
239
+ end
240
+ end,
241
+ diff:
242
+ proc do
243
+ plain_line " ["
244
+ plain_line %| "Marty McFly",|
245
+ plain_line %| "Doc Brown",|
246
+ actual_line %|+ "Einie",|
247
+ actual_line %|+ "Lorraine McFly",|
248
+ expected_line %|- "Biff Tannen",|
249
+ expected_line "- /Georg McFly/,"
250
+ # expected_line %|- /Lorrain McFly/| # TODO
251
+ expected_line "- /Lorrain McFly/,"
252
+ plain_line " ]"
253
+ end
254
+ )
253
255
 
254
- expect(program).
255
- to produce_output_when_run(expected_output).
256
- in_color(color_enabled)
256
+ expect(program).to produce_output_when_run(expected_output).in_color(
257
+ color_enabled
258
+ )
257
259
  end
258
260
  end
259
261
 
@@ -269,41 +271,41 @@ RSpec.describe "Integration with RSpec's #match_array matcher", type: :integrati
269
271
  ]
270
272
  expect(values).not_to match_array(values)
271
273
  TEST
272
- program = make_plain_test_program(
273
- snippet,
274
- color_enabled: color_enabled,
275
- )
274
+ program =
275
+ make_plain_test_program(snippet, color_enabled: color_enabled)
276
276
 
277
- expected_output = build_expected_output(
278
- color_enabled: color_enabled,
279
- snippet: %|expect(values).not_to match_array(values)|,
280
- newline_before_expectation: true,
281
- expectation: proc {
282
- line do
283
- plain %| Expected |
284
- # rubocop:disable Metrics/LineLength
285
- actual %|[/ Brown$/, "Marty McFly", "Biff Tannen", /Georg McFly/, /Lorrain McFly/]|
286
- # rubocop:enable Metrics/LineLength
287
- end
277
+ expected_output =
278
+ build_expected_output(
279
+ color_enabled: color_enabled,
280
+ snippet: "expect(values).not_to match_array(values)",
281
+ newline_before_expectation: true,
282
+ expectation:
283
+ proc do
284
+ line do
285
+ plain " Expected "
286
+ # rubocop:disable Metrics/LineLength
287
+ actual %|[/ Brown$/, "Marty McFly", "Biff Tannen", /Georg McFly/, /Lorrain McFly/]|
288
+ # rubocop:enable Metrics/LineLength
289
+ end
288
290
 
289
- line do
290
- plain %|not to match array with |
291
- expected %|/ Brown$/|
292
- plain %|, |
293
- expected %|"Marty McFly"|
294
- plain %|, |
295
- expected %|"Biff Tannen"|
296
- plain %|, |
297
- expected %|/Georg McFly/|
298
- plain %| and |
299
- expected %|/Lorrain McFly/|
300
- end
301
- },
302
- )
291
+ line do
292
+ plain "not to match array with "
293
+ expected "/ Brown$/"
294
+ plain ", "
295
+ expected %|"Marty McFly"|
296
+ plain ", "
297
+ expected %|"Biff Tannen"|
298
+ plain ", "
299
+ expected "/Georg McFly/"
300
+ plain " and "
301
+ expected "/Lorrain McFly/"
302
+ end
303
+ end
304
+ )
303
305
 
304
- expect(program).
305
- to produce_output_when_run(expected_output).
306
- in_color(color_enabled)
306
+ expect(program).to produce_output_when_run(expected_output).in_color(
307
+ color_enabled
308
+ )
307
309
  end
308
310
  end
309
311
  end
@@ -317,60 +319,61 @@ RSpec.describe "Integration with RSpec's #match_array matcher", type: :integrati
317
319
  a_collection_containing_exactly("zing"),
318
320
  an_object_having_attributes(baz: "qux"),
319
321
  ]
320
- actual = [
322
+ actual = [
321
323
  { foo: "bar" },
322
324
  double(baz: "qux"),
323
325
  { blargh: "riddle" }
324
326
  ]
325
327
  expect(actual).to match_array(expected)
326
328
  TEST
327
- program = make_plain_test_program(
328
- snippet,
329
- color_enabled: color_enabled,
330
- )
329
+ program =
330
+ make_plain_test_program(snippet, color_enabled: color_enabled)
331
331
 
332
- expected_output = build_expected_output(
333
- color_enabled: color_enabled,
334
- snippet: %|expect(actual).to match_array(expected)|,
335
- expectation: proc {
336
- line do
337
- plain %| Expected |
338
- # rubocop:disable Metrics/LineLength
339
- actual %|[{ foo: "bar" }, #<Double (anonymous) baz: "qux">, { blargh: "riddle" }]|
340
- # rubocop:enable Metrics/LineLength
341
- end
332
+ expected_output =
333
+ build_expected_output(
334
+ color_enabled: color_enabled,
335
+ snippet: "expect(actual).to match_array(expected)",
336
+ expectation:
337
+ proc do
338
+ line do
339
+ plain " Expected "
340
+ # rubocop:disable Metrics/LineLength
341
+ actual %|[{ foo: "bar" }, #<Double (anonymous) baz: "qux">, { blargh: "riddle" }]|
342
+ # rubocop:enable Metrics/LineLength
343
+ end
342
344
 
343
- line do
344
- plain %|to match array with |
345
- expected %|#<a hash including (foo: "bar")>|
346
- plain %|, |
347
- expected %|#<a collection containing exactly ("zing")>|
348
- plain %| and |
349
- expected %|#<an object having attributes (baz: "qux")>|
350
- end
351
- },
352
- diff: proc {
353
- plain_line %| [|
354
- plain_line %| {|
355
- plain_line %| foo: "bar"|
356
- plain_line %| },|
357
- plain_line %| #<Double (anonymous) {|
358
- plain_line %| baz: "qux"|
359
- plain_line %| }>,|
360
- actual_line %|+ {|
361
- actual_line %|+ blargh: "riddle"|
362
- actual_line %|+ },|
363
- expected_line %|- #<a collection containing exactly (|
364
- expected_line %|- "zing"|
365
- # expected_line %|- )>| # TODO
366
- expected_line %|- )>,|
367
- plain_line %| ]|
368
- },
369
- )
345
+ line do
346
+ plain "to match array with "
347
+ expected %|#<a hash including (foo: "bar")>|
348
+ plain ", "
349
+ expected %|#<a collection containing exactly ("zing")>|
350
+ plain " and "
351
+ expected %|#<an object having attributes (baz: "qux")>|
352
+ end
353
+ end,
354
+ diff:
355
+ proc do
356
+ plain_line " ["
357
+ plain_line " {"
358
+ plain_line %| foo: "bar"|
359
+ plain_line " },"
360
+ plain_line " #<Double (anonymous) {"
361
+ plain_line %| baz: "qux"|
362
+ plain_line " }>,"
363
+ actual_line "+ {"
364
+ actual_line %|+ blargh: "riddle"|
365
+ actual_line "+ },"
366
+ expected_line "- #<a collection containing exactly ("
367
+ expected_line %|- "zing"|
368
+ # expected_line %|- )>| # TODO
369
+ expected_line "- )>,"
370
+ plain_line " ]"
371
+ end
372
+ )
370
373
 
371
- expect(program).
372
- to produce_output_when_run(expected_output).
373
- in_color(color_enabled)
374
+ expect(program).to produce_output_when_run(expected_output).in_color(
375
+ color_enabled
376
+ )
374
377
  end
375
378
  end
376
379
  end
@@ -381,40 +384,40 @@ RSpec.describe "Integration with RSpec's #match_array matcher", type: :integrati
381
384
  as_both_colored_and_uncolored do |color_enabled|
382
385
  snippet = <<~TEST.strip
383
386
  expected = "Einie"
384
- actual = ["Marty", "Jennifer", "Doc"]
387
+ actual = ["Marty", "Jennifer", "Doc"]
385
388
  expect(actual).to match_array(expected)
386
389
  TEST
387
- program = make_plain_test_program(
388
- snippet,
389
- color_enabled: color_enabled,
390
- )
390
+ program = make_plain_test_program(snippet, color_enabled: color_enabled)
391
391
 
392
- expected_output = build_expected_output(
393
- color_enabled: color_enabled,
394
- snippet: %|expect(actual).to match_array(expected)|,
395
- expectation: proc {
396
- line do
397
- plain %|Expected |
398
- actual %|["Marty", "Jennifer", "Doc"]|
399
- plain %| to match array with |
400
- expected %|"Einie"|
401
- plain %|.|
402
- end
403
- },
404
- diff: proc {
405
- plain_line %| [|
406
- actual_line %|+ "Marty",|
407
- actual_line %|+ "Jennifer",|
408
- actual_line %|+ "Doc",|
409
- # expected_line %|- "Einie"| # TODO
410
- expected_line %|- "Einie",|
411
- plain_line %| ]|
412
- },
413
- )
392
+ expected_output =
393
+ build_expected_output(
394
+ color_enabled: color_enabled,
395
+ snippet: "expect(actual).to match_array(expected)",
396
+ expectation:
397
+ proc do
398
+ line do
399
+ plain "Expected "
400
+ actual %|["Marty", "Jennifer", "Doc"]|
401
+ plain " to match array with "
402
+ expected %|"Einie"|
403
+ plain "."
404
+ end
405
+ end,
406
+ diff:
407
+ proc do
408
+ plain_line " ["
409
+ actual_line %|+ "Marty",|
410
+ actual_line %|+ "Jennifer",|
411
+ actual_line %|+ "Doc",|
412
+ # expected_line %|- "Einie"| # TODO
413
+ expected_line %|- "Einie",|
414
+ plain_line " ]"
415
+ end
416
+ )
414
417
 
415
- expect(program).
416
- to produce_output_when_run(expected_output).
417
- in_color(color_enabled)
418
+ expect(program).to produce_output_when_run(expected_output).in_color(
419
+ color_enabled
420
+ )
418
421
  end
419
422
  end
420
423
  end