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
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
RSpec.describe "Integration with Rails's ActiveRecord class", type: :integration do
|
3
|
+
RSpec.describe "Integration with Rails's ActiveRecord class", type: :integration, active_record: true do
|
4
4
|
context "when using 'super_diff/rspec-rails'" do
|
5
5
|
include_context "integration with ActiveRecord"
|
6
6
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
RSpec.describe "Integration with Rails's HashWithIndifferentAccess", type: :integration do
|
3
|
+
RSpec.describe "Integration with Rails's HashWithIndifferentAccess", type: :integration, active_record: true do
|
4
4
|
context "when using 'super_diff/rspec-rails'" do
|
5
5
|
include_context "integration with HashWithIndifferentAccess"
|
6
6
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
RSpec.describe "Integration with RSpec's #be_
|
3
|
+
RSpec.describe "Integration with RSpec's #be_<predicate> matcher", type: :integration do
|
4
4
|
# rubocop:disable Metrics/BlockLength
|
5
5
|
["be", "be_a", "be_an"].each do |prefix|
|
6
6
|
# rubocop:enable Metrics/BlockLength
|
@@ -23,9 +23,9 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
23
23
|
plain "Expected "
|
24
24
|
beta %|:foo|
|
25
25
|
plain " to respond to "
|
26
|
-
alpha
|
26
|
+
alpha %|strong?|
|
27
27
|
plain " or "
|
28
|
-
alpha
|
28
|
+
alpha %|strongs?|
|
29
29
|
plain "."
|
30
30
|
end
|
31
31
|
},
|
@@ -42,7 +42,7 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
42
42
|
it "produces the correct failure message" do
|
43
43
|
as_both_colored_and_uncolored do |color_enabled|
|
44
44
|
snippet = <<~TEST.strip
|
45
|
-
hash = { foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz" }
|
45
|
+
hash = { foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz", aaaaaa: "bbbbbb" }
|
46
46
|
expect(hash).to #{prefix}_strong
|
47
47
|
TEST
|
48
48
|
program = make_plain_test_program(
|
@@ -57,14 +57,14 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
57
57
|
expectation: proc {
|
58
58
|
line do
|
59
59
|
plain " Expected "
|
60
|
-
beta %|{ foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz" }|
|
60
|
+
beta %|{ foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz", aaaaaa: "bbbbbb" }|
|
61
61
|
end
|
62
62
|
|
63
63
|
line do
|
64
64
|
plain "to respond to "
|
65
|
-
alpha
|
65
|
+
alpha %|strong?|
|
66
66
|
plain " or "
|
67
|
-
alpha
|
67
|
+
alpha %|strongs?|
|
68
68
|
end
|
69
69
|
},
|
70
70
|
)
|
@@ -102,9 +102,9 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
102
102
|
plain "Expected "
|
103
103
|
beta %|#<Foo>|
|
104
104
|
plain " to have a public method "
|
105
|
-
alpha
|
105
|
+
alpha %|strong?|
|
106
106
|
plain " or "
|
107
|
-
alpha
|
107
|
+
alpha %|strongs?|
|
108
108
|
plain "."
|
109
109
|
end
|
110
110
|
},
|
@@ -147,9 +147,9 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
147
147
|
|
148
148
|
line do
|
149
149
|
plain "to have a public method "
|
150
|
-
alpha
|
150
|
+
alpha %|strong?|
|
151
151
|
plain " or "
|
152
|
-
alpha
|
152
|
+
alpha %|strongs?|
|
153
153
|
end
|
154
154
|
},
|
155
155
|
)
|
@@ -190,9 +190,9 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
190
190
|
plain "Expected "
|
191
191
|
beta %|#<Foo>|
|
192
192
|
plain " to return a truthy result for "
|
193
|
-
alpha
|
193
|
+
alpha %|true?|
|
194
194
|
plain " or "
|
195
|
-
alpha
|
195
|
+
alpha %|trues?|
|
196
196
|
plain "."
|
197
197
|
end
|
198
198
|
|
@@ -200,9 +200,9 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
200
200
|
|
201
201
|
line do
|
202
202
|
plain "(Perhaps you want to use "
|
203
|
-
blue "
|
203
|
+
blue "be(true)"
|
204
204
|
plain " or "
|
205
|
-
blue "
|
205
|
+
blue "be_truthy"
|
206
206
|
plain " instead?)"
|
207
207
|
end
|
208
208
|
},
|
@@ -250,18 +250,18 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
250
250
|
|
251
251
|
line do
|
252
252
|
plain "to return a truthy result for "
|
253
|
-
alpha
|
253
|
+
alpha %|true?|
|
254
254
|
plain " or "
|
255
|
-
alpha
|
255
|
+
alpha %|trues?|
|
256
256
|
end
|
257
257
|
|
258
258
|
newline
|
259
259
|
|
260
260
|
line do
|
261
261
|
plain "(Perhaps you want to use "
|
262
|
-
blue "
|
262
|
+
blue "be(true)"
|
263
263
|
plain " or "
|
264
|
-
blue "
|
264
|
+
blue "be_truthy"
|
265
265
|
plain " instead?)"
|
266
266
|
end
|
267
267
|
},
|
@@ -300,9 +300,9 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
300
300
|
plain "Expected "
|
301
301
|
beta %|#<X>|
|
302
302
|
plain " to return a truthy result for "
|
303
|
-
alpha
|
303
|
+
alpha %|false?|
|
304
304
|
plain " or "
|
305
|
-
alpha
|
305
|
+
alpha %|falses?|
|
306
306
|
plain "."
|
307
307
|
end
|
308
308
|
},
|
@@ -341,9 +341,9 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
341
341
|
plain "Expected "
|
342
342
|
beta %|#<X>|
|
343
343
|
plain " to return a truthy result for "
|
344
|
-
alpha
|
344
|
+
alpha %|y?|
|
345
345
|
plain " or "
|
346
|
-
alpha
|
346
|
+
alpha %|ys?|
|
347
347
|
plain "."
|
348
348
|
end
|
349
349
|
},
|
@@ -392,9 +392,9 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
392
392
|
|
393
393
|
line do
|
394
394
|
plain "to return a truthy result for "
|
395
|
-
alpha
|
395
|
+
alpha %|y?|
|
396
396
|
plain " or "
|
397
|
-
alpha
|
397
|
+
alpha %|ys?|
|
398
398
|
end
|
399
399
|
},
|
400
400
|
)
|
@@ -432,9 +432,9 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
432
432
|
plain "Expected "
|
433
433
|
beta %|#<X>|
|
434
434
|
plain " to return a truthy result for "
|
435
|
-
alpha
|
435
|
+
alpha %|y?|
|
436
436
|
plain " or "
|
437
|
-
alpha
|
437
|
+
alpha %|ys?|
|
438
438
|
plain "."
|
439
439
|
end
|
440
440
|
},
|
@@ -483,9 +483,9 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
483
483
|
|
484
484
|
line do
|
485
485
|
plain "to return a truthy result for "
|
486
|
-
alpha
|
486
|
+
alpha %|y?|
|
487
487
|
plain " or "
|
488
|
-
alpha
|
488
|
+
alpha %|ys?|
|
489
489
|
end
|
490
490
|
},
|
491
491
|
)
|
@@ -502,40 +502,92 @@ RSpec.describe "Integration with RSpec's #be_* matcher", type: :integration do
|
|
502
502
|
end
|
503
503
|
|
504
504
|
context "and returns true" do
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
505
|
+
context "when the inspected version of the actual value is short" do
|
506
|
+
it "produces the correct failure message when used in the negative" do
|
507
|
+
as_both_colored_and_uncolored do |color_enabled|
|
508
|
+
snippet = <<~TEST.strip
|
509
|
+
class Foo
|
510
|
+
def strong?; true; end
|
511
|
+
end
|
511
512
|
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
513
|
+
expect(Foo.new).not_to #{prefix}_strong
|
514
|
+
TEST
|
515
|
+
program = make_plain_test_program(
|
516
|
+
snippet,
|
517
|
+
color_enabled: color_enabled,
|
518
|
+
)
|
518
519
|
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
520
|
+
expected_output = build_expected_output(
|
521
|
+
color_enabled: color_enabled,
|
522
|
+
snippet: %|expect(Foo.new).not_to #{prefix}_strong|,
|
523
|
+
expectation: proc {
|
524
|
+
line do
|
525
|
+
plain "Expected "
|
526
|
+
beta %|#<Foo>|
|
527
|
+
plain " not to return a truthy result for "
|
528
|
+
alpha %|strong?|
|
529
|
+
plain " or "
|
530
|
+
alpha %|strongs?|
|
531
|
+
plain "."
|
532
|
+
end
|
533
|
+
},
|
534
|
+
)
|
535
|
+
|
536
|
+
expect(program).
|
537
|
+
to produce_output_when_run(expected_output).
|
538
|
+
in_color(color_enabled).
|
539
|
+
removing_object_ids
|
540
|
+
end
|
541
|
+
end
|
542
|
+
end
|
543
|
+
|
544
|
+
context "when the inspected version of the actual value is long" do
|
545
|
+
it "produces the correct failure message when used in the negative" do
|
546
|
+
as_both_colored_and_uncolored do |color_enabled|
|
547
|
+
snippet = <<~TEST.strip
|
548
|
+
hash = {
|
549
|
+
foo: "bar",
|
550
|
+
baz: "qux",
|
551
|
+
blargh: "foz",
|
552
|
+
fizz: "buzz",
|
553
|
+
aaaaaa: "bbbbbb"
|
554
|
+
}
|
555
|
+
|
556
|
+
class << hash
|
557
|
+
def ys?; true; end
|
531
558
|
end
|
532
|
-
},
|
533
|
-
)
|
534
559
|
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
560
|
+
expect(hash).not_to #{prefix}_y
|
561
|
+
TEST
|
562
|
+
program = make_plain_test_program(
|
563
|
+
snippet,
|
564
|
+
color_enabled: color_enabled,
|
565
|
+
)
|
566
|
+
|
567
|
+
expected_output = build_expected_output(
|
568
|
+
color_enabled: color_enabled,
|
569
|
+
snippet: %|expect(hash).not_to #{prefix}_y|,
|
570
|
+
newline_before_expectation: true,
|
571
|
+
expectation: proc {
|
572
|
+
line do
|
573
|
+
plain " Expected "
|
574
|
+
beta %|{ foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz", aaaaaa: "bbbbbb" }|
|
575
|
+
end
|
576
|
+
|
577
|
+
line do
|
578
|
+
plain "not to return a truthy result for "
|
579
|
+
alpha %|y?|
|
580
|
+
plain " or "
|
581
|
+
alpha %|ys?|
|
582
|
+
end
|
583
|
+
},
|
584
|
+
)
|
585
|
+
|
586
|
+
expect(program).
|
587
|
+
to produce_output_when_run(expected_output).
|
588
|
+
in_color(color_enabled).
|
589
|
+
removing_object_ids
|
590
|
+
end
|
539
591
|
end
|
540
592
|
end
|
541
593
|
end
|
@@ -142,7 +142,7 @@ RSpec.describe "Integration with RSpec's #eq matcher", type: :integration do
|
|
142
142
|
|
143
143
|
it "produces the correct failure message when used in the negative" do
|
144
144
|
as_both_colored_and_uncolored do |color_enabled|
|
145
|
-
snippet = %|expect("Jennifer").
|
145
|
+
snippet = %|expect("Jennifer").not_to eq("Jennifer")|
|
146
146
|
program = make_plain_test_program(
|
147
147
|
snippet,
|
148
148
|
color_enabled: color_enabled,
|
@@ -150,16 +150,152 @@ RSpec.describe "Integration with RSpec's #eq matcher", type: :integration do
|
|
150
150
|
|
151
151
|
expected_output = build_expected_output(
|
152
152
|
color_enabled: color_enabled,
|
153
|
-
snippet: %|expect("Jennifer").
|
153
|
+
snippet: %|expect("Jennifer").not_to eq("Jennifer")|,
|
154
154
|
expectation: proc {
|
155
155
|
line do
|
156
156
|
plain "Expected "
|
157
157
|
beta %|"Jennifer"|
|
158
|
+
plain " not to eq "
|
159
|
+
alpha %|"Jennifer"|
|
160
|
+
plain "."
|
161
|
+
end
|
162
|
+
},
|
163
|
+
)
|
164
|
+
|
165
|
+
expect(program).
|
166
|
+
to produce_output_when_run(expected_output).
|
167
|
+
in_color(color_enabled)
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
context "when comparing two different Time instances" do
|
173
|
+
it "produces the correct failure message when used in the positive" do
|
174
|
+
as_both_colored_and_uncolored do |color_enabled|
|
175
|
+
snippet = <<~RUBY
|
176
|
+
expected = Time.utc(2011, 12, 13, 14, 15, 16)
|
177
|
+
actual = Time.utc(2011, 12, 13, 14, 15, 16, 500_000)
|
178
|
+
expect(expected).to eq(actual)
|
179
|
+
RUBY
|
180
|
+
program = make_plain_test_program(
|
181
|
+
snippet,
|
182
|
+
color_enabled: color_enabled,
|
183
|
+
)
|
184
|
+
|
185
|
+
expected_output = build_expected_output(
|
186
|
+
color_enabled: color_enabled,
|
187
|
+
snippet: %|expect(expected).to eq(actual)|,
|
188
|
+
expectation: proc {
|
189
|
+
line do
|
190
|
+
plain "Expected "
|
191
|
+
beta %|2011-12-13 14:15:16.000 UTC +00:00 (Time)|
|
158
192
|
plain " to eq "
|
159
|
-
alpha %|
|
193
|
+
alpha %|2011-12-13 14:15:16.500 UTC +00:00 (Time)|
|
160
194
|
plain "."
|
161
195
|
end
|
162
196
|
},
|
197
|
+
diff: proc {
|
198
|
+
plain_line " #<Time {"
|
199
|
+
plain_line " year: 2011,"
|
200
|
+
plain_line " month: 12,"
|
201
|
+
plain_line " day: 13,"
|
202
|
+
plain_line " hour: 14,"
|
203
|
+
plain_line " min: 15,"
|
204
|
+
plain_line " sec: 16,"
|
205
|
+
alpha_line "- nsec: 500000000,"
|
206
|
+
beta_line "+ nsec: 0,"
|
207
|
+
plain_line " zone: \"UTC\","
|
208
|
+
plain_line " gmt_offset: 0"
|
209
|
+
plain_line " }>"
|
210
|
+
},
|
211
|
+
)
|
212
|
+
|
213
|
+
expect(program).
|
214
|
+
to produce_output_when_run(expected_output).
|
215
|
+
in_color(color_enabled)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
it "produces the correct failure message when used in the negative" do
|
220
|
+
as_both_colored_and_uncolored do |color_enabled|
|
221
|
+
snippet = <<~RUBY
|
222
|
+
time = Time.utc(2011, 12, 13, 14, 15, 16)
|
223
|
+
expect(time).not_to eq(time)
|
224
|
+
RUBY
|
225
|
+
program = make_plain_test_program(
|
226
|
+
snippet,
|
227
|
+
color_enabled: color_enabled,
|
228
|
+
)
|
229
|
+
|
230
|
+
expected_output = build_expected_output(
|
231
|
+
color_enabled: color_enabled,
|
232
|
+
snippet: %|expect(time).not_to eq(time)|,
|
233
|
+
newline_before_expectation: true,
|
234
|
+
expectation: proc {
|
235
|
+
line do
|
236
|
+
plain " Expected "
|
237
|
+
beta %|2011-12-13 14:15:16.000 UTC +00:00 (Time)|
|
238
|
+
end
|
239
|
+
|
240
|
+
line do
|
241
|
+
plain "not to eq "
|
242
|
+
alpha %|2011-12-13 14:15:16.000 UTC +00:00 (Time)|
|
243
|
+
end
|
244
|
+
},
|
245
|
+
)
|
246
|
+
|
247
|
+
expect(program).
|
248
|
+
to produce_output_when_run(expected_output).
|
249
|
+
in_color(color_enabled)
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
context "when comparing two different Time and ActiveSupport::TimeWithZone instances", active_record: true do
|
255
|
+
it "produces the correct failure message when used in the positive" do
|
256
|
+
as_both_colored_and_uncolored do |color_enabled|
|
257
|
+
snippet = <<~RUBY
|
258
|
+
expected = Time.utc(2011, 12, 13, 14, 15, 16)
|
259
|
+
actual = Time.utc(2011, 12, 13, 15, 15, 16).in_time_zone("Europe/Stockholm")
|
260
|
+
expect(expected).to eq(actual)
|
261
|
+
RUBY
|
262
|
+
program = make_rspec_rails_test_program(
|
263
|
+
snippet,
|
264
|
+
color_enabled: color_enabled,
|
265
|
+
)
|
266
|
+
|
267
|
+
expected_output = build_expected_output(
|
268
|
+
color_enabled: color_enabled,
|
269
|
+
snippet: %|expect(expected).to eq(actual)|,
|
270
|
+
expectation: proc {
|
271
|
+
line do
|
272
|
+
plain "Expected "
|
273
|
+
beta %|2011-12-13 14:15:16.000 UTC +00:00 (Time)|
|
274
|
+
end
|
275
|
+
|
276
|
+
line do
|
277
|
+
plain " to eq "
|
278
|
+
alpha %|2011-12-13 16:15:16.000 CET +01:00 (ActiveSupport::TimeWithZone)|
|
279
|
+
end
|
280
|
+
},
|
281
|
+
diff: proc {
|
282
|
+
plain_line " #<ActiveSupport::TimeWithZone {"
|
283
|
+
plain_line " year: 2011,"
|
284
|
+
plain_line " month: 12,"
|
285
|
+
plain_line " day: 13,"
|
286
|
+
alpha_line "- hour: 16,"
|
287
|
+
beta_line "+ hour: 14,"
|
288
|
+
plain_line " min: 15,"
|
289
|
+
plain_line " sec: 16,"
|
290
|
+
plain_line " nsec: 0,"
|
291
|
+
alpha_line "- zone: \"CET\","
|
292
|
+
beta_line "+ zone: \"UTC\","
|
293
|
+
alpha_line "- gmt_offset: 3600,"
|
294
|
+
beta_line "+ gmt_offset: 0,"
|
295
|
+
alpha_line "- utc: 2011-12-13 15:15:16.000 UTC +00:00 (Time)"
|
296
|
+
beta_line "+ utc: 2011-12-13 14:15:16.000 UTC +00:00 (Time)"
|
297
|
+
plain_line " }>"
|
298
|
+
},
|
163
299
|
)
|
164
300
|
|
165
301
|
expect(program).
|