super_diff 0.10.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_model.rb +24 -12
- data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_relation.rb +15 -6
- data/lib/super_diff/active_support/object_inspection/inspection_tree_builders/hash_with_indifferent_access.rb +23 -8
- data/lib/super_diff/active_support/object_inspection/inspection_tree_builders/ordered_options.rb +46 -0
- data/lib/super_diff/active_support/object_inspection/inspection_tree_builders.rb +4 -0
- data/lib/super_diff/active_support.rb +2 -1
- data/lib/super_diff/differs/date_like.rb +15 -0
- data/lib/super_diff/differs/defaults.rb +1 -0
- data/lib/super_diff/differs.rb +1 -0
- data/lib/super_diff/errors.rb +0 -4
- data/lib/super_diff/object_inspection/inspection_tree.rb +25 -20
- data/lib/super_diff/object_inspection/inspection_tree_builders/array.rb +31 -12
- data/lib/super_diff/object_inspection/inspection_tree_builders/custom_object.rb +19 -9
- data/lib/super_diff/object_inspection/inspection_tree_builders/date_like.rb +51 -0
- data/lib/super_diff/object_inspection/inspection_tree_builders/default_object.rb +46 -21
- data/lib/super_diff/object_inspection/inspection_tree_builders/defaults.rb +1 -0
- data/lib/super_diff/object_inspection/inspection_tree_builders/hash.rb +39 -14
- data/lib/super_diff/object_inspection/inspection_tree_builders/primitive.rb +3 -5
- data/lib/super_diff/object_inspection/inspection_tree_builders/time_like.rb +31 -20
- data/lib/super_diff/object_inspection/inspection_tree_builders.rb +4 -0
- data/lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb +3 -2
- data/lib/super_diff/operation_tree_builders/date_like.rb +15 -0
- data/lib/super_diff/operation_tree_builders/defaults.rb +1 -1
- data/lib/super_diff/operation_tree_builders.rb +1 -0
- data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +3 -7
- data/lib/super_diff/rspec/monkey_patches.rb +59 -8
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_containing_exactly.rb +14 -7
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_including.rb +19 -13
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb +30 -26
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/generic_describable_matcher.rb +19 -0
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/hash_including.rb +19 -14
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/instance_of.rb +9 -10
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/kind_of.rb +9 -10
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/object_having_attributes.rb +14 -7
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/value_within.rb +10 -11
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders.rb +4 -0
- data/lib/super_diff/rspec.rb +10 -9
- data/lib/super_diff/version.rb +1 -1
- data/lib/super_diff.rb +9 -0
- data/spec/examples.txt +543 -493
- data/spec/integration/rails/engines_spec.rb +8 -3
- data/spec/integration/rspec/contain_exactly_matcher_spec.rb +19 -19
- data/spec/integration/rspec/eq_matcher_spec.rb +111 -39
- data/spec/integration/rspec/generic_describable_matchers_spec.rb +177 -0
- data/spec/integration/rspec/have_attributes_matcher_spec.rb +25 -25
- data/spec/integration/rspec/include_matcher_spec.rb +23 -23
- data/spec/integration/rspec/magic_metadata_spec.rb +51 -0
- data/spec/integration/rspec/match_array_matcher_spec.rb +30 -30
- data/spec/integration/rspec/match_matcher_spec.rb +93 -93
- data/spec/integration/rspec/raise_error_matcher_spec.rb +813 -69
- data/spec/internal/log/test.log +0 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/support/integration/helpers.rb +15 -10
- data/spec/support/integration/matchers.rb +34 -0
- data/spec/support/integration/test_programs/base.rb +6 -6
- data/spec/support/integration/test_programs/rspec_rails_engine.rb +3 -13
- data/spec/support/shared_examples/active_record.rb +33 -33
- data/spec/support/shared_examples/active_support.rb +125 -4
- data/spec/support/shared_examples/elided_diffs.rb +48 -48
- data/spec/support/shared_examples/hash_with_indifferent_access.rb +88 -88
- data/spec/support/shared_examples/key.rb +10 -10
- data/spec/unit/active_support/object_inspection_spec.rb +170 -0
- data/spec/unit/rspec/matchers/raise_error_spec.rb +43 -11
- data/spec/unit/rspec/object_inspection/rspec_matcher_spec.rb +91 -0
- data/spec/unit/rspec/object_inspection_spec.rb +2 -2
- data/spec/unit/super_diff_spec.rb +64 -0
- metadata +17 -4
- data/lib/super_diff/errors/no_diff_formatter_available_error.rb +0 -21
- data/lib/super_diff/errors/no_operational_sequencer_available_error.rb +0 -22
@@ -7,31 +7,56 @@ module SuperDiff
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def call
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
InspectionTree.new do |t1|
|
11
|
+
t1.only_when empty do |t2|
|
12
|
+
# stree-ignore
|
13
|
+
t2.as_lines_when_rendering_to_lines do |t3|
|
14
|
+
t3.add_text "{}"
|
15
|
+
end
|
16
16
|
end
|
17
17
|
|
18
|
-
only_when nonempty do
|
19
|
-
|
20
|
-
|
18
|
+
t1.only_when nonempty do |t2|
|
19
|
+
# stree-ignore
|
20
|
+
t2.as_lines_when_rendering_to_lines(
|
21
|
+
collection_bookend: :open
|
22
|
+
) do |t3|
|
23
|
+
t3.add_text "{"
|
21
24
|
end
|
22
25
|
|
23
|
-
|
26
|
+
# stree-ignore
|
27
|
+
t2.when_rendering_to_string do |t3|
|
28
|
+
t3.add_text " "
|
29
|
+
end
|
24
30
|
|
25
|
-
|
31
|
+
# stree-ignore
|
32
|
+
t2.nested do |t3|
|
33
|
+
t3.insert_hash_inspection_of(object)
|
34
|
+
end
|
26
35
|
|
27
|
-
|
36
|
+
# stree-ignore
|
37
|
+
t2.when_rendering_to_string do |t3|
|
38
|
+
t3.add_text " "
|
39
|
+
end
|
28
40
|
|
29
|
-
|
30
|
-
|
41
|
+
# stree-ignore
|
42
|
+
t2.as_lines_when_rendering_to_lines(
|
43
|
+
collection_bookend: :close
|
44
|
+
) do |t3|
|
45
|
+
t3.add_text "}"
|
31
46
|
end
|
32
47
|
end
|
33
48
|
end
|
34
49
|
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def empty
|
54
|
+
-> { object.empty? }
|
55
|
+
end
|
56
|
+
|
57
|
+
def nonempty
|
58
|
+
-> { !object.empty? }
|
59
|
+
end
|
35
60
|
end
|
36
61
|
end
|
37
62
|
end
|
@@ -7,11 +7,9 @@ module SuperDiff
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def call
|
10
|
-
InspectionTree.new do
|
11
|
-
as_lines_when_rendering_to_lines do
|
12
|
-
|
13
|
-
add_text { |object| object.inspect }
|
14
|
-
# rubocop:enable Style/SymbolProc
|
10
|
+
InspectionTree.new do |t1|
|
11
|
+
t1.as_lines_when_rendering_to_lines do |t2|
|
12
|
+
t2.add_text object.inspect
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
@@ -7,37 +7,48 @@ module SuperDiff
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def call
|
10
|
-
InspectionTree.new do
|
11
|
-
as_lines_when_rendering_to_lines(
|
12
|
-
|
10
|
+
InspectionTree.new do |t1|
|
11
|
+
t1.as_lines_when_rendering_to_lines(
|
12
|
+
collection_bookend: :open
|
13
|
+
) do |t2|
|
14
|
+
t2.add_text "#<#{object.class} "
|
13
15
|
|
14
|
-
|
16
|
+
# stree-ignore
|
17
|
+
t2.when_rendering_to_lines do |t3|
|
18
|
+
t3.add_text "{"
|
19
|
+
end
|
15
20
|
end
|
16
21
|
|
17
|
-
when_rendering_to_string do
|
18
|
-
add_text
|
19
|
-
|
20
|
-
(
|
21
|
-
|
22
|
-
|
22
|
+
t1.when_rendering_to_string do |t2|
|
23
|
+
t2.add_text(
|
24
|
+
object.strftime("%Y-%m-%d %H:%M:%S") +
|
25
|
+
(object.subsec == 0 ? "" : "+#{object.subsec.inspect}") +
|
26
|
+
" " + object.strftime("%:z") +
|
27
|
+
(object.zone ? " (#{object.zone})" : "")
|
28
|
+
)
|
23
29
|
end
|
24
30
|
|
25
|
-
when_rendering_to_lines do
|
26
|
-
nested do |
|
27
|
-
insert_separated_list(
|
31
|
+
t1.when_rendering_to_lines do |t2|
|
32
|
+
t2.nested do |t3|
|
33
|
+
t3.insert_separated_list(
|
28
34
|
%i[year month day hour min sec subsec zone utc_offset]
|
29
|
-
) do |name|
|
30
|
-
add_text name.to_s
|
31
|
-
add_text ": "
|
32
|
-
add_inspection_of
|
35
|
+
) do |t4, name|
|
36
|
+
t4.add_text name.to_s
|
37
|
+
t4.add_text ": "
|
38
|
+
t4.add_inspection_of object.public_send(name)
|
33
39
|
end
|
34
40
|
end
|
35
41
|
end
|
36
42
|
|
37
|
-
as_lines_when_rendering_to_lines(
|
38
|
-
|
43
|
+
t1.as_lines_when_rendering_to_lines(
|
44
|
+
collection_bookend: :close
|
45
|
+
) do |t2|
|
46
|
+
# stree-ignore
|
47
|
+
t2.when_rendering_to_lines do |t3|
|
48
|
+
t3.add_text "}"
|
49
|
+
end
|
39
50
|
|
40
|
-
add_text ">"
|
51
|
+
t2.add_text ">"
|
41
52
|
end
|
42
53
|
end
|
43
54
|
end
|
@@ -15,9 +15,10 @@ module SuperDiff
|
|
15
15
|
*args,
|
16
16
|
add_comma: false,
|
17
17
|
collection_bookend: nil,
|
18
|
-
**rest
|
18
|
+
**rest,
|
19
|
+
&block
|
19
20
|
)
|
20
|
-
super(tree, *args, **rest)
|
21
|
+
super(tree, *args, **rest, &block)
|
21
22
|
|
22
23
|
@add_comma = add_comma
|
23
24
|
@collection_bookend = collection_bookend
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module SuperDiff
|
2
|
+
module OperationTreeBuilders
|
3
|
+
class DateLike < CustomObject
|
4
|
+
def self.applies_to?(expected, actual)
|
5
|
+
SuperDiff.date_like?(expected) && SuperDiff.date_like?(actual)
|
6
|
+
end
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
def attribute_names
|
11
|
+
%w[year month day]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -5,14 +5,10 @@ module SuperDiff
|
|
5
5
|
protected
|
6
6
|
|
7
7
|
def actual_phrase
|
8
|
-
actual
|
9
|
-
|
10
|
-
|
11
|
-
def add_actual_value
|
12
|
-
if actual
|
13
|
-
template.add_text_in_color(actual_color) { actual }
|
8
|
+
if actual == "exception-free block"
|
9
|
+
"Expected"
|
14
10
|
else
|
15
|
-
|
11
|
+
"Expected raised exception"
|
16
12
|
end
|
17
13
|
end
|
18
14
|
end
|
@@ -218,7 +218,10 @@ module RSpec
|
|
218
218
|
}
|
219
219
|
end
|
220
220
|
end
|
221
|
-
|
221
|
+
@failure_line_groups << {
|
222
|
+
lines: extra_failure_lines,
|
223
|
+
already_colorized: true
|
224
|
+
}
|
222
225
|
@failure_line_groups
|
223
226
|
end
|
224
227
|
end
|
@@ -241,6 +244,24 @@ module RSpec
|
|
241
244
|
lines
|
242
245
|
end
|
243
246
|
|
247
|
+
# Override to ensure that each item in the array returned is one and
|
248
|
+
# only one line and doesn't contain any newline characters
|
249
|
+
def extra_failure_lines
|
250
|
+
@extra_failure_lines ||=
|
251
|
+
begin
|
252
|
+
original_lines = Array(example.metadata[:extra_failure_lines])
|
253
|
+
normalized_lines =
|
254
|
+
original_lines.flat_map { |line| line.split("\n") }
|
255
|
+
unless normalized_lines.empty?
|
256
|
+
unless normalized_lines.first == ""
|
257
|
+
normalized_lines.unshift("")
|
258
|
+
end
|
259
|
+
normalized_lines.push("") unless normalized_lines.last == ""
|
260
|
+
end
|
261
|
+
normalized_lines
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
244
265
|
# Exclude this file from being included in backtraces, so that the
|
245
266
|
# SnippetExtractor prints the right thing
|
246
267
|
def find_failed_line
|
@@ -701,9 +722,15 @@ module RSpec
|
|
701
722
|
SuperDiff.insert_overrides(self, SuperDiff::RSpec::AugmentedMatcher)
|
702
723
|
|
703
724
|
SuperDiff.insert_overrides(self) do
|
725
|
+
def expected_action_for_description
|
726
|
+
"raise"
|
727
|
+
end
|
728
|
+
|
704
729
|
def actual_for_matcher_text
|
705
730
|
if @actual_error
|
706
731
|
"#<#{@actual_error.class.name} #{@actual_error.message.inspect}>"
|
732
|
+
else
|
733
|
+
"exception-free block"
|
707
734
|
end
|
708
735
|
end
|
709
736
|
|
@@ -712,12 +739,19 @@ module RSpec
|
|
712
739
|
end
|
713
740
|
|
714
741
|
def expected_for_matcher_text
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
742
|
+
case @expected_message
|
743
|
+
when nil
|
744
|
+
if RSpec::Matchers.is_a_describable_matcher?(@expected_error)
|
745
|
+
description_of(@expected_error)
|
746
|
+
elsif @expected_error.is_a?(Regexp)
|
747
|
+
"a kind of Exception with message matching #{description_of(@expected_error)}"
|
748
|
+
else
|
749
|
+
"a kind of #{@expected_error}"
|
750
|
+
end
|
751
|
+
when Regexp
|
752
|
+
"#{described_expected_error} with message matching #{description_of(@expected_message)}"
|
719
753
|
else
|
720
|
-
"
|
754
|
+
"#{described_expected_error} with message #{description_of(@expected_message)}"
|
721
755
|
end
|
722
756
|
end
|
723
757
|
|
@@ -730,12 +764,22 @@ module RSpec
|
|
730
764
|
end
|
731
765
|
|
732
766
|
def expected_action_for_failure_message
|
733
|
-
@actual_error ? "match" : "raise
|
767
|
+
@actual_error ? "match" : "raise"
|
734
768
|
end
|
735
769
|
|
736
770
|
def matcher_text_builder_class
|
737
771
|
SuperDiff::RSpec::MatcherTextBuilders::RaiseError
|
738
772
|
end
|
773
|
+
|
774
|
+
private
|
775
|
+
|
776
|
+
def described_expected_error
|
777
|
+
if @expected_error.is_a?(Class)
|
778
|
+
"a kind of #{@expected_error}"
|
779
|
+
else
|
780
|
+
description_of(@expected_error)
|
781
|
+
end
|
782
|
+
end
|
739
783
|
end
|
740
784
|
|
741
785
|
def self.matcher_name
|
@@ -782,7 +826,14 @@ module RSpec
|
|
782
826
|
end
|
783
827
|
|
784
828
|
def match_array(items)
|
785
|
-
|
829
|
+
# This is a bit strange, but this is fundamentally different from
|
830
|
+
# splatting `items` in the argument list. It's functionally equivalent
|
831
|
+
# to, though not quite the same as:
|
832
|
+
#
|
833
|
+
# items.is_a?(Array) ? items : [items]
|
834
|
+
#
|
835
|
+
items = *items
|
836
|
+
BuiltIn::MatchArray.new(items)
|
786
837
|
end
|
787
838
|
end
|
788
839
|
end
|
@@ -8,17 +8,24 @@ module SuperDiff
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def call
|
11
|
-
SuperDiff::ObjectInspection::InspectionTree.new do
|
12
|
-
|
13
|
-
|
11
|
+
SuperDiff::ObjectInspection::InspectionTree.new do |t1|
|
12
|
+
# stree-ignore
|
13
|
+
t1.as_lines_when_rendering_to_lines(
|
14
|
+
collection_bookend: :open
|
15
|
+
) do |t2|
|
16
|
+
t2.add_text "#<a collection containing exactly ("
|
14
17
|
end
|
15
18
|
|
16
|
-
|
17
|
-
|
19
|
+
# stree-ignore
|
20
|
+
t1.nested do |t2|
|
21
|
+
t2.insert_array_inspection_of(object.expected)
|
18
22
|
end
|
19
23
|
|
20
|
-
|
21
|
-
|
24
|
+
# stree-ignore
|
25
|
+
t1.as_lines_when_rendering_to_lines(
|
26
|
+
collection_bookend: :close
|
27
|
+
) do |t2|
|
28
|
+
t2.add_text ")>"
|
22
29
|
end
|
23
30
|
end
|
24
31
|
end
|
data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_including.rb
CHANGED
@@ -9,23 +9,29 @@ module SuperDiff
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def call
|
12
|
-
SuperDiff::ObjectInspection::InspectionTree.new do
|
13
|
-
|
14
|
-
|
12
|
+
SuperDiff::ObjectInspection::InspectionTree.new do |t1|
|
13
|
+
# stree-ignore
|
14
|
+
t1.as_lines_when_rendering_to_lines(
|
15
|
+
collection_bookend: :open
|
16
|
+
) do |t2|
|
17
|
+
t2.add_text "#<a collection including ("
|
15
18
|
end
|
16
19
|
|
17
|
-
nested do |
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
t1.nested do |t2|
|
21
|
+
if SuperDiff::RSpec.a_collection_including_something?(object)
|
22
|
+
t2.insert_array_inspection_of(object.expecteds)
|
23
|
+
else
|
24
|
+
t2.insert_array_inspection_of(
|
25
|
+
object.instance_variable_get(:@expected)
|
26
|
+
)
|
27
|
+
end
|
25
28
|
end
|
26
29
|
|
27
|
-
|
28
|
-
|
30
|
+
# stree-ignore
|
31
|
+
t1.as_lines_when_rendering_to_lines(
|
32
|
+
collection_bookend: :close
|
33
|
+
) do |t2|
|
34
|
+
t2.add_text ")>"
|
29
35
|
end
|
30
36
|
end
|
31
37
|
end
|
@@ -8,47 +8,51 @@ module SuperDiff
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def call
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
SuperDiff::ObjectInspection::InspectionTree.new do
|
16
|
-
only_when empty do
|
17
|
-
as_lines_when_rendering_to_lines do
|
18
|
-
add_text do |object|
|
19
|
-
inspected_class = builder.inspected_class
|
20
|
-
inspected_name = builder.inspected_name
|
21
|
-
"#<#{inspected_class} #{inspected_name}>"
|
22
|
-
end
|
11
|
+
SuperDiff::ObjectInspection::InspectionTree.new do |t1|
|
12
|
+
t1.only_when method(:empty?) do |t2|
|
13
|
+
t2.as_lines_when_rendering_to_lines do |t3|
|
14
|
+
t3.add_text("#<#{inspected_class} #{inspected_name}>")
|
23
15
|
end
|
24
16
|
end
|
25
17
|
|
26
|
-
only_when nonempty do
|
27
|
-
as_lines_when_rendering_to_lines(
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
"#<#{inspected_class} #{inspected_name}"
|
32
|
-
end
|
18
|
+
t1.only_when method(:nonempty?) do |t2|
|
19
|
+
t2.as_lines_when_rendering_to_lines(
|
20
|
+
collection_bookend: :open
|
21
|
+
) do |t3|
|
22
|
+
t3.add_text("#<#{inspected_class} #{inspected_name}")
|
33
23
|
|
34
|
-
|
24
|
+
# stree-ignore
|
25
|
+
t3.when_rendering_to_lines do |t4|
|
26
|
+
t4.add_text " {"
|
27
|
+
end
|
35
28
|
end
|
36
29
|
|
37
|
-
|
30
|
+
# stree-ignore
|
31
|
+
t2.when_rendering_to_string do |t3|
|
32
|
+
t3.add_text " "
|
33
|
+
end
|
38
34
|
|
39
|
-
|
40
|
-
|
35
|
+
# stree-ignore
|
36
|
+
t2.nested do |t3|
|
37
|
+
t3.insert_hash_inspection_of doubled_methods
|
41
38
|
end
|
42
39
|
|
43
|
-
as_lines_when_rendering_to_lines(
|
44
|
-
|
40
|
+
t2.as_lines_when_rendering_to_lines(
|
41
|
+
collection_bookend: :close
|
42
|
+
) do |t3|
|
43
|
+
# stree-ignore
|
44
|
+
t3.when_rendering_to_lines do |t4|
|
45
|
+
t4.add_text "}"
|
46
|
+
end
|
45
47
|
|
46
|
-
add_text ">"
|
48
|
+
t3.add_text ">"
|
47
49
|
end
|
48
50
|
end
|
49
51
|
end
|
50
52
|
end
|
51
53
|
|
54
|
+
private
|
55
|
+
|
52
56
|
def empty?
|
53
57
|
doubled_methods.empty?
|
54
58
|
end
|
data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/generic_describable_matcher.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module SuperDiff
|
2
|
+
module RSpec
|
3
|
+
module ObjectInspection
|
4
|
+
module InspectionTreeBuilders
|
5
|
+
class GenericDescribableMatcher < SuperDiff::ObjectInspection::InspectionTreeBuilders::Base
|
6
|
+
def self.applies_to?(value)
|
7
|
+
::RSpec::Matchers.is_a_describable_matcher?(value)
|
8
|
+
end
|
9
|
+
|
10
|
+
def call
|
11
|
+
SuperDiff::ObjectInspection::InspectionTree.new do |t1|
|
12
|
+
t1.add_text "#<#{object.description}>"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -9,24 +9,29 @@ module SuperDiff
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def call
|
12
|
-
SuperDiff::ObjectInspection::InspectionTree.new do
|
13
|
-
|
14
|
-
|
12
|
+
SuperDiff::ObjectInspection::InspectionTree.new do |t1|
|
13
|
+
# stree-ignore
|
14
|
+
t1.as_lines_when_rendering_to_lines(
|
15
|
+
collection_bookend: :open
|
16
|
+
) do |t2|
|
17
|
+
t2.add_text "#<a hash including ("
|
15
18
|
end
|
16
19
|
|
17
|
-
nested do |
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
insert_hash_inspection_of(hash)
|
20
|
+
t1.nested do |t2|
|
21
|
+
if SuperDiff::RSpec.a_hash_including_something?(object)
|
22
|
+
t2.insert_hash_inspection_of(object.expecteds.first)
|
23
|
+
else
|
24
|
+
t2.insert_hash_inspection_of(
|
25
|
+
object.instance_variable_get(:@expected)
|
26
|
+
)
|
27
|
+
end
|
26
28
|
end
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
+
# stree-ignore
|
31
|
+
t1.as_lines_when_rendering_to_lines(
|
32
|
+
collection_bookend: :close
|
33
|
+
) do |t2|
|
34
|
+
t2.add_text ")>"
|
30
35
|
end
|
31
36
|
end
|
32
37
|
end
|
@@ -9,16 +9,15 @@ module SuperDiff
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def call
|
12
|
-
SuperDiff::ObjectInspection::InspectionTree.new do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
12
|
+
SuperDiff::ObjectInspection::InspectionTree.new do |t1|
|
13
|
+
klass =
|
14
|
+
if SuperDiff::RSpec.an_instance_of_something?(object)
|
15
|
+
object.expected
|
16
|
+
else
|
17
|
+
object.instance_variable_get(:@klass)
|
18
|
+
end
|
19
|
+
|
20
|
+
t1.add_text "#<an instance of #{klass}>"
|
22
21
|
end
|
23
22
|
end
|
24
23
|
end
|
@@ -9,16 +9,15 @@ module SuperDiff
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def call
|
12
|
-
SuperDiff::ObjectInspection::InspectionTree.new do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
12
|
+
SuperDiff::ObjectInspection::InspectionTree.new do |t1|
|
13
|
+
klass =
|
14
|
+
if SuperDiff::RSpec.a_kind_of_something?(object)
|
15
|
+
object.expected
|
16
|
+
else
|
17
|
+
object.instance_variable_get(:@klass)
|
18
|
+
end
|
19
|
+
|
20
|
+
t1.add_text "#<a kind of #{klass}>"
|
22
21
|
end
|
23
22
|
end
|
24
23
|
end
|
data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/object_having_attributes.rb
CHANGED
@@ -8,17 +8,24 @@ module SuperDiff
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def call
|
11
|
-
SuperDiff::ObjectInspection::InspectionTree.new do
|
12
|
-
|
13
|
-
|
11
|
+
SuperDiff::ObjectInspection::InspectionTree.new do |t1|
|
12
|
+
# stree-ignore
|
13
|
+
t1.as_lines_when_rendering_to_lines(
|
14
|
+
collection_bookend: :open
|
15
|
+
) do |t2|
|
16
|
+
t2.add_text "#<an object having attributes ("
|
14
17
|
end
|
15
18
|
|
16
|
-
|
17
|
-
|
19
|
+
# stree-ignore
|
20
|
+
t1.nested do |t2|
|
21
|
+
t2.insert_hash_inspection_of(object.expected)
|
18
22
|
end
|
19
23
|
|
20
|
-
|
21
|
-
|
24
|
+
# stree-ignore
|
25
|
+
t1.as_lines_when_rendering_to_lines(
|
26
|
+
collection_bookend: :close
|
27
|
+
) do |t2|
|
28
|
+
t2.add_text ")>"
|
22
29
|
end
|
23
30
|
end
|
24
31
|
end
|