super_diff 0.12.1 → 0.15.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 +7 -19
- data/lib/super_diff/active_record/differs/active_record_relation.rb +2 -0
- data/lib/super_diff/active_record/differs.rb +3 -1
- data/lib/super_diff/active_record/inspection_tree_builders/active_record_model.rb +7 -5
- data/lib/super_diff/active_record/inspection_tree_builders/active_record_relation.rb +12 -10
- data/lib/super_diff/active_record/inspection_tree_builders.rb +4 -2
- data/lib/super_diff/active_record/monkey_patches.rb +4 -2
- data/lib/super_diff/active_record/object_inspection.rb +6 -4
- data/lib/super_diff/active_record/operation_tree_builders/active_record_model.rb +3 -1
- data/lib/super_diff/active_record/operation_tree_builders/active_record_relation.rb +3 -1
- data/lib/super_diff/active_record/operation_tree_builders.rb +4 -2
- data/lib/super_diff/active_record/operation_tree_flatteners/active_record_relation.rb +4 -2
- data/lib/super_diff/active_record/operation_tree_flatteners.rb +3 -1
- data/lib/super_diff/active_record/operation_trees/active_record_relation.rb +2 -0
- data/lib/super_diff/active_record/operation_trees.rb +3 -1
- data/lib/super_diff/active_record.rb +10 -8
- data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +2 -0
- data/lib/super_diff/active_support/differs.rb +3 -1
- data/lib/super_diff/active_support/inspection_tree_builders/hash_with_indifferent_access.rb +16 -14
- data/lib/super_diff/active_support/inspection_tree_builders/ordered_options.rb +16 -14
- data/lib/super_diff/active_support/inspection_tree_builders.rb +4 -2
- data/lib/super_diff/active_support/object_inspection.rb +6 -4
- data/lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb +6 -4
- data/lib/super_diff/active_support/operation_tree_builders.rb +3 -1
- data/lib/super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access.rb +4 -2
- data/lib/super_diff/active_support/operation_tree_flatteners.rb +3 -1
- data/lib/super_diff/active_support/operation_trees/hash_with_indifferent_access.rb +2 -0
- data/lib/super_diff/active_support/operation_trees.rb +3 -1
- data/lib/super_diff/active_support.rb +8 -6
- data/lib/super_diff/basic/diff_formatters/collection.rb +18 -18
- data/lib/super_diff/basic/diff_formatters/multiline_string.rb +2 -0
- data/lib/super_diff/basic/diff_formatters.rb +4 -2
- data/lib/super_diff/basic/differs/array.rb +2 -0
- data/lib/super_diff/basic/differs/custom_object.rb +3 -1
- data/lib/super_diff/basic/differs/date_like.rb +2 -0
- data/lib/super_diff/basic/differs/default_object.rb +3 -1
- data/lib/super_diff/basic/differs/hash.rb +2 -0
- data/lib/super_diff/basic/differs/multiline_string.rb +2 -0
- data/lib/super_diff/basic/differs/time_like.rb +2 -0
- data/lib/super_diff/basic/differs.rb +11 -9
- data/lib/super_diff/basic/inspection_tree_builders/array.rb +5 -3
- data/lib/super_diff/basic/inspection_tree_builders/custom_object.rb +5 -3
- data/lib/super_diff/basic/inspection_tree_builders/data_object.rb +42 -0
- data/lib/super_diff/basic/inspection_tree_builders/date_like.rb +7 -5
- data/lib/super_diff/basic/inspection_tree_builders/default_object.rb +7 -5
- data/lib/super_diff/basic/inspection_tree_builders/hash.rb +7 -5
- data/lib/super_diff/basic/inspection_tree_builders/primitive.rb +3 -1
- data/lib/super_diff/basic/inspection_tree_builders/range_object.rb +19 -0
- data/lib/super_diff/basic/inspection_tree_builders/time_like.rb +8 -8
- data/lib/super_diff/basic/inspection_tree_builders.rb +18 -8
- data/lib/super_diff/basic/operation_tree_builders/array.rb +6 -4
- data/lib/super_diff/basic/operation_tree_builders/custom_object.rb +3 -1
- data/lib/super_diff/basic/operation_tree_builders/data_object.rb +20 -0
- data/lib/super_diff/basic/operation_tree_builders/date_like.rb +2 -0
- data/lib/super_diff/basic/operation_tree_builders/default_object.rb +32 -31
- data/lib/super_diff/basic/operation_tree_builders/hash.rb +49 -46
- data/lib/super_diff/basic/operation_tree_builders/multiline_string.rb +5 -3
- data/lib/super_diff/basic/operation_tree_builders/time_like.rb +5 -3
- data/lib/super_diff/basic/operation_tree_builders.rb +15 -9
- data/lib/super_diff/basic/operation_tree_flatteners/array.rb +4 -2
- data/lib/super_diff/basic/operation_tree_flatteners/collection.rb +11 -11
- data/lib/super_diff/basic/operation_tree_flatteners/custom_object.rb +5 -3
- data/lib/super_diff/basic/operation_tree_flatteners/default_object.rb +6 -5
- data/lib/super_diff/basic/operation_tree_flatteners/hash.rb +5 -3
- data/lib/super_diff/basic/operation_tree_flatteners/multiline_string.rb +3 -1
- data/lib/super_diff/basic/operation_tree_flatteners.rb +8 -6
- data/lib/super_diff/basic/operation_trees/array.rb +2 -0
- data/lib/super_diff/basic/operation_trees/custom_object.rb +2 -0
- data/lib/super_diff/basic/operation_trees/default_object.rb +6 -4
- data/lib/super_diff/basic/operation_trees/hash.rb +2 -0
- data/lib/super_diff/basic/operation_trees/multiline_string.rb +3 -1
- data/lib/super_diff/basic/operation_trees.rb +9 -7
- data/lib/super_diff/basic.rb +12 -7
- data/lib/super_diff/core/abstract_differ.rb +2 -0
- data/lib/super_diff/core/abstract_inspection_tree_builder.rb +2 -0
- data/lib/super_diff/core/abstract_operation_tree.rb +4 -2
- data/lib/super_diff/core/abstract_operation_tree_builder.rb +15 -18
- data/lib/super_diff/core/abstract_operation_tree_flattener.rb +5 -3
- data/lib/super_diff/core/binary_operation.rb +3 -1
- data/lib/super_diff/core/colorized_document_extensions.rb +2 -0
- data/lib/super_diff/core/configuration.rb +23 -43
- data/lib/super_diff/core/differ_dispatcher.rb +4 -2
- data/lib/super_diff/core/gem_version.rb +2 -0
- data/lib/super_diff/core/helpers.rb +14 -12
- data/lib/super_diff/core/implementation_checks.rb +6 -2
- data/lib/super_diff/core/inspection_tree.rb +38 -38
- data/lib/super_diff/core/inspection_tree_builder_dispatcher.rb +5 -5
- data/lib/super_diff/core/inspection_tree_nodes/as_lines_when_rendering_to_lines.rb +3 -1
- data/lib/super_diff/core/inspection_tree_nodes/as_prefix_when_rendering_to_lines.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/as_prelude_when_rendering_to_lines.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/as_single_line.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/base.rb +9 -9
- data/lib/super_diff/core/inspection_tree_nodes/inspection.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/nesting.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/only_when.rb +5 -1
- data/lib/super_diff/core/inspection_tree_nodes/text.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes/when_empty.rb +3 -1
- data/lib/super_diff/core/inspection_tree_nodes/when_non_empty.rb +3 -1
- data/lib/super_diff/core/inspection_tree_nodes/when_rendering_to_lines.rb +3 -1
- data/lib/super_diff/core/inspection_tree_nodes/when_rendering_to_string.rb +2 -0
- data/lib/super_diff/core/inspection_tree_nodes.rb +16 -14
- data/lib/super_diff/core/line.rb +9 -7
- data/lib/super_diff/core/no_differ_available_error.rb +7 -5
- data/lib/super_diff/core/no_inspection_tree_builder_available_error.rb +5 -3
- data/lib/super_diff/core/no_operation_tree_available_error.rb +4 -2
- data/lib/super_diff/core/no_operation_tree_builder_available_error.rb +7 -5
- data/lib/super_diff/core/operation_tree_builder_dispatcher.rb +3 -3
- data/lib/super_diff/core/operation_tree_finder.rb +8 -8
- data/lib/super_diff/core/prefix_for_next_inspection_tree_node.rb +2 -0
- data/lib/super_diff/core/prelude_for_next_inspection_tree_node.rb +2 -0
- data/lib/super_diff/core/recursion_guard.rb +6 -4
- data/lib/super_diff/core/tiered_lines.rb +2 -0
- data/lib/super_diff/core/tiered_lines_elider.rb +53 -54
- data/lib/super_diff/core/tiered_lines_formatter.rb +6 -4
- data/lib/super_diff/core/unary_operation.rb +2 -0
- data/lib/super_diff/core.rb +31 -29
- data/lib/super_diff/csi/bold_sequence.rb +2 -0
- data/lib/super_diff/csi/color.rb +4 -4
- data/lib/super_diff/csi/color_sequence_block.rb +3 -1
- data/lib/super_diff/csi/colorized_document.rb +7 -9
- data/lib/super_diff/csi/document.rb +15 -18
- data/lib/super_diff/csi/eight_bit_color.rb +32 -37
- data/lib/super_diff/csi/four_bit_color.rb +12 -9
- data/lib/super_diff/csi/reset_sequence.rb +2 -0
- data/lib/super_diff/csi/twenty_four_bit_color.rb +22 -21
- data/lib/super_diff/csi/uncolorized_document.rb +2 -0
- data/lib/super_diff/csi.rb +12 -42
- data/lib/super_diff/differs.rb +6 -4
- data/lib/super_diff/equality_matchers/array.rb +18 -16
- data/lib/super_diff/equality_matchers/base.rb +6 -4
- data/lib/super_diff/equality_matchers/default.rb +5 -3
- data/lib/super_diff/equality_matchers/defaults.rb +3 -1
- data/lib/super_diff/equality_matchers/hash.rb +18 -16
- data/lib/super_diff/equality_matchers/main.rb +3 -1
- data/lib/super_diff/equality_matchers/multiline_string.rb +18 -16
- data/lib/super_diff/equality_matchers/primitive.rb +15 -13
- data/lib/super_diff/equality_matchers/singleline_string.rb +16 -14
- data/lib/super_diff/equality_matchers.rb +11 -9
- data/lib/super_diff/errors.rb +4 -2
- data/lib/super_diff/object_inspection.rb +17 -15
- data/lib/super_diff/operation_tree_builders.rb +6 -4
- data/lib/super_diff/operation_tree_flatteners.rb +6 -4
- data/lib/super_diff/operation_trees.rb +6 -4
- data/lib/super_diff/operations.rb +4 -2
- data/lib/super_diff/rails.rb +4 -2
- data/lib/super_diff/rspec/augmented_matcher.rb +3 -1
- data/lib/super_diff/rspec/differ.rb +16 -7
- data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +2 -0
- data/lib/super_diff/rspec/differs/collection_including.rb +2 -0
- data/lib/super_diff/rspec/differs/hash_including.rb +2 -0
- data/lib/super_diff/rspec/differs/object_having_attributes.rb +2 -0
- data/lib/super_diff/rspec/differs.rb +6 -4
- data/lib/super_diff/rspec/inspection_tree_builders/collection_containing_exactly.rb +12 -10
- data/lib/super_diff/rspec/inspection_tree_builders/collection_including.rb +10 -8
- data/lib/super_diff/rspec/inspection_tree_builders/double.rb +20 -18
- data/lib/super_diff/rspec/inspection_tree_builders/generic_describable_matcher.rb +2 -0
- data/lib/super_diff/rspec/inspection_tree_builders/hash_including.rb +10 -8
- data/lib/super_diff/rspec/inspection_tree_builders/instance_of.rb +2 -0
- data/lib/super_diff/rspec/inspection_tree_builders/kind_of.rb +2 -0
- data/lib/super_diff/rspec/inspection_tree_builders/object_having_attributes.rb +12 -10
- data/lib/super_diff/rspec/inspection_tree_builders/primitive.rb +2 -0
- data/lib/super_diff/rspec/inspection_tree_builders/value_within.rb +6 -4
- data/lib/super_diff/rspec/inspection_tree_builders.rb +12 -10
- data/lib/super_diff/rspec/matcher_text_builders/base.rb +12 -12
- data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +19 -17
- data/lib/super_diff/rspec/matcher_text_builders/contain_exactly.rb +3 -1
- data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +7 -5
- data/lib/super_diff/rspec/matcher_text_builders/match.rb +6 -4
- data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +5 -3
- data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +20 -18
- data/lib/super_diff/rspec/matcher_text_builders.rb +9 -7
- data/lib/super_diff/rspec/matcher_text_template.rb +34 -39
- data/lib/super_diff/rspec/monkey_patches.rb +129 -56
- data/lib/super_diff/rspec/object_inspection.rb +7 -5
- data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +4 -4
- data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +2 -0
- data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +2 -0
- data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +2 -0
- data/lib/super_diff/rspec/operation_tree_builders.rb +6 -4
- data/lib/super_diff/rspec-rails.rb +4 -2
- data/lib/super_diff/rspec.rb +27 -14
- data/lib/super_diff/version.rb +3 -1
- data/lib/super_diff.rb +24 -27
- data/super_diff.gemspec +20 -18
- metadata +15 -182
- data/spec/examples.txt +0 -704
- data/spec/integration/rails/active_record_spec.rb +0 -21
- data/spec/integration/rails/active_support_spec.rb +0 -19
- data/spec/integration/rails/engines_spec.rb +0 -25
- data/spec/integration/rails/hash_with_indifferent_access_spec.rb +0 -21
- data/spec/integration/rspec/be_falsey_matcher_spec.rb +0 -58
- data/spec/integration/rspec/be_matcher_spec.rb +0 -605
- data/spec/integration/rspec/be_nil_matcher_spec.rb +0 -57
- data/spec/integration/rspec/be_predicate_matcher_spec.rb +0 -615
- data/spec/integration/rspec/be_truthy_matcher_spec.rb +0 -62
- data/spec/integration/rspec/contain_exactly_matcher_spec.rb +0 -377
- data/spec/integration/rspec/eq_matcher_spec.rb +0 -1066
- data/spec/integration/rspec/generic_describable_matchers_spec.rb +0 -177
- data/spec/integration/rspec/have_attributes_matcher_spec.rb +0 -443
- data/spec/integration/rspec/have_predicate_matcher_spec.rb +0 -478
- data/spec/integration/rspec/include_matcher_spec.rb +0 -452
- data/spec/integration/rspec/magic_metadata_spec.rb +0 -51
- data/spec/integration/rspec/match_array_matcher_spec.rb +0 -424
- data/spec/integration/rspec/match_matcher_spec.rb +0 -1359
- data/spec/integration/rspec/raise_error_matcher_spec.rb +0 -1488
- data/spec/integration/rspec/respond_to_matcher_spec.rb +0 -999
- data/spec/integration/rspec/third_party_matcher_spec.rb +0 -245
- data/spec/integration/rspec/unhandled_errors_spec.rb +0 -150
- data/spec/internal/log/test.log +0 -0
- data/spec/spec_helper.rb +0 -90
- data/spec/support/colorizer.rb +0 -9
- data/spec/support/command_runner.rb +0 -253
- data/spec/support/helpers.rb +0 -21
- data/spec/support/integration/helpers.rb +0 -124
- data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +0 -104
- data/spec/support/integration/matchers.rb +0 -177
- data/spec/support/integration/test_programs/base.rb +0 -143
- data/spec/support/integration/test_programs/plain.rb +0 -19
- data/spec/support/integration/test_programs/rspec_active_record.rb +0 -20
- data/spec/support/integration/test_programs/rspec_active_support.rb +0 -20
- data/spec/support/integration/test_programs/rspec_rails.rb +0 -20
- data/spec/support/integration/test_programs/rspec_rails_engine.rb +0 -20
- data/spec/support/models/a.rb +0 -11
- data/spec/support/models/active_record/person.rb +0 -28
- data/spec/support/models/active_record/query.rb +0 -15
- data/spec/support/models/active_record/shipping_address.rb +0 -24
- data/spec/support/models/customer.rb +0 -22
- data/spec/support/models/empty_class.rb +0 -6
- data/spec/support/models/item.rb +0 -10
- data/spec/support/models/order.rb +0 -9
- data/spec/support/models/person.rb +0 -20
- data/spec/support/models/player.rb +0 -30
- data/spec/support/models/shipping_address.rb +0 -25
- data/spec/support/shared_examples/active_record.rb +0 -428
- data/spec/support/shared_examples/active_support.rb +0 -188
- data/spec/support/shared_examples/elided_diffs.rb +0 -938
- data/spec/support/shared_examples/hash_with_indifferent_access.rb +0 -749
- data/spec/support/shared_examples/key.rb +0 -123
- data/spec/support/unit/helpers.rb +0 -24
- data/spec/support/unit/matchers/be_deprecated_in_favor_of.rb +0 -39
- data/spec/support/unit/matchers/match_output.rb +0 -40
- data/spec/unit/active_record/object_inspection_spec.rb +0 -289
- data/spec/unit/active_support/object_inspection_spec.rb +0 -170
- data/spec/unit/basic/operation_tree_flatteners/array_spec.rb +0 -637
- data/spec/unit/basic/operation_tree_flatteners/custom_object_spec.rb +0 -685
- data/spec/unit/basic/operation_tree_flatteners/default_object_spec.rb +0 -685
- data/spec/unit/basic/operation_tree_flatteners/hash_spec.rb +0 -671
- data/spec/unit/basic/operation_tree_flatteners/multiline_string_spec.rb +0 -131
- data/spec/unit/core/helpers_spec.rb +0 -68
- data/spec/unit/core/tiered_lines_elider_spec.rb +0 -6328
- data/spec/unit/core/tiered_lines_formatter_spec.rb +0 -131
- data/spec/unit/deprecations_spec.rb +0 -176
- data/spec/unit/equality_matchers/main_spec.rb +0 -1842
- data/spec/unit/rspec/matchers/be_compared_to_spec.rb +0 -23
- data/spec/unit/rspec/matchers/be_falsey_spec.rb +0 -9
- data/spec/unit/rspec/matchers/be_nil_spec.rb +0 -9
- data/spec/unit/rspec/matchers/be_predicate_spec.rb +0 -31
- data/spec/unit/rspec/matchers/be_spec.rb +0 -17
- data/spec/unit/rspec/matchers/be_truthy_spec.rb +0 -9
- data/spec/unit/rspec/matchers/contain_exactly_spec.rb +0 -11
- data/spec/unit/rspec/matchers/eq_spec.rb +0 -9
- data/spec/unit/rspec/matchers/have_attributes_spec.rb +0 -11
- data/spec/unit/rspec/matchers/have_predicate_spec.rb +0 -21
- data/spec/unit/rspec/matchers/include_spec.rb +0 -21
- data/spec/unit/rspec/matchers/match_array_spec.rb +0 -11
- data/spec/unit/rspec/matchers/match_spec.rb +0 -9
- data/spec/unit/rspec/matchers/raise_error_spec.rb +0 -77
- data/spec/unit/rspec/matchers/respond_to_spec.rb +0 -85
- data/spec/unit/rspec/object_inspection/rspec_matcher_spec.rb +0 -91
- data/spec/unit/rspec/object_inspection_spec.rb +0 -471
- data/spec/unit/super_diff_spec.rb +0 -2115
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module RSpec
|
3
5
|
module InspectionTreeBuilders
|
@@ -9,19 +11,19 @@ module SuperDiff
|
|
9
11
|
def call
|
10
12
|
Core::InspectionTree.new do |t1|
|
11
13
|
t1.as_prelude_when_rendering_to_lines do |t2|
|
12
|
-
t2.add_text
|
14
|
+
t2.add_text '#<a value within '
|
13
15
|
|
14
16
|
t2.add_inspection_of(
|
15
|
-
object.base_matcher.instance_variable_get(
|
17
|
+
object.base_matcher.instance_variable_get('@delta'),
|
16
18
|
as_lines: false
|
17
19
|
)
|
18
20
|
|
19
|
-
t2.add_text
|
21
|
+
t2.add_text ' of '
|
20
22
|
end
|
21
23
|
|
22
24
|
t1.add_inspection_of object.expected
|
23
25
|
|
24
|
-
t1.add_text
|
26
|
+
t1.add_text '>'
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
@@ -1,39 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module RSpec
|
3
5
|
module InspectionTreeBuilders
|
4
6
|
autoload(
|
5
7
|
:CollectionContainingExactly,
|
6
|
-
|
8
|
+
'super_diff/rspec/inspection_tree_builders/collection_containing_exactly'
|
7
9
|
)
|
8
10
|
autoload(
|
9
11
|
:CollectionIncluding,
|
10
|
-
|
12
|
+
'super_diff/rspec/inspection_tree_builders/collection_including'
|
11
13
|
)
|
12
|
-
autoload :Double,
|
14
|
+
autoload :Double, 'super_diff/rspec/inspection_tree_builders/double'
|
13
15
|
autoload(
|
14
16
|
:GenericDescribableMatcher,
|
15
|
-
|
17
|
+
'super_diff/rspec/inspection_tree_builders/generic_describable_matcher'
|
16
18
|
)
|
17
19
|
autoload(
|
18
20
|
:HashIncluding,
|
19
|
-
|
21
|
+
'super_diff/rspec/inspection_tree_builders/hash_including'
|
20
22
|
)
|
21
23
|
autoload(
|
22
24
|
:InstanceOf,
|
23
|
-
|
25
|
+
'super_diff/rspec/inspection_tree_builders/instance_of'
|
24
26
|
)
|
25
|
-
autoload :KindOf,
|
27
|
+
autoload :KindOf, 'super_diff/rspec/inspection_tree_builders/kind_of'
|
26
28
|
autoload(
|
27
29
|
:ObjectHavingAttributes,
|
28
|
-
|
30
|
+
'super_diff/rspec/inspection_tree_builders/object_having_attributes'
|
29
31
|
)
|
30
32
|
autoload(
|
31
33
|
:Primitive,
|
32
|
-
|
34
|
+
'super_diff/rspec/inspection_tree_builders/primitive'
|
33
35
|
)
|
34
36
|
autoload(
|
35
37
|
:ValueWithin,
|
36
|
-
|
38
|
+
'super_diff/rspec/inspection_tree_builders/value_within'
|
37
39
|
)
|
38
40
|
end
|
39
41
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module RSpec
|
3
5
|
module MatcherTextBuilders
|
@@ -40,11 +42,9 @@ module SuperDiff
|
|
40
42
|
|
41
43
|
protected
|
42
44
|
|
43
|
-
def add_extra_after_expected_to(template)
|
44
|
-
end
|
45
|
+
def add_extra_after_expected_to(template); end
|
45
46
|
|
46
|
-
def add_extra_after_error
|
47
|
-
end
|
47
|
+
def add_extra_after_error; end
|
48
48
|
|
49
49
|
def actual_color
|
50
50
|
SuperDiff.configuration.actual_color
|
@@ -74,7 +74,7 @@ module SuperDiff
|
|
74
74
|
template.add_break
|
75
75
|
template.insert expected_section
|
76
76
|
add_extra_after_expected_to(template)
|
77
|
-
template.add_text_in_singleline_mode
|
77
|
+
template.add_text_in_singleline_mode '.'
|
78
78
|
add_extra_after_error
|
79
79
|
end
|
80
80
|
|
@@ -83,12 +83,12 @@ module SuperDiff
|
|
83
83
|
template.add_text_in_multiline_mode do
|
84
84
|
actual_phrase.rjust(phrase_width)
|
85
85
|
end
|
86
|
-
template.add_text
|
86
|
+
template.add_text ' '
|
87
87
|
add_actual_value
|
88
88
|
end
|
89
89
|
|
90
90
|
def actual_phrase
|
91
|
-
|
91
|
+
'Expected'
|
92
92
|
end
|
93
93
|
|
94
94
|
def add_actual_value
|
@@ -109,7 +109,7 @@ module SuperDiff
|
|
109
109
|
if respond_to?(:add_expected_value_to, true)
|
110
110
|
add_expected_value_to(template, expected_for_failure_message)
|
111
111
|
else
|
112
|
-
template.add_text
|
112
|
+
template.add_text ' '
|
113
113
|
template.add_text_in_color(
|
114
114
|
expected_color,
|
115
115
|
expected_for_failure_message
|
@@ -121,7 +121,7 @@ module SuperDiff
|
|
121
121
|
if respond_to?(:add_expected_value_to, true)
|
122
122
|
add_expected_value_to(template, expected_for_description)
|
123
123
|
else
|
124
|
-
template.add_text
|
124
|
+
template.add_text ' '
|
125
125
|
template.add_text_in_color(expected_color, expected_for_description)
|
126
126
|
end
|
127
127
|
end
|
@@ -131,13 +131,13 @@ module SuperDiff
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def to_or_not_to
|
134
|
-
negated? ?
|
134
|
+
negated? ? 'not to' : 'to'
|
135
135
|
end
|
136
136
|
|
137
137
|
def phrase_width
|
138
138
|
[actual_phrase, expected_phrase].map do |text|
|
139
|
-
|
140
|
-
|
139
|
+
Csi.decolorize(text.to_s).length
|
140
|
+
end
|
141
141
|
.max
|
142
142
|
end
|
143
143
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module RSpec
|
3
5
|
module MatcherTextBuilders
|
@@ -18,11 +20,11 @@ module SuperDiff
|
|
18
20
|
|
19
21
|
def expected_action_for_failure_message
|
20
22
|
if predicate_accessible?
|
21
|
-
|
23
|
+
'return a truthy result for'
|
22
24
|
elsif private_predicate?
|
23
|
-
|
25
|
+
'have a public method'
|
24
26
|
else
|
25
|
-
|
27
|
+
'respond to'
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
@@ -35,12 +37,12 @@ module SuperDiff
|
|
35
37
|
end
|
36
38
|
|
37
39
|
def add_expected_value_to_failure_message(template)
|
38
|
-
template.add_text
|
40
|
+
template.add_text ' '
|
39
41
|
template.add_text_in_color(
|
40
42
|
expected_color,
|
41
43
|
"#{expected_for_failure_message}?"
|
42
44
|
)
|
43
|
-
template.add_text
|
45
|
+
template.add_text ' or '
|
44
46
|
template.add_text_in_color(
|
45
47
|
expected_color,
|
46
48
|
"#{expected_for_failure_message}s?"
|
@@ -48,12 +50,12 @@ module SuperDiff
|
|
48
50
|
end
|
49
51
|
|
50
52
|
def add_expected_value_to_description(template)
|
51
|
-
template.add_text
|
53
|
+
template.add_text ' '
|
52
54
|
template.add_text_in_color(
|
53
55
|
expected_color,
|
54
56
|
"`#{expected_for_description}?`"
|
55
57
|
)
|
56
|
-
template.add_text
|
58
|
+
template.add_text ' or '
|
57
59
|
template.add_text_in_color(
|
58
60
|
expected_color,
|
59
61
|
"`#{expected_for_description}s?`"
|
@@ -63,18 +65,18 @@ module SuperDiff
|
|
63
65
|
def add_extra_after_error
|
64
66
|
if expected_predicate_method_name == :true?
|
65
67
|
template.add_text "\n\n"
|
66
|
-
template.add_text
|
67
|
-
template.add_text_in_color(:blue,
|
68
|
-
template.add_text
|
69
|
-
template.add_text_in_color(:blue,
|
70
|
-
template.add_text
|
68
|
+
template.add_text '(Perhaps you want to use '
|
69
|
+
template.add_text_in_color(:blue, 'be(true)')
|
70
|
+
template.add_text ' or '
|
71
|
+
template.add_text_in_color(:blue, 'be_truthy')
|
72
|
+
template.add_text ' instead?)'
|
71
73
|
elsif expected_predicate_method_name == :false?
|
72
74
|
template.add_text "\n\n"
|
73
|
-
template.add_text
|
74
|
-
template.add_text_in_color(:blue,
|
75
|
-
template.add_text
|
76
|
-
template.add_text_in_color(:blue,
|
77
|
-
template.add_text
|
75
|
+
template.add_text '(Perhaps you want to use '
|
76
|
+
template.add_text_in_color(:blue, 'be(false)')
|
77
|
+
template.add_text ' or '
|
78
|
+
template.add_text_in_color(:blue, 'be_falsey')
|
79
|
+
template.add_text ' instead?)'
|
78
80
|
end
|
79
81
|
end
|
80
82
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module RSpec
|
3
5
|
module MatcherTextBuilders
|
@@ -5,7 +7,7 @@ module SuperDiff
|
|
5
7
|
protected
|
6
8
|
|
7
9
|
def add_expected_value_to(template, expected)
|
8
|
-
template.add_text
|
10
|
+
template.add_text ' '
|
9
11
|
template.add_list_in_color(expected_color, expected)
|
10
12
|
end
|
11
13
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module RSpec
|
3
5
|
module MatcherTextBuilders
|
@@ -12,11 +14,11 @@ module SuperDiff
|
|
12
14
|
|
13
15
|
def expected_action_for_failure_message
|
14
16
|
if predicate_accessible?
|
15
|
-
|
17
|
+
'return a truthy result for'
|
16
18
|
elsif private_predicate?
|
17
|
-
|
19
|
+
'have a public method'
|
18
20
|
else
|
19
|
-
|
21
|
+
'respond to'
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
@@ -29,7 +31,7 @@ module SuperDiff
|
|
29
31
|
end
|
30
32
|
|
31
33
|
def add_expected_value_to_failure_message(template)
|
32
|
-
template.add_text
|
34
|
+
template.add_text ' '
|
33
35
|
template.add_text_in_color(
|
34
36
|
expected_color,
|
35
37
|
expected_for_failure_message
|
@@ -37,7 +39,7 @@ module SuperDiff
|
|
37
39
|
end
|
38
40
|
|
39
41
|
def add_expected_value_to_description(template)
|
40
|
-
template.add_text
|
42
|
+
template.add_text ' '
|
41
43
|
template.add_text_in_color(
|
42
44
|
expected_color,
|
43
45
|
"`#{expected_for_description}`"
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module RSpec
|
3
5
|
module MatcherTextBuilders
|
@@ -8,10 +10,10 @@ module SuperDiff
|
|
8
10
|
end
|
9
11
|
|
10
12
|
def add_extra
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
return unless expected_captures
|
14
|
+
|
15
|
+
template.add_text 'with captures '
|
16
|
+
template.add_text_in_color :blue, description_of(expected_captures)
|
15
17
|
end
|
16
18
|
|
17
19
|
private
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module RSpec
|
3
5
|
module MatcherTextBuilders
|
@@ -5,10 +7,10 @@ module SuperDiff
|
|
5
7
|
protected
|
6
8
|
|
7
9
|
def actual_phrase
|
8
|
-
if actual ==
|
9
|
-
|
10
|
+
if actual == 'exception-free block'
|
11
|
+
'Expected'
|
10
12
|
else
|
11
|
-
|
13
|
+
'Expected raised exception'
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module RSpec
|
3
5
|
module MatcherTextBuilders
|
@@ -19,7 +21,7 @@ module SuperDiff
|
|
19
21
|
protected
|
20
22
|
|
21
23
|
def add_expected_value_to(template, expected)
|
22
|
-
template.add_text
|
24
|
+
template.add_text ' '
|
23
25
|
template.add_list_in_color(expected_color, expected)
|
24
26
|
end
|
25
27
|
|
@@ -28,7 +30,7 @@ module SuperDiff
|
|
28
30
|
|
29
31
|
if arbitrary_keywords?
|
30
32
|
add_arbitrary_keywords_clause_to(template)
|
31
|
-
elsif
|
33
|
+
elsif expected_keywords?
|
32
34
|
add_keywords_clause_to(template)
|
33
35
|
end
|
34
36
|
|
@@ -43,8 +45,8 @@ module SuperDiff
|
|
43
45
|
@arbitrary_keywords
|
44
46
|
end
|
45
47
|
|
46
|
-
def
|
47
|
-
expected_keywords
|
48
|
+
def expected_keywords?
|
49
|
+
expected_keywords&.count&.positive?
|
48
50
|
end
|
49
51
|
|
50
52
|
def unlimited_arguments?
|
@@ -52,34 +54,34 @@ module SuperDiff
|
|
52
54
|
end
|
53
55
|
|
54
56
|
def add_arity_clause_to(template)
|
55
|
-
template.add_text
|
57
|
+
template.add_text ' with '
|
56
58
|
template.add_text_in_color expected_color, expected_arity
|
57
|
-
template.add_text
|
58
|
-
template.add_text pluralize(
|
59
|
+
template.add_text ' '
|
60
|
+
template.add_text pluralize('argument', expected_arity)
|
59
61
|
end
|
60
62
|
|
61
63
|
def add_arbitrary_keywords_clause_to(template)
|
62
|
-
template.add_text
|
63
|
-
template.add_text_in_color expected_color,
|
64
|
-
template.add_text
|
64
|
+
template.add_text ' with '
|
65
|
+
template.add_text_in_color expected_color, 'any'
|
66
|
+
template.add_text ' keywords'
|
65
67
|
end
|
66
68
|
|
67
69
|
def add_keywords_clause_to(template)
|
68
|
-
template.add_text
|
69
|
-
template.add_text pluralize(
|
70
|
-
template.add_text
|
70
|
+
template.add_text ' with '
|
71
|
+
template.add_text pluralize('keyword', expected_keywords.length)
|
72
|
+
template.add_text ' '
|
71
73
|
template.add_list_in_color expected_color, expected_keywords
|
72
74
|
end
|
73
75
|
|
74
76
|
def add_unlimited_arguments_clause_to(template)
|
75
|
-
if arbitrary_keywords? ||
|
76
|
-
template.add_text
|
77
|
+
if arbitrary_keywords? || expected_keywords?
|
78
|
+
template.add_text ' and '
|
77
79
|
else
|
78
|
-
template.add_text
|
80
|
+
template.add_text ' with '
|
79
81
|
end
|
80
82
|
|
81
|
-
template.add_text_in_color expected_color,
|
82
|
-
template.add_text
|
83
|
+
template.add_text_in_color expected_color, 'unlimited'
|
84
|
+
template.add_text ' arguments'
|
83
85
|
end
|
84
86
|
|
85
87
|
def pluralize(word, count)
|
@@ -1,25 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module RSpec
|
3
5
|
module MatcherTextBuilders
|
4
|
-
autoload :Base,
|
6
|
+
autoload :Base, 'super_diff/rspec/matcher_text_builders/base'
|
5
7
|
autoload(
|
6
8
|
:BePredicate,
|
7
|
-
|
9
|
+
'super_diff/rspec/matcher_text_builders/be_predicate'
|
8
10
|
)
|
9
11
|
autoload(
|
10
12
|
:ContainExactly,
|
11
|
-
|
13
|
+
'super_diff/rspec/matcher_text_builders/contain_exactly'
|
12
14
|
)
|
13
15
|
autoload(
|
14
16
|
:HavePredicate,
|
15
|
-
|
17
|
+
'super_diff/rspec/matcher_text_builders/have_predicate'
|
16
18
|
)
|
17
|
-
autoload :Match,
|
19
|
+
autoload :Match, 'super_diff/rspec/matcher_text_builders/match'
|
18
20
|
autoload(
|
19
21
|
:RaiseError,
|
20
|
-
|
22
|
+
'super_diff/rspec/matcher_text_builders/raise_error'
|
21
23
|
)
|
22
|
-
autoload(:RespondTo,
|
24
|
+
autoload(:RespondTo, 'super_diff/rspec/matcher_text_builders/respond_to')
|
23
25
|
end
|
24
26
|
end
|
25
27
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SuperDiff
|
2
4
|
module RSpec
|
3
5
|
class MatcherTextTemplate
|
@@ -13,41 +15,41 @@ module SuperDiff
|
|
13
15
|
yield self if block_given?
|
14
16
|
end
|
15
17
|
|
16
|
-
def add_text(
|
17
|
-
add_token(PlainText,
|
18
|
+
def add_text(...)
|
19
|
+
add_token(PlainText, ...)
|
18
20
|
end
|
19
21
|
|
20
|
-
def add_text_in_color(
|
21
|
-
add_token(ColorizedText,
|
22
|
+
def add_text_in_color(...)
|
23
|
+
add_token(ColorizedText, ...)
|
22
24
|
end
|
23
25
|
|
24
|
-
def add_text_in_singleline_mode(
|
25
|
-
add_token(PlainTextInSinglelineMode,
|
26
|
+
def add_text_in_singleline_mode(...)
|
27
|
+
add_token(PlainTextInSinglelineMode, ...)
|
26
28
|
end
|
27
29
|
|
28
|
-
def add_text_in_multiline_mode(
|
29
|
-
add_token(PlainTextInMultilineMode,
|
30
|
+
def add_text_in_multiline_mode(...)
|
31
|
+
add_token(PlainTextInMultilineMode, ...)
|
30
32
|
end
|
31
33
|
|
32
|
-
def add_list_in_color(
|
33
|
-
add_token(ColorizedList,
|
34
|
+
def add_list_in_color(...)
|
35
|
+
add_token(ColorizedList, ...)
|
34
36
|
end
|
35
37
|
|
36
|
-
def add_break(
|
37
|
-
add_token(Break,
|
38
|
+
def add_break(...)
|
39
|
+
add_token(Break, ...)
|
38
40
|
end
|
39
41
|
|
40
|
-
def insert(
|
41
|
-
add_token(Insertion,
|
42
|
+
def insert(...)
|
43
|
+
add_token(Insertion, ...)
|
42
44
|
end
|
43
45
|
|
44
46
|
def length_of_first_paragraph
|
45
|
-
Csi.decolorize(to_string_in_singleline_mode).split(
|
47
|
+
Csi.decolorize(to_string_in_singleline_mode).split("\n\n").first.length
|
46
48
|
end
|
47
49
|
|
48
50
|
def to_s(as_single_line: nil)
|
49
51
|
if length_of_first_paragraph > MAX_LINE_LENGTH ||
|
50
|
-
|
52
|
+
as_single_line == false
|
51
53
|
to_string_in_multiline_mode
|
52
54
|
elsif length_of_first_paragraph <= MAX_LINE_LENGTH ||
|
53
55
|
as_single_line == true
|
@@ -67,21 +69,17 @@ module SuperDiff
|
|
67
69
|
|
68
70
|
attr_reader :tokens
|
69
71
|
|
70
|
-
def add_token(klass,
|
71
|
-
tokens << klass.new(
|
72
|
+
def add_token(klass, ...)
|
73
|
+
tokens << klass.new(...)
|
72
74
|
end
|
73
75
|
|
74
76
|
class Base
|
75
77
|
def to_string_in_singleline_mode
|
76
|
-
raise NotImplementedError.
|
77
|
-
"#{self.class} must support #to_string_in_singleline_mode"
|
78
|
-
)
|
78
|
+
raise NotImplementedError, "#{self.class} must support #to_string_in_singleline_mode"
|
79
79
|
end
|
80
80
|
|
81
81
|
def to_string_in_multiline_mode
|
82
|
-
raise NotImplementedError.
|
83
|
-
"#{self.class} must support #to_string_in_multiline_mode"
|
84
|
-
)
|
82
|
+
raise NotImplementedError, "#{self.class} must support #to_string_in_multiline_mode"
|
85
83
|
end
|
86
84
|
|
87
85
|
def length
|
@@ -91,6 +89,7 @@ module SuperDiff
|
|
91
89
|
|
92
90
|
class Text < Base
|
93
91
|
def initialize(immediate_value = nil, &block)
|
92
|
+
super()
|
94
93
|
@immediate_value = immediate_value
|
95
94
|
@block = block
|
96
95
|
end
|
@@ -104,7 +103,7 @@ module SuperDiff
|
|
104
103
|
end
|
105
104
|
|
106
105
|
def to_s
|
107
|
-
raise NotImplementedError
|
106
|
+
raise NotImplementedError, "#{self.class} must support #to_s"
|
108
107
|
end
|
109
108
|
|
110
109
|
protected
|
@@ -112,11 +111,7 @@ module SuperDiff
|
|
112
111
|
attr_reader :immediate_value, :block
|
113
112
|
|
114
113
|
def evaluate
|
115
|
-
if immediate_value && block
|
116
|
-
raise ArgumentError.new(
|
117
|
-
"Cannot provide both immediate value and block"
|
118
|
-
)
|
119
|
-
end
|
114
|
+
raise ArgumentError, 'Cannot provide both immediate value and block' if immediate_value && block
|
120
115
|
|
121
116
|
immediate_value || block.call
|
122
117
|
end
|
@@ -124,12 +119,12 @@ module SuperDiff
|
|
124
119
|
def to_sentence(values)
|
125
120
|
case values.length
|
126
121
|
when 0
|
127
|
-
|
122
|
+
''
|
128
123
|
when 1
|
129
124
|
values[0]
|
130
125
|
else
|
131
126
|
# TODO: Use Oxford comma
|
132
|
-
values[0..-2].join(
|
127
|
+
values[0..-2].join(', ') + " and #{values[-1]}"
|
133
128
|
end
|
134
129
|
end
|
135
130
|
end
|
@@ -141,8 +136,8 @@ module SuperDiff
|
|
141
136
|
end
|
142
137
|
|
143
138
|
class ColorizedText < Text
|
144
|
-
def initialize(color,
|
145
|
-
super(
|
139
|
+
def initialize(color, ...)
|
140
|
+
super(...)
|
146
141
|
|
147
142
|
@color = color
|
148
143
|
end
|
@@ -165,8 +160,8 @@ module SuperDiff
|
|
165
160
|
end
|
166
161
|
|
167
162
|
class ColorizedList < Text
|
168
|
-
def initialize(color,
|
169
|
-
super(
|
163
|
+
def initialize(color, ...)
|
164
|
+
super(...)
|
170
165
|
|
171
166
|
@color = color
|
172
167
|
end
|
@@ -199,13 +194,13 @@ module SuperDiff
|
|
199
194
|
end
|
200
195
|
|
201
196
|
def to_string_in_multiline_mode
|
202
|
-
|
197
|
+
''
|
203
198
|
end
|
204
199
|
end
|
205
200
|
|
206
201
|
class PlainTextInMultilineMode < Text
|
207
202
|
def to_string_in_singleline_mode
|
208
|
-
|
203
|
+
''
|
209
204
|
end
|
210
205
|
|
211
206
|
def to_string_in_multiline_mode
|
@@ -215,7 +210,7 @@ module SuperDiff
|
|
215
210
|
|
216
211
|
class Break < Base
|
217
212
|
def to_string_in_singleline_mode
|
218
|
-
|
213
|
+
' '
|
219
214
|
end
|
220
215
|
|
221
216
|
def to_string_in_multiline_mode
|