super_diff 0.2.0 → 0.5.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.
- checksums.yaml +4 -4
- data/README.md +108 -74
- data/lib/super_diff.rb +20 -11
- data/lib/super_diff/active_record.rb +21 -23
- data/lib/super_diff/active_record/diff_formatters/active_record_relation.rb +3 -3
- data/lib/super_diff/active_record/differs/active_record_relation.rb +3 -5
- data/lib/super_diff/active_record/monkey_patches.rb +9 -0
- data/lib/super_diff/active_record/object_inspection/inspectors/active_record_model.rb +32 -22
- data/lib/super_diff/active_record/object_inspection/inspectors/active_record_relation.rb +17 -7
- data/lib/super_diff/active_record/operation_tree_builders.rb +14 -0
- data/lib/super_diff/active_record/{operational_sequencers → operation_tree_builders}/active_record_model.rb +2 -2
- data/lib/super_diff/active_record/{operational_sequencers → operation_tree_builders}/active_record_relation.rb +4 -4
- data/lib/super_diff/active_record/{operation_sequences.rb → operation_trees.rb} +2 -2
- data/lib/super_diff/active_record/{operation_sequences → operation_trees}/active_record_relation.rb +2 -2
- data/lib/super_diff/active_support.rb +16 -19
- data/lib/super_diff/active_support/diff_formatters/hash_with_indifferent_access.rb +3 -3
- data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +3 -5
- data/lib/super_diff/active_support/object_inspection/inspectors/hash_with_indifferent_access.rb +17 -7
- data/lib/super_diff/active_support/operation_tree_builders.rb +10 -0
- data/lib/super_diff/active_support/{operational_sequencers → operation_tree_builders}/hash_with_indifferent_access.rb +2 -2
- data/lib/super_diff/active_support/{operation_sequences.rb → operation_trees.rb} +2 -2
- data/lib/super_diff/active_support/{operation_sequences → operation_trees}/hash_with_indifferent_access.rb +2 -2
- data/lib/super_diff/configuration.rb +60 -0
- data/lib/super_diff/csi.rb +4 -0
- data/lib/super_diff/diff_formatters.rb +3 -3
- data/lib/super_diff/diff_formatters/array.rb +3 -3
- data/lib/super_diff/diff_formatters/base.rb +3 -2
- data/lib/super_diff/diff_formatters/collection.rb +2 -2
- data/lib/super_diff/diff_formatters/custom_object.rb +3 -3
- data/lib/super_diff/diff_formatters/default_object.rb +6 -8
- data/lib/super_diff/diff_formatters/defaults.rb +10 -0
- data/lib/super_diff/diff_formatters/hash.rb +3 -3
- data/lib/super_diff/diff_formatters/main.rb +41 -0
- data/lib/super_diff/diff_formatters/multiline_string.rb +3 -3
- data/lib/super_diff/differs.rb +4 -9
- data/lib/super_diff/differs/array.rb +2 -11
- data/lib/super_diff/differs/base.rb +20 -3
- data/lib/super_diff/differs/custom_object.rb +2 -11
- data/lib/super_diff/differs/default_object.rb +2 -8
- data/lib/super_diff/differs/defaults.rb +12 -0
- data/lib/super_diff/differs/hash.rb +2 -11
- data/lib/super_diff/differs/main.rb +48 -0
- data/lib/super_diff/differs/multiline_string.rb +2 -14
- data/lib/super_diff/differs/time_like.rb +15 -0
- data/lib/super_diff/equality_matchers.rb +3 -9
- data/lib/super_diff/equality_matchers/array.rb +1 -7
- data/lib/super_diff/equality_matchers/base.rb +1 -1
- data/lib/super_diff/equality_matchers/default.rb +2 -8
- data/lib/super_diff/equality_matchers/defaults.rb +12 -0
- data/lib/super_diff/equality_matchers/hash.rb +1 -7
- data/lib/super_diff/equality_matchers/main.rb +21 -0
- data/lib/super_diff/equality_matchers/multiline_string.rb +1 -7
- data/lib/super_diff/errors.rb +16 -0
- data/lib/super_diff/errors/no_diff_formatter_available_error.rb +21 -0
- data/lib/super_diff/errors/no_differ_available_error.rb +24 -0
- data/lib/super_diff/errors/no_operational_sequencer_available_error.rb +22 -0
- data/lib/super_diff/implementation_checks.rb +19 -0
- data/lib/super_diff/object_inspection.rb +1 -10
- data/lib/super_diff/object_inspection/inspection_tree.rb +6 -2
- data/lib/super_diff/object_inspection/inspectors.rb +5 -0
- data/lib/super_diff/object_inspection/inspectors/array.rb +20 -10
- data/lib/super_diff/object_inspection/inspectors/base.rb +36 -0
- data/lib/super_diff/object_inspection/inspectors/custom_object.rb +24 -14
- data/lib/super_diff/object_inspection/inspectors/default_object.rb +44 -30
- data/lib/super_diff/object_inspection/inspectors/defaults.rb +15 -0
- data/lib/super_diff/object_inspection/inspectors/hash.rb +20 -10
- data/lib/super_diff/object_inspection/inspectors/main.rb +35 -0
- data/lib/super_diff/object_inspection/inspectors/primitive.rb +20 -5
- data/lib/super_diff/object_inspection/inspectors/string.rb +15 -5
- data/lib/super_diff/object_inspection/inspectors/time_like.rb +23 -0
- data/lib/super_diff/object_inspection/nodes/inspection.rb +9 -2
- data/lib/super_diff/operation_tree_builders.rb +18 -0
- data/lib/super_diff/{operational_sequencers → operation_tree_builders}/array.rb +38 -59
- data/lib/super_diff/operation_tree_builders/base.rb +98 -0
- data/lib/super_diff/{operational_sequencers → operation_tree_builders}/custom_object.rb +3 -3
- data/lib/super_diff/{operational_sequencers → operation_tree_builders}/default_object.rb +8 -3
- data/lib/super_diff/operation_tree_builders/defaults.rb +5 -0
- data/lib/super_diff/operation_tree_builders/hash.rb +226 -0
- data/lib/super_diff/operation_tree_builders/main.rb +42 -0
- data/lib/super_diff/{operational_sequencers → operation_tree_builders}/multiline_string.rb +3 -3
- data/lib/super_diff/operation_tree_builders/time_like.rb +34 -0
- data/lib/super_diff/operation_trees.rb +13 -0
- data/lib/super_diff/{operation_sequences → operation_trees}/array.rb +5 -1
- data/lib/super_diff/operation_trees/base.rb +31 -0
- data/lib/super_diff/{operation_sequences → operation_trees}/custom_object.rb +5 -1
- data/lib/super_diff/{operation_sequences → operation_trees}/default_object.rb +10 -8
- data/lib/super_diff/operation_trees/defaults.rb +5 -0
- data/lib/super_diff/{operation_sequences → operation_trees}/hash.rb +5 -1
- data/lib/super_diff/operation_trees/main.rb +35 -0
- data/lib/super_diff/operation_trees/multiline_string.rb +18 -0
- data/lib/super_diff/operations/unary_operation.rb +3 -0
- data/lib/super_diff/rspec.rb +54 -22
- data/lib/super_diff/rspec/augmented_matcher.rb +1 -1
- data/lib/super_diff/rspec/differ.rb +2 -17
- data/lib/super_diff/rspec/differs.rb +9 -3
- data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +3 -8
- data/lib/super_diff/rspec/differs/collection_including.rb +18 -0
- data/lib/super_diff/rspec/differs/hash_including.rb +18 -0
- data/lib/super_diff/rspec/differs/object_having_attributes.rb +17 -0
- data/lib/super_diff/rspec/matcher_text_builders.rb +4 -0
- data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +26 -7
- data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +61 -0
- data/lib/super_diff/rspec/matcher_text_builders/match.rb +1 -1
- data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +13 -1
- data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +1 -1
- data/lib/super_diff/rspec/matcher_text_template.rb +1 -1
- data/lib/super_diff/rspec/monkey_patches.rb +226 -115
- data/lib/super_diff/rspec/object_inspection.rb +0 -1
- data/lib/super_diff/rspec/object_inspection/inspectors.rb +22 -6
- data/lib/super_diff/rspec/object_inspection/inspectors/collection_containing_exactly.rb +17 -8
- data/lib/super_diff/rspec/object_inspection/inspectors/collection_including.rb +28 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/hash_including.rb +31 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/instance_of.rb +23 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/kind_of.rb +23 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/object_having_attributes.rb +31 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/primitive.rb +13 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/value_within.rb +29 -0
- data/lib/super_diff/rspec/operation_tree_builders.rb +22 -0
- data/lib/super_diff/rspec/{operational_sequencers → operation_tree_builders}/collection_containing_exactly.rb +6 -6
- data/lib/super_diff/rspec/{operational_sequencers/partial_array.rb → operation_tree_builders/collection_including.rb} +4 -3
- data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +25 -0
- data/lib/super_diff/rspec/{operational_sequencers/partial_object.rb → operation_tree_builders/object_having_attributes.rb} +5 -11
- data/lib/super_diff/version.rb +1 -1
- data/spec/examples.txt +397 -328
- data/spec/integration/rails/active_record_spec.rb +1 -1
- data/spec/integration/rails/hash_with_indifferent_access_spec.rb +1 -1
- data/spec/integration/rspec/be_predicate_matcher_spec.rb +111 -59
- data/spec/integration/rspec/eq_matcher_spec.rb +139 -3
- data/spec/integration/rspec/have_attributes_matcher_spec.rb +354 -227
- data/spec/integration/rspec/have_predicate_matcher_spec.rb +484 -0
- data/spec/integration/rspec/include_matcher_spec.rb +2 -2
- data/spec/integration/rspec/match_array_matcher_spec.rb +372 -0
- data/spec/integration/rspec/match_matcher_spec.rb +8 -8
- data/spec/integration/rspec/raise_error_matcher_spec.rb +605 -226
- data/spec/integration/rspec/third_party_matcher_spec.rb +241 -0
- data/spec/integration/rspec/unhandled_errors_spec.rb +110 -58
- data/spec/spec_helper.rb +18 -7
- data/spec/support/command_runner.rb +3 -0
- data/spec/support/integration/helpers.rb +14 -90
- data/spec/support/integration/matchers.rb +143 -0
- data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +14 -29
- data/spec/support/integration/test_programs/base.rb +120 -0
- data/spec/support/integration/test_programs/plain.rb +13 -0
- data/spec/support/integration/test_programs/rspec_active_record.rb +17 -0
- data/spec/support/integration/test_programs/rspec_rails.rb +17 -0
- data/spec/support/models/active_record/person.rb +4 -11
- data/spec/support/models/active_record/query.rb +15 -0
- data/spec/support/models/active_record/shipping_address.rb +10 -14
- data/spec/support/object_id.rb +27 -0
- data/spec/support/ruby_versions.rb +4 -0
- data/spec/support/shared_examples/active_record.rb +71 -0
- data/spec/support/shared_examples/hash_with_indifferent_access.rb +724 -208
- data/spec/tmp/integration_spec.rb +15 -0
- data/spec/unit/{equality_matcher_spec.rb → equality_matchers/main_spec.rb} +165 -9
- data/spec/unit/object_inspection_spec.rb +94 -18
- data/spec/unit/rspec/matchers/have_predicate_spec.rb +21 -0
- data/spec/unit/rspec/matchers/match_array_spec.rb +11 -0
- data/spec/unit/rspec/matchers/raise_error_spec.rb +16 -0
- data/super_diff.gemspec +3 -6
- metadata +99 -91
- data/lib/super_diff/active_record/object_inspection/map_extension.rb +0 -18
- data/lib/super_diff/active_record/operational_sequencers.rb +0 -14
- data/lib/super_diff/active_support/object_inspection/map_extension.rb +0 -15
- data/lib/super_diff/active_support/operational_sequencers.rb +0 -10
- data/lib/super_diff/diff_formatter.rb +0 -32
- data/lib/super_diff/differ.rb +0 -51
- data/lib/super_diff/equality_matcher.rb +0 -32
- data/lib/super_diff/no_differ_available_error.rb +0 -22
- data/lib/super_diff/no_operational_sequencer_available_error.rb +0 -20
- data/lib/super_diff/object_inspection/inspector.rb +0 -27
- data/lib/super_diff/object_inspection/map.rb +0 -28
- data/lib/super_diff/operation_sequences.rb +0 -9
- data/lib/super_diff/operation_sequences/base.rb +0 -11
- data/lib/super_diff/operational_sequencer.rb +0 -48
- data/lib/super_diff/operational_sequencers.rb +0 -16
- data/lib/super_diff/operational_sequencers/base.rb +0 -89
- data/lib/super_diff/operational_sequencers/hash.rb +0 -85
- data/lib/super_diff/rspec/configuration.rb +0 -31
- data/lib/super_diff/rspec/differs/partial_array.rb +0 -22
- data/lib/super_diff/rspec/differs/partial_hash.rb +0 -22
- data/lib/super_diff/rspec/differs/partial_object.rb +0 -22
- data/lib/super_diff/rspec/object_inspection/inspectors/partial_array.rb +0 -22
- data/lib/super_diff/rspec/object_inspection/inspectors/partial_hash.rb +0 -21
- data/lib/super_diff/rspec/object_inspection/inspectors/partial_object.rb +0 -21
- data/lib/super_diff/rspec/object_inspection/map_extension.rb +0 -23
- data/lib/super_diff/rspec/operational_sequencers.rb +0 -22
- data/lib/super_diff/rspec/operational_sequencers/partial_hash.rb +0 -32
@@ -2,138 +2,113 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
RSpec.describe "Integration with RSpec's #raise_error matcher", type: :integration do
|
4
4
|
context "given only an exception class" do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
5
|
+
context "when used in the positive" do
|
6
|
+
context "when the block raises a different error than what is given" do
|
7
|
+
context "when the message is short" do
|
8
|
+
it "produces the correct failure message" do
|
9
|
+
as_both_colored_and_uncolored do |color_enabled|
|
10
|
+
snippet = <<~TEST.strip
|
11
|
+
expect { raise StandardError.new('boo') }.to raise_error(RuntimeError)
|
12
|
+
TEST
|
13
|
+
program = make_plain_test_program(
|
14
|
+
snippet,
|
15
|
+
color_enabled: color_enabled,
|
16
|
+
)
|
17
|
+
|
18
|
+
expected_output = build_expected_output(
|
19
|
+
color_enabled: color_enabled,
|
20
|
+
snippet: %|expect { raise StandardError.new('boo') }.to raise_error(RuntimeError)|,
|
21
|
+
expectation: proc {
|
22
|
+
line do
|
23
|
+
plain "Expected raised exception "
|
24
|
+
beta %|#<StandardError "boo">|
|
25
|
+
plain " to match "
|
26
|
+
alpha %|#<RuntimeError>|
|
27
|
+
plain "."
|
28
|
+
end
|
29
|
+
},
|
30
|
+
)
|
31
|
+
|
32
|
+
expect(program).
|
33
|
+
to produce_output_when_run(expected_output).
|
34
|
+
in_color(color_enabled)
|
25
35
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
expect(program).
|
30
|
-
to produce_output_when_run(expected_output).
|
31
|
-
in_color(color_enabled)
|
32
|
-
end
|
33
|
-
end
|
36
|
+
end
|
37
|
+
end
|
34
38
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
39
|
+
context "when the message is long" do
|
40
|
+
it "produces the correct failure message" do
|
41
|
+
as_both_colored_and_uncolored do |color_enabled|
|
42
|
+
snippet = <<~TEST.strip
|
43
|
+
expect { raise StandardError.new('this is a super super super long message') }.to raise_error(RuntimeError)
|
44
|
+
TEST
|
45
|
+
program = make_plain_test_program(
|
46
|
+
snippet,
|
47
|
+
color_enabled: color_enabled,
|
48
|
+
)
|
49
|
+
|
50
|
+
expected_output = build_expected_output(
|
51
|
+
color_enabled: color_enabled,
|
52
|
+
snippet: %|expect { raise StandardError.new('this is a super super super long message') }.to raise_error(RuntimeError)|,
|
53
|
+
newline_before_expectation: true,
|
54
|
+
expectation: proc {
|
55
|
+
line do
|
56
|
+
plain "Expected raised exception "
|
57
|
+
beta %|#<StandardError "this is a super super super long message">|
|
58
|
+
end
|
59
|
+
|
60
|
+
line do
|
61
|
+
plain " to match "
|
62
|
+
alpha %|#<RuntimeError>|
|
63
|
+
end
|
64
|
+
},
|
65
|
+
)
|
66
|
+
|
67
|
+
expect(program).
|
68
|
+
to produce_output_when_run(expected_output).
|
69
|
+
in_color(color_enabled)
|
55
70
|
end
|
56
|
-
|
57
|
-
)
|
58
|
-
|
59
|
-
expect(program).
|
60
|
-
to produce_output_when_run(expected_output).
|
61
|
-
in_color(color_enabled)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
context "with only a message (and assuming a RuntimeError)" do
|
67
|
-
context "when the message is short" do
|
68
|
-
it "produces the correct failure message when used in the positive" do
|
69
|
-
as_both_colored_and_uncolored do |color_enabled|
|
70
|
-
snippet = <<~TEST.strip
|
71
|
-
expect { raise 'boo' }.to raise_error('hell')
|
72
|
-
TEST
|
73
|
-
program = make_plain_test_program(
|
74
|
-
snippet,
|
75
|
-
color_enabled: color_enabled,
|
76
|
-
)
|
77
|
-
|
78
|
-
expected_output = build_expected_output(
|
79
|
-
color_enabled: color_enabled,
|
80
|
-
snippet: %|expect { raise 'boo' }.to raise_error('hell')|,
|
81
|
-
expectation: proc {
|
82
|
-
line do
|
83
|
-
plain "Expected raised exception "
|
84
|
-
beta %|#<RuntimeError "boo">|
|
85
|
-
plain " to match "
|
86
|
-
alpha %|#<Exception "hell">|
|
87
|
-
plain "."
|
88
|
-
end
|
89
|
-
},
|
90
|
-
)
|
91
|
-
|
92
|
-
expect(program).
|
93
|
-
to produce_output_when_run(expected_output).
|
94
|
-
in_color(color_enabled)
|
71
|
+
end
|
95
72
|
end
|
96
73
|
end
|
97
74
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
expected_output = build_expected_output(
|
109
|
-
color_enabled: color_enabled,
|
110
|
-
snippet: %|expect { raise 'boo' }.not_to raise_error('boo')|,
|
111
|
-
expectation: proc {
|
112
|
-
line do
|
113
|
-
plain "Expected raised exception "
|
114
|
-
beta %|#<RuntimeError "boo">|
|
115
|
-
plain " not to match "
|
116
|
-
alpha %|#<Exception "boo">|
|
117
|
-
plain "."
|
118
|
-
end
|
119
|
-
},
|
120
|
-
)
|
75
|
+
context "when the block raises no error" do
|
76
|
+
it "produces the correct failure message" do
|
77
|
+
as_both_colored_and_uncolored do |color_enabled|
|
78
|
+
snippet = <<~TEST.strip
|
79
|
+
expect { }.to raise_error(RuntimeError)
|
80
|
+
TEST
|
81
|
+
program = make_plain_test_program(
|
82
|
+
snippet,
|
83
|
+
color_enabled: color_enabled,
|
84
|
+
)
|
121
85
|
|
122
|
-
|
123
|
-
|
124
|
-
|
86
|
+
expected_output = build_expected_output(
|
87
|
+
color_enabled: color_enabled,
|
88
|
+
snippet: %|expect { }.to raise_error(RuntimeError)|,
|
89
|
+
expectation: proc {
|
90
|
+
line do
|
91
|
+
plain "Expected block to raise error "
|
92
|
+
alpha %|#<RuntimeError>|
|
93
|
+
plain "."
|
94
|
+
end
|
95
|
+
},
|
96
|
+
)
|
97
|
+
|
98
|
+
expect(program).
|
99
|
+
to produce_output_when_run(expected_output).
|
100
|
+
in_color(color_enabled)
|
101
|
+
end
|
125
102
|
end
|
126
103
|
end
|
127
104
|
end
|
128
105
|
|
129
|
-
context "when
|
130
|
-
context "
|
131
|
-
it "produces the correct failure message
|
106
|
+
context "when used in the negative" do
|
107
|
+
context "when the message is short" do
|
108
|
+
it "produces the correct failure message" do
|
132
109
|
as_both_colored_and_uncolored do |color_enabled|
|
133
110
|
snippet = <<~TEST.strip
|
134
|
-
|
135
|
-
expected_message = "whatever"
|
136
|
-
expect { raise(actual_message) }.to raise_error(expected_message)
|
111
|
+
expect { raise StandardError.new('boo') }.not_to raise_error(StandardError)
|
137
112
|
TEST
|
138
113
|
program = make_plain_test_program(
|
139
114
|
snippet,
|
@@ -142,17 +117,14 @@ RSpec.describe "Integration with RSpec's #raise_error matcher", type: :integrati
|
|
142
117
|
|
143
118
|
expected_output = build_expected_output(
|
144
119
|
color_enabled: color_enabled,
|
145
|
-
snippet: %|expect { raise(
|
146
|
-
newline_before_expectation: true,
|
120
|
+
snippet: %|expect { raise StandardError.new('boo') }.not_to raise_error(StandardError)|,
|
147
121
|
expectation: proc {
|
148
122
|
line do
|
149
123
|
plain "Expected raised exception "
|
150
|
-
beta %|#<
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
plain " to match "
|
155
|
-
alpha %|#<Exception "whatever">|
|
124
|
+
beta %|#<StandardError "boo">|
|
125
|
+
plain " not to match "
|
126
|
+
alpha %|#<StandardError>|
|
127
|
+
plain "."
|
156
128
|
end
|
157
129
|
},
|
158
130
|
)
|
@@ -162,12 +134,13 @@ RSpec.describe "Integration with RSpec's #raise_error matcher", type: :integrati
|
|
162
134
|
in_color(color_enabled)
|
163
135
|
end
|
164
136
|
end
|
137
|
+
end
|
165
138
|
|
166
|
-
|
139
|
+
context "when the message is long" do
|
140
|
+
it "produces the correct failure message" do
|
167
141
|
as_both_colored_and_uncolored do |color_enabled|
|
168
142
|
snippet = <<~TEST.strip
|
169
|
-
|
170
|
-
expect { raise(message) }.not_to raise_error(message)
|
143
|
+
expect { raise StandardError.new('this is a super super long message') }.not_to raise_error(StandardError)
|
171
144
|
TEST
|
172
145
|
program = make_plain_test_program(
|
173
146
|
snippet,
|
@@ -176,17 +149,17 @@ RSpec.describe "Integration with RSpec's #raise_error matcher", type: :integrati
|
|
176
149
|
|
177
150
|
expected_output = build_expected_output(
|
178
151
|
color_enabled: color_enabled,
|
179
|
-
snippet: %|expect { raise(message) }.not_to raise_error(
|
152
|
+
snippet: %|expect { raise StandardError.new('this is a super super long message') }.not_to raise_error(StandardError)|,
|
180
153
|
newline_before_expectation: true,
|
181
154
|
expectation: proc {
|
182
155
|
line do
|
183
156
|
plain "Expected raised exception "
|
184
|
-
beta %|#<
|
157
|
+
beta %|#<StandardError "this is a super super long message">|
|
185
158
|
end
|
186
159
|
|
187
160
|
line do
|
188
161
|
plain " not to match "
|
189
|
-
alpha %|#<
|
162
|
+
alpha %|#<StandardError>|
|
190
163
|
end
|
191
164
|
},
|
192
165
|
)
|
@@ -197,20 +170,244 @@ RSpec.describe "Integration with RSpec's #raise_error matcher", type: :integrati
|
|
197
170
|
end
|
198
171
|
end
|
199
172
|
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
context "with only a message (and assuming a RuntimeError)" do
|
177
|
+
context "when used in the positive" do
|
178
|
+
context "when the block raises a different error than what is given" do
|
179
|
+
context "when the message is short" do
|
180
|
+
it "produces the correct failure message" do
|
181
|
+
as_both_colored_and_uncolored do |color_enabled|
|
182
|
+
snippet = <<~TEST.strip
|
183
|
+
expect { raise 'boo' }.to raise_error('hell')
|
184
|
+
TEST
|
185
|
+
program = make_plain_test_program(
|
186
|
+
snippet,
|
187
|
+
color_enabled: color_enabled,
|
188
|
+
)
|
189
|
+
|
190
|
+
expected_output = build_expected_output(
|
191
|
+
color_enabled: color_enabled,
|
192
|
+
snippet: %|expect { raise 'boo' }.to raise_error('hell')|,
|
193
|
+
expectation: proc {
|
194
|
+
line do
|
195
|
+
plain "Expected raised exception "
|
196
|
+
beta %|#<RuntimeError "boo">|
|
197
|
+
plain " to match "
|
198
|
+
alpha %|#<Exception "hell">|
|
199
|
+
plain "."
|
200
|
+
end
|
201
|
+
},
|
202
|
+
)
|
203
|
+
|
204
|
+
expect(program).
|
205
|
+
to produce_output_when_run(expected_output).
|
206
|
+
in_color(color_enabled)
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
context "when the message is long" do
|
212
|
+
context "but contains no line breaks" do
|
213
|
+
it "produces the correct failure message when used in the positive" do
|
214
|
+
as_both_colored_and_uncolored do |color_enabled|
|
215
|
+
snippet = <<~TEST.strip
|
216
|
+
actual_message = "some really really really long message"
|
217
|
+
expected_message = "whatever"
|
218
|
+
expect { raise(actual_message) }.to raise_error(expected_message)
|
219
|
+
TEST
|
220
|
+
program = make_plain_test_program(
|
221
|
+
snippet,
|
222
|
+
color_enabled: color_enabled,
|
223
|
+
)
|
224
|
+
|
225
|
+
expected_output = build_expected_output(
|
226
|
+
color_enabled: color_enabled,
|
227
|
+
snippet: %|expect { raise(actual_message) }.to raise_error(expected_message)|,
|
228
|
+
newline_before_expectation: true,
|
229
|
+
expectation: proc {
|
230
|
+
line do
|
231
|
+
plain "Expected raised exception "
|
232
|
+
beta %|#<RuntimeError "some really really really long message">|
|
233
|
+
end
|
234
|
+
|
235
|
+
line do
|
236
|
+
plain " to match "
|
237
|
+
alpha %|#<Exception "whatever">|
|
238
|
+
end
|
239
|
+
},
|
240
|
+
)
|
241
|
+
|
242
|
+
expect(program).
|
243
|
+
to produce_output_when_run(expected_output).
|
244
|
+
in_color(color_enabled)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
context "but contains line breaks" do
|
250
|
+
it "produces the correct failure message when used in the positive" do
|
251
|
+
as_both_colored_and_uncolored do |color_enabled|
|
252
|
+
snippet = <<~TEST.strip
|
253
|
+
actual_message = <<\~MESSAGE.rstrip
|
254
|
+
This is fun
|
255
|
+
So is this
|
256
|
+
MESSAGE
|
257
|
+
expected_message = <<\~MESSAGE.rstrip
|
258
|
+
This is fun
|
259
|
+
And so is this
|
260
|
+
MESSAGE
|
261
|
+
expect { raise(actual_message) }.to raise_error(expected_message)
|
262
|
+
TEST
|
263
|
+
program = make_plain_test_program(
|
264
|
+
snippet,
|
265
|
+
color_enabled: color_enabled,
|
266
|
+
)
|
267
|
+
|
268
|
+
expected_output = build_expected_output(
|
269
|
+
color_enabled: color_enabled,
|
270
|
+
snippet: %|expect { raise(actual_message) }.to raise_error(expected_message)|,
|
271
|
+
expectation: proc {
|
272
|
+
line do
|
273
|
+
plain "Expected raised exception "
|
274
|
+
beta %|#<RuntimeError "This is fun\\nSo is this">|
|
275
|
+
end
|
276
|
+
|
277
|
+
line do
|
278
|
+
plain " to match "
|
279
|
+
alpha %|#<Exception "This is fun\\nAnd so is this">|
|
280
|
+
end
|
281
|
+
},
|
282
|
+
diff: proc {
|
283
|
+
plain_line %| This is fun\\n|
|
284
|
+
alpha_line %|- And so is this|
|
285
|
+
beta_line %|+ So is this|
|
286
|
+
},
|
287
|
+
)
|
288
|
+
|
289
|
+
expect(program).
|
290
|
+
to produce_output_when_run(expected_output).
|
291
|
+
in_color(color_enabled)
|
292
|
+
end
|
293
|
+
end
|
294
|
+
end
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
context "when the block raises no error" do
|
299
|
+
context "when the message is short" do
|
300
|
+
it "produces the correct failure message" do
|
301
|
+
as_both_colored_and_uncolored do |color_enabled|
|
302
|
+
snippet = <<~TEST.strip
|
303
|
+
expect { }.to raise_error('hell')
|
304
|
+
TEST
|
305
|
+
program = make_plain_test_program(
|
306
|
+
snippet,
|
307
|
+
color_enabled: color_enabled,
|
308
|
+
)
|
309
|
+
|
310
|
+
expected_output = build_expected_output(
|
311
|
+
color_enabled: color_enabled,
|
312
|
+
snippet: %|expect { }.to raise_error('hell')|,
|
313
|
+
expectation: proc {
|
314
|
+
line do
|
315
|
+
plain "Expected block to raise error "
|
316
|
+
alpha %|#<Exception "hell">|
|
317
|
+
plain "."
|
318
|
+
end
|
319
|
+
},
|
320
|
+
)
|
321
|
+
|
322
|
+
expect(program).
|
323
|
+
to produce_output_when_run(expected_output).
|
324
|
+
in_color(color_enabled)
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
end
|
329
|
+
|
330
|
+
context "when the message is long" do
|
331
|
+
context "but contains no line breaks" do
|
332
|
+
it "produces the correct failure message" do
|
333
|
+
as_both_colored_and_uncolored do |color_enabled|
|
334
|
+
snippet = <<~TEST.strip
|
335
|
+
expect { }.to raise_error("this is a super super super super super super long message")
|
336
|
+
TEST
|
337
|
+
program = make_plain_test_program(
|
338
|
+
snippet,
|
339
|
+
color_enabled: color_enabled,
|
340
|
+
)
|
341
|
+
|
342
|
+
expected_output = build_expected_output(
|
343
|
+
color_enabled: color_enabled,
|
344
|
+
snippet: %|expect { }.to raise_error("this is a super super super super super super long message")|,
|
345
|
+
newline_before_expectation: true,
|
346
|
+
expectation: proc {
|
347
|
+
line do
|
348
|
+
plain " Expected "
|
349
|
+
plain "block"
|
350
|
+
end
|
351
|
+
|
352
|
+
line do
|
353
|
+
plain "to raise error "
|
354
|
+
alpha %|#<Exception "this is a super super super super super super long message">|
|
355
|
+
end
|
356
|
+
},
|
357
|
+
)
|
358
|
+
|
359
|
+
expect(program).
|
360
|
+
to produce_output_when_run(expected_output).
|
361
|
+
in_color(color_enabled)
|
362
|
+
end
|
363
|
+
end
|
364
|
+
end
|
365
|
+
|
366
|
+
context "but contains line breaks" do
|
367
|
+
it "produces the correct failure message when used in the negative" do
|
368
|
+
as_both_colored_and_uncolored do |color_enabled|
|
369
|
+
snippet = <<~TEST.strip
|
370
|
+
message = "some really long message"
|
371
|
+
expect { raise(message) }.not_to raise_error(message)
|
372
|
+
TEST
|
373
|
+
program = make_plain_test_program(
|
374
|
+
snippet,
|
375
|
+
color_enabled: color_enabled,
|
376
|
+
)
|
377
|
+
|
378
|
+
expected_output = build_expected_output(
|
379
|
+
color_enabled: color_enabled,
|
380
|
+
snippet: %|expect { raise(message) }.not_to raise_error(message)|,
|
381
|
+
newline_before_expectation: true,
|
382
|
+
expectation: proc {
|
383
|
+
line do
|
384
|
+
plain "Expected raised exception "
|
385
|
+
beta %|#<RuntimeError "some really long message">|
|
386
|
+
end
|
387
|
+
|
388
|
+
line do
|
389
|
+
plain " not to match "
|
390
|
+
alpha %|#<Exception "some really long message">|
|
391
|
+
end
|
392
|
+
},
|
393
|
+
)
|
394
|
+
|
395
|
+
expect(program).
|
396
|
+
to produce_output_when_run(expected_output).
|
397
|
+
in_color(color_enabled)
|
398
|
+
end
|
399
|
+
end
|
400
|
+
end
|
401
|
+
end
|
402
|
+
end
|
403
|
+
end
|
200
404
|
|
201
|
-
|
202
|
-
|
405
|
+
context "when used in the negative" do
|
406
|
+
context "when the message is short" do
|
407
|
+
it "produces the correct failure message" do
|
203
408
|
as_both_colored_and_uncolored do |color_enabled|
|
204
409
|
snippet = <<~TEST.strip
|
205
|
-
|
206
|
-
This is fun
|
207
|
-
So is this
|
208
|
-
MESSAGE
|
209
|
-
expected_message = <<\~MESSAGE.rstrip
|
210
|
-
This is fun
|
211
|
-
And so is this
|
212
|
-
MESSAGE
|
213
|
-
expect { raise(actual_message) }.to raise_error(expected_message)
|
410
|
+
expect { raise 'boo' }.not_to raise_error('boo')
|
214
411
|
TEST
|
215
412
|
program = make_plain_test_program(
|
216
413
|
snippet,
|
@@ -219,23 +416,270 @@ RSpec.describe "Integration with RSpec's #raise_error matcher", type: :integrati
|
|
219
416
|
|
220
417
|
expected_output = build_expected_output(
|
221
418
|
color_enabled: color_enabled,
|
222
|
-
snippet: %|expect { raise
|
419
|
+
snippet: %|expect { raise 'boo' }.not_to raise_error('boo')|,
|
223
420
|
expectation: proc {
|
224
421
|
line do
|
225
422
|
plain "Expected raised exception "
|
226
|
-
beta %|#<RuntimeError "
|
423
|
+
beta %|#<RuntimeError "boo">|
|
424
|
+
plain " not to match "
|
425
|
+
alpha %|#<Exception "boo">|
|
426
|
+
plain "."
|
227
427
|
end
|
428
|
+
},
|
429
|
+
)
|
430
|
+
|
431
|
+
expect(program).
|
432
|
+
to produce_output_when_run(expected_output).
|
433
|
+
in_color(color_enabled)
|
434
|
+
end
|
435
|
+
end
|
436
|
+
end
|
228
437
|
|
438
|
+
context "when the message is long" do
|
439
|
+
context "but contains no line breaks" do
|
440
|
+
it "produces the correct failure message" do
|
441
|
+
as_both_colored_and_uncolored do |color_enabled|
|
442
|
+
snippet = <<~TEST.strip
|
443
|
+
message = "some really long message"
|
444
|
+
expect { raise(message) }.not_to raise_error(message)
|
445
|
+
TEST
|
446
|
+
program = make_plain_test_program(
|
447
|
+
snippet,
|
448
|
+
color_enabled: color_enabled,
|
449
|
+
)
|
450
|
+
|
451
|
+
expected_output = build_expected_output(
|
452
|
+
color_enabled: color_enabled,
|
453
|
+
snippet: %|expect { raise(message) }.not_to raise_error(message)|,
|
454
|
+
newline_before_expectation: true,
|
455
|
+
expectation: proc {
|
456
|
+
line do
|
457
|
+
plain "Expected raised exception "
|
458
|
+
beta %|#<RuntimeError "some really long message">|
|
459
|
+
end
|
460
|
+
|
461
|
+
line do
|
462
|
+
plain " not to match "
|
463
|
+
alpha %|#<Exception "some really long message">|
|
464
|
+
end
|
465
|
+
},
|
466
|
+
)
|
467
|
+
|
468
|
+
expect(program).
|
469
|
+
to produce_output_when_run(expected_output).
|
470
|
+
in_color(color_enabled)
|
471
|
+
end
|
472
|
+
end
|
473
|
+
end
|
474
|
+
|
475
|
+
context "but contains line breaks" do
|
476
|
+
it "produces the correct failure message" do
|
477
|
+
as_both_colored_and_uncolored do |color_enabled|
|
478
|
+
snippet = <<~TEST.strip
|
479
|
+
message = <<\~MESSAGE.rstrip
|
480
|
+
This is fun
|
481
|
+
So is this
|
482
|
+
MESSAGE
|
483
|
+
expect { raise(message) }.not_to raise_error(message)
|
484
|
+
TEST
|
485
|
+
program = make_plain_test_program(
|
486
|
+
snippet,
|
487
|
+
color_enabled: color_enabled,
|
488
|
+
)
|
489
|
+
|
490
|
+
expected_output = build_expected_output(
|
491
|
+
color_enabled: color_enabled,
|
492
|
+
snippet: %|expect { raise(message) }.not_to raise_error(message)|,
|
493
|
+
newline_before_expectation: true,
|
494
|
+
expectation: proc {
|
495
|
+
line do
|
496
|
+
plain "Expected raised exception "
|
497
|
+
beta %|#<RuntimeError "This is fun\\nSo is this">|
|
498
|
+
end
|
499
|
+
|
500
|
+
line do
|
501
|
+
plain " not to match "
|
502
|
+
alpha %|#<Exception "This is fun\\nSo is this">|
|
503
|
+
end
|
504
|
+
},
|
505
|
+
)
|
506
|
+
|
507
|
+
expect(program).
|
508
|
+
to produce_output_when_run(expected_output).
|
509
|
+
in_color(color_enabled)
|
510
|
+
end
|
511
|
+
end
|
512
|
+
end
|
513
|
+
end
|
514
|
+
end
|
515
|
+
end
|
516
|
+
|
517
|
+
context "with both an exception and a message" do
|
518
|
+
context "when used in the positive" do
|
519
|
+
context "when the block raises a different error than what is given" do
|
520
|
+
context "when the message is short" do
|
521
|
+
it "produces the correct failure message" do
|
522
|
+
as_both_colored_and_uncolored do |color_enabled|
|
523
|
+
snippet = <<~TEST.strip
|
524
|
+
block = -> { raise StandardError.new('a') }
|
525
|
+
expect(&block).to raise_error(RuntimeError, 'b')
|
526
|
+
TEST
|
527
|
+
program = make_plain_test_program(
|
528
|
+
snippet,
|
529
|
+
color_enabled: color_enabled,
|
530
|
+
)
|
531
|
+
|
532
|
+
expected_output = build_expected_output(
|
533
|
+
color_enabled: color_enabled,
|
534
|
+
snippet: %|expect(&block).to raise_error(RuntimeError, 'b')|,
|
535
|
+
expectation: proc {
|
536
|
+
line do
|
537
|
+
plain "Expected raised exception "
|
538
|
+
beta %|#<StandardError "a">|
|
539
|
+
plain " to match "
|
540
|
+
alpha %|#<RuntimeError "b">|
|
541
|
+
plain "."
|
542
|
+
end
|
543
|
+
},
|
544
|
+
)
|
545
|
+
|
546
|
+
expect(program).
|
547
|
+
to produce_output_when_run(expected_output).
|
548
|
+
in_color(color_enabled)
|
549
|
+
end
|
550
|
+
end
|
551
|
+
end
|
552
|
+
|
553
|
+
context "when the message is long" do
|
554
|
+
it "produces the correct failure message" do
|
555
|
+
as_both_colored_and_uncolored do |color_enabled|
|
556
|
+
snippet = <<~TEST.strip
|
557
|
+
block = -> { raise StandardError.new('this is a long message') }
|
558
|
+
expect(&block).to raise_error(RuntimeError, 'this is another long message')
|
559
|
+
TEST
|
560
|
+
program = make_plain_test_program(
|
561
|
+
snippet,
|
562
|
+
color_enabled: color_enabled,
|
563
|
+
)
|
564
|
+
|
565
|
+
expected_output = build_expected_output(
|
566
|
+
color_enabled: color_enabled,
|
567
|
+
snippet: %|expect(&block).to raise_error(RuntimeError, 'this is another long message')|,
|
568
|
+
newline_before_expectation: true,
|
569
|
+
expectation: proc {
|
570
|
+
line do
|
571
|
+
plain "Expected raised exception "
|
572
|
+
beta %|#<StandardError "this is a long message">|
|
573
|
+
end
|
574
|
+
|
575
|
+
line do
|
576
|
+
plain " to match "
|
577
|
+
alpha %|#<RuntimeError "this is another long message">|
|
578
|
+
end
|
579
|
+
},
|
580
|
+
)
|
581
|
+
|
582
|
+
expect(program).
|
583
|
+
to produce_output_when_run(expected_output).
|
584
|
+
in_color(color_enabled)
|
585
|
+
end
|
586
|
+
end
|
587
|
+
end
|
588
|
+
end
|
589
|
+
|
590
|
+
context "when the block raises no error" do
|
591
|
+
context "when the message is short" do
|
592
|
+
it "produces the correct failure message" do
|
593
|
+
as_both_colored_and_uncolored do |color_enabled|
|
594
|
+
snippet = <<~TEST.strip
|
595
|
+
expect { }.to raise_error(RuntimeError, 'b')
|
596
|
+
TEST
|
597
|
+
program = make_plain_test_program(
|
598
|
+
snippet,
|
599
|
+
color_enabled: color_enabled,
|
600
|
+
)
|
601
|
+
|
602
|
+
expected_output = build_expected_output(
|
603
|
+
color_enabled: color_enabled,
|
604
|
+
snippet: %|expect { }.to raise_error(RuntimeError, 'b')|,
|
605
|
+
expectation: proc {
|
606
|
+
line do
|
607
|
+
plain "Expected block to raise error "
|
608
|
+
alpha %|#<RuntimeError "b">|
|
609
|
+
plain "."
|
610
|
+
end
|
611
|
+
},
|
612
|
+
)
|
613
|
+
|
614
|
+
expect(program).
|
615
|
+
to produce_output_when_run(expected_output).
|
616
|
+
in_color(color_enabled)
|
617
|
+
end
|
618
|
+
end
|
619
|
+
end
|
620
|
+
|
621
|
+
context "when the message is long" do
|
622
|
+
it "produces the correct failure message" do
|
623
|
+
as_both_colored_and_uncolored do |color_enabled|
|
624
|
+
snippet = <<~TEST.strip
|
625
|
+
expect { }.to raise_error(RuntimeError, 'this is a super super super super super super long message')
|
626
|
+
TEST
|
627
|
+
program = make_plain_test_program(
|
628
|
+
snippet,
|
629
|
+
color_enabled: color_enabled,
|
630
|
+
)
|
631
|
+
|
632
|
+
expected_output = build_expected_output(
|
633
|
+
color_enabled: color_enabled,
|
634
|
+
snippet: %|expect { }.to raise_error(RuntimeError, 'this is a super super super super super super long message')|,
|
635
|
+
newline_before_expectation: true,
|
636
|
+
expectation: proc {
|
637
|
+
line do
|
638
|
+
plain " Expected "
|
639
|
+
plain "block"
|
640
|
+
end
|
641
|
+
|
642
|
+
line do
|
643
|
+
plain "to raise error "
|
644
|
+
alpha %|#<RuntimeError "this is a super super super super super super long message">|
|
645
|
+
end
|
646
|
+
},
|
647
|
+
)
|
648
|
+
|
649
|
+
expect(program).
|
650
|
+
to produce_output_when_run(expected_output).
|
651
|
+
in_color(color_enabled)
|
652
|
+
end
|
653
|
+
end
|
654
|
+
end
|
655
|
+
end
|
656
|
+
end
|
657
|
+
|
658
|
+
context "when used in the negative" do
|
659
|
+
context "when the message is short" do
|
660
|
+
it "produces the correct failure message" do
|
661
|
+
as_both_colored_and_uncolored do |color_enabled|
|
662
|
+
snippet = <<~TEST.strip
|
663
|
+
block = -> { raise StandardError.new('a') }
|
664
|
+
expect(&block).not_to raise_error(StandardError, 'a')
|
665
|
+
TEST
|
666
|
+
program = make_plain_test_program(
|
667
|
+
snippet,
|
668
|
+
color_enabled: color_enabled,
|
669
|
+
)
|
670
|
+
|
671
|
+
expected_output = build_expected_output(
|
672
|
+
color_enabled: color_enabled,
|
673
|
+
snippet: %|expect(&block).not_to raise_error(StandardError, 'a')|,
|
674
|
+
expectation: proc {
|
229
675
|
line do
|
230
|
-
plain "
|
231
|
-
|
676
|
+
plain "Expected raised exception "
|
677
|
+
beta %|#<StandardError "a">|
|
678
|
+
plain " not to match "
|
679
|
+
alpha %|#<StandardError "a">|
|
680
|
+
plain "."
|
232
681
|
end
|
233
682
|
},
|
234
|
-
diff: proc {
|
235
|
-
plain_line %| This is fun\\n|
|
236
|
-
alpha_line %|- And so is this|
|
237
|
-
beta_line %|+ So is this|
|
238
|
-
},
|
239
683
|
)
|
240
684
|
|
241
685
|
expect(program).
|
@@ -243,15 +687,14 @@ RSpec.describe "Integration with RSpec's #raise_error matcher", type: :integrati
|
|
243
687
|
in_color(color_enabled)
|
244
688
|
end
|
245
689
|
end
|
690
|
+
end
|
246
691
|
|
247
|
-
|
692
|
+
context "when the message is long" do
|
693
|
+
it "produces the correct failure message" do
|
248
694
|
as_both_colored_and_uncolored do |color_enabled|
|
249
695
|
snippet = <<~TEST.strip
|
250
|
-
|
251
|
-
|
252
|
-
So is this
|
253
|
-
MESSAGE
|
254
|
-
expect { raise(message) }.not_to raise_error(message)
|
696
|
+
block = -> { raise StandardError.new('this is a long message') }
|
697
|
+
expect(&block).not_to raise_error(StandardError, 'this is a long message')
|
255
698
|
TEST
|
256
699
|
program = make_plain_test_program(
|
257
700
|
snippet,
|
@@ -260,17 +703,17 @@ RSpec.describe "Integration with RSpec's #raise_error matcher", type: :integrati
|
|
260
703
|
|
261
704
|
expected_output = build_expected_output(
|
262
705
|
color_enabled: color_enabled,
|
263
|
-
snippet: %|expect
|
706
|
+
snippet: %|expect(&block).not_to raise_error(StandardError, 'this is a long message')|,
|
264
707
|
newline_before_expectation: true,
|
265
708
|
expectation: proc {
|
266
709
|
line do
|
267
710
|
plain "Expected raised exception "
|
268
|
-
beta %|#<
|
711
|
+
beta %|#<StandardError "this is a long message">|
|
269
712
|
end
|
270
713
|
|
271
714
|
line do
|
272
715
|
plain " not to match "
|
273
|
-
alpha %|#<
|
716
|
+
alpha %|#<StandardError "this is a long message">|
|
274
717
|
end
|
275
718
|
},
|
276
719
|
)
|
@@ -283,68 +726,4 @@ RSpec.describe "Integration with RSpec's #raise_error matcher", type: :integrati
|
|
283
726
|
end
|
284
727
|
end
|
285
728
|
end
|
286
|
-
|
287
|
-
context "with both an exception and a message" do
|
288
|
-
it "produces the correct failure message when used in the positive" do
|
289
|
-
as_both_colored_and_uncolored do |color_enabled|
|
290
|
-
snippet = <<~TEST.strip
|
291
|
-
block = -> { raise StandardError.new('a') }
|
292
|
-
expect(&block).to raise_error(RuntimeError, 'b')
|
293
|
-
TEST
|
294
|
-
program = make_plain_test_program(
|
295
|
-
snippet,
|
296
|
-
color_enabled: color_enabled,
|
297
|
-
)
|
298
|
-
|
299
|
-
expected_output = build_expected_output(
|
300
|
-
color_enabled: color_enabled,
|
301
|
-
snippet: %|expect(&block).to raise_error(RuntimeError, 'b')|,
|
302
|
-
expectation: proc {
|
303
|
-
line do
|
304
|
-
plain "Expected raised exception "
|
305
|
-
beta %|#<StandardError "a">|
|
306
|
-
plain " to match "
|
307
|
-
alpha %|#<RuntimeError "b">|
|
308
|
-
plain "."
|
309
|
-
end
|
310
|
-
},
|
311
|
-
)
|
312
|
-
|
313
|
-
expect(program).
|
314
|
-
to produce_output_when_run(expected_output).
|
315
|
-
in_color(color_enabled)
|
316
|
-
end
|
317
|
-
end
|
318
|
-
|
319
|
-
it "produces the correct failure message when used in the negative" do
|
320
|
-
as_both_colored_and_uncolored do |color_enabled|
|
321
|
-
snippet = <<~TEST.strip
|
322
|
-
block = -> { raise StandardError.new('a') }
|
323
|
-
expect(&block).not_to raise_error(StandardError, 'a')
|
324
|
-
TEST
|
325
|
-
program = make_plain_test_program(
|
326
|
-
snippet,
|
327
|
-
color_enabled: color_enabled,
|
328
|
-
)
|
329
|
-
|
330
|
-
expected_output = build_expected_output(
|
331
|
-
color_enabled: color_enabled,
|
332
|
-
snippet: %|expect(&block).not_to raise_error(StandardError, 'a')|,
|
333
|
-
expectation: proc {
|
334
|
-
line do
|
335
|
-
plain "Expected raised exception "
|
336
|
-
beta %|#<StandardError "a">|
|
337
|
-
plain " not to match "
|
338
|
-
alpha %|#<StandardError "a">|
|
339
|
-
plain "."
|
340
|
-
end
|
341
|
-
},
|
342
|
-
)
|
343
|
-
|
344
|
-
expect(program).
|
345
|
-
to produce_output_when_run(expected_output).
|
346
|
-
in_color(color_enabled)
|
347
|
-
end
|
348
|
-
end
|
349
|
-
end
|
350
729
|
end
|