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,245 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe "Integration with a third-party matcher", type: :integration do
|
4
|
-
context "when the matcher is used in the positive and fails" do
|
5
|
-
context "when the failure message spans multiple lines" do
|
6
|
-
context "and some of the message is indented" do
|
7
|
-
it "colorizes the non-indented part in red" do
|
8
|
-
as_both_colored_and_uncolored do |color_enabled|
|
9
|
-
snippet = <<~TEST.strip
|
10
|
-
expect(:anything).to fail_with_indented_multiline_failure_message
|
11
|
-
TEST
|
12
|
-
program =
|
13
|
-
make_plain_test_program(snippet, color_enabled: color_enabled)
|
14
|
-
|
15
|
-
expected_output =
|
16
|
-
build_expected_output(
|
17
|
-
color_enabled: color_enabled,
|
18
|
-
snippet:
|
19
|
-
"expect(:anything).to fail_with_indented_multiline_failure_message",
|
20
|
-
newline_before_expectation: true,
|
21
|
-
expectation:
|
22
|
-
proc do
|
23
|
-
red_line "This is a message that spans multiple lines."
|
24
|
-
red_line "Here is the next line."
|
25
|
-
plain_line " This part is indented, for whatever reason. It just kinda keeps"
|
26
|
-
plain_line " going until we finish saying whatever it is we want to say."
|
27
|
-
end
|
28
|
-
)
|
29
|
-
|
30
|
-
expect(program).to produce_output_when_run(
|
31
|
-
expected_output
|
32
|
-
).in_color(color_enabled)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context "and some of the message is not indented" do
|
38
|
-
context "and the message is divided into paragraphs" do
|
39
|
-
it "colorizes the first paragraph in red" do
|
40
|
-
as_both_colored_and_uncolored do |color_enabled|
|
41
|
-
snippet = <<~TEST.strip
|
42
|
-
expect(:anything).to fail_with_paragraphed_failure_message
|
43
|
-
TEST
|
44
|
-
program =
|
45
|
-
make_plain_test_program(snippet, color_enabled: color_enabled)
|
46
|
-
|
47
|
-
expected_output =
|
48
|
-
build_expected_output(
|
49
|
-
color_enabled: color_enabled,
|
50
|
-
snippet:
|
51
|
-
"expect(:anything).to fail_with_paragraphed_failure_message",
|
52
|
-
newline_before_expectation: true,
|
53
|
-
expectation:
|
54
|
-
proc do
|
55
|
-
red_line "This is a message that spans multiple paragraphs."
|
56
|
-
newline
|
57
|
-
plain_line "Here is the next paragraph."
|
58
|
-
end
|
59
|
-
)
|
60
|
-
|
61
|
-
expect(program).to produce_output_when_run(
|
62
|
-
expected_output
|
63
|
-
).in_color(color_enabled)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
context "and the message is not divided into paragraphs" do
|
69
|
-
it "colorizes all of the message in red" do
|
70
|
-
as_both_colored_and_uncolored do |color_enabled|
|
71
|
-
snippet = <<~TEST.strip
|
72
|
-
expect(:anything).to fail_with_non_indented_multiline_failure_message
|
73
|
-
TEST
|
74
|
-
program =
|
75
|
-
make_plain_test_program(snippet, color_enabled: color_enabled)
|
76
|
-
|
77
|
-
expected_output =
|
78
|
-
build_expected_output(
|
79
|
-
color_enabled: color_enabled,
|
80
|
-
snippet:
|
81
|
-
"expect(:anything).to fail_with_non_indented_multiline_failure_message",
|
82
|
-
newline_before_expectation: true,
|
83
|
-
expectation:
|
84
|
-
proc do
|
85
|
-
red_line "This is a message that spans multiple lines."
|
86
|
-
red_line "Here is the next line."
|
87
|
-
end
|
88
|
-
)
|
89
|
-
|
90
|
-
expect(program).to produce_output_when_run(
|
91
|
-
expected_output
|
92
|
-
).in_color(color_enabled)
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
context "when the failure message does not span multiple lines" do
|
100
|
-
it "colorizes all of the message in red" do
|
101
|
-
as_both_colored_and_uncolored do |color_enabled|
|
102
|
-
snippet = <<~TEST.strip
|
103
|
-
expect(:anything).to fail_with_singleline_failure_message
|
104
|
-
TEST
|
105
|
-
program =
|
106
|
-
make_plain_test_program(snippet, color_enabled: color_enabled)
|
107
|
-
|
108
|
-
expected_output =
|
109
|
-
build_expected_output(
|
110
|
-
color_enabled: color_enabled,
|
111
|
-
snippet:
|
112
|
-
"expect(:anything).to fail_with_singleline_failure_message",
|
113
|
-
expectation:
|
114
|
-
proc { red_line "This is a message that spans only one line." }
|
115
|
-
)
|
116
|
-
|
117
|
-
expect(program).to produce_output_when_run(expected_output).in_color(
|
118
|
-
color_enabled
|
119
|
-
)
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
context "when the matcher is used in the negative and fails" do
|
126
|
-
context "when the failure message spans multiple lines" do
|
127
|
-
context "and some of the message is indented" do
|
128
|
-
it "colorizes the non-indented part in red" do
|
129
|
-
as_both_colored_and_uncolored do |color_enabled|
|
130
|
-
snippet = <<~TEST.strip
|
131
|
-
expect(:anything).not_to pass_with_indented_multiline_failure_message
|
132
|
-
TEST
|
133
|
-
program =
|
134
|
-
make_plain_test_program(snippet, color_enabled: color_enabled)
|
135
|
-
|
136
|
-
expected_output =
|
137
|
-
build_expected_output(
|
138
|
-
color_enabled: color_enabled,
|
139
|
-
snippet:
|
140
|
-
"expect(:anything).not_to pass_with_indented_multiline_failure_message",
|
141
|
-
newline_before_expectation: true,
|
142
|
-
expectation:
|
143
|
-
proc do
|
144
|
-
red_line "This is a message that spans multiple lines."
|
145
|
-
red_line "Here is the next line."
|
146
|
-
plain_line " This part is indented, for whatever reason. It just kinda keeps"
|
147
|
-
plain_line " going until we finish saying whatever it is we want to say."
|
148
|
-
end
|
149
|
-
)
|
150
|
-
|
151
|
-
expect(program).to produce_output_when_run(
|
152
|
-
expected_output
|
153
|
-
).in_color(color_enabled)
|
154
|
-
end
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
context "and some of the message is not indented" do
|
159
|
-
context "and the message is divided into paragraphs" do
|
160
|
-
it "colorizes all of the message in red" do
|
161
|
-
as_both_colored_and_uncolored do |color_enabled|
|
162
|
-
snippet = <<~TEST.strip
|
163
|
-
expect(:anything).not_to pass_with_paragraphed_failure_message
|
164
|
-
TEST
|
165
|
-
program =
|
166
|
-
make_plain_test_program(snippet, color_enabled: color_enabled)
|
167
|
-
|
168
|
-
expected_output =
|
169
|
-
build_expected_output(
|
170
|
-
color_enabled: color_enabled,
|
171
|
-
snippet:
|
172
|
-
"expect(:anything).not_to pass_with_paragraphed_failure_message",
|
173
|
-
newline_before_expectation: true,
|
174
|
-
expectation:
|
175
|
-
proc do
|
176
|
-
red_line "This is a message that spans multiple paragraphs."
|
177
|
-
newline
|
178
|
-
plain_line "Here is the next paragraph."
|
179
|
-
end
|
180
|
-
)
|
181
|
-
|
182
|
-
expect(program).to produce_output_when_run(
|
183
|
-
expected_output
|
184
|
-
).in_color(color_enabled)
|
185
|
-
end
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
context "and the message is not divided into paragraphs" do
|
190
|
-
it "colorizes all of the message in red" do
|
191
|
-
as_both_colored_and_uncolored do |color_enabled|
|
192
|
-
snippet = <<~TEST.strip
|
193
|
-
expect(:anything).not_to pass_with_non_indented_multiline_failure_message
|
194
|
-
TEST
|
195
|
-
program =
|
196
|
-
make_plain_test_program(snippet, color_enabled: color_enabled)
|
197
|
-
|
198
|
-
expected_output =
|
199
|
-
build_expected_output(
|
200
|
-
color_enabled: color_enabled,
|
201
|
-
snippet:
|
202
|
-
"expect(:anything).not_to pass_with_non_indented_multiline_failure_message",
|
203
|
-
newline_before_expectation: true,
|
204
|
-
expectation:
|
205
|
-
proc do
|
206
|
-
red_line "This is a message that spans multiple lines."
|
207
|
-
red_line "Here is the next line."
|
208
|
-
end
|
209
|
-
)
|
210
|
-
|
211
|
-
expect(program).to produce_output_when_run(
|
212
|
-
expected_output
|
213
|
-
).in_color(color_enabled)
|
214
|
-
end
|
215
|
-
end
|
216
|
-
end
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
|
-
context "when the failure message does not span multiple lines" do
|
221
|
-
it "colorizes all of the message in red" do
|
222
|
-
as_both_colored_and_uncolored do |color_enabled|
|
223
|
-
snippet = <<~TEST.strip
|
224
|
-
expect(:anything).not_to pass_with_singleline_failure_message
|
225
|
-
TEST
|
226
|
-
program =
|
227
|
-
make_plain_test_program(snippet, color_enabled: color_enabled)
|
228
|
-
|
229
|
-
expected_output =
|
230
|
-
build_expected_output(
|
231
|
-
color_enabled: color_enabled,
|
232
|
-
snippet:
|
233
|
-
"expect(:anything).not_to pass_with_singleline_failure_message",
|
234
|
-
expectation:
|
235
|
-
proc { red_line "This is a message that spans only one line." }
|
236
|
-
)
|
237
|
-
|
238
|
-
expect(program).to produce_output_when_run(expected_output).in_color(
|
239
|
-
color_enabled
|
240
|
-
)
|
241
|
-
end
|
242
|
-
end
|
243
|
-
end
|
244
|
-
end
|
245
|
-
end
|
@@ -1,150 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe "Integration with RSpec and unhandled errors",
|
4
|
-
type: :integration do
|
5
|
-
context "when a random exception occurs" do
|
6
|
-
context "and the message spans multiple lines" do
|
7
|
-
it "highlights the first line in red, and then leaves the rest of the message alone" do
|
8
|
-
as_both_colored_and_uncolored do |color_enabled|
|
9
|
-
snippet = <<~TEST.strip
|
10
|
-
raise "Some kind of error or whatever\\n\\nThis is another line"
|
11
|
-
TEST
|
12
|
-
program =
|
13
|
-
make_plain_test_program(snippet, color_enabled: color_enabled)
|
14
|
-
|
15
|
-
expected_output =
|
16
|
-
build_expected_output(
|
17
|
-
color_enabled: color_enabled,
|
18
|
-
snippet: snippet,
|
19
|
-
newline_before_expectation: true,
|
20
|
-
indentation: 5,
|
21
|
-
expectation:
|
22
|
-
proc do
|
23
|
-
red_line "RuntimeError:"
|
24
|
-
indent by: 2 do
|
25
|
-
red_line "Some kind of error or whatever"
|
26
|
-
newline
|
27
|
-
plain_line "This is another line"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
)
|
31
|
-
|
32
|
-
expect(program).to produce_output_when_run(expected_output).in_color(
|
33
|
-
color_enabled
|
34
|
-
)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context "and the message does not span multiple lines" do
|
40
|
-
it "highlights the whole output after the code snippet in red" do
|
41
|
-
as_both_colored_and_uncolored do |color_enabled|
|
42
|
-
snippet = <<~TEST.strip
|
43
|
-
raise "Some kind of error or whatever"
|
44
|
-
TEST
|
45
|
-
program =
|
46
|
-
make_plain_test_program(snippet, color_enabled: color_enabled)
|
47
|
-
|
48
|
-
expected_output =
|
49
|
-
build_expected_output(
|
50
|
-
color_enabled: color_enabled,
|
51
|
-
snippet: snippet,
|
52
|
-
newline_before_expectation: true,
|
53
|
-
indentation: 5,
|
54
|
-
expectation:
|
55
|
-
proc do
|
56
|
-
red_line "RuntimeError:"
|
57
|
-
indent by: 2 do
|
58
|
-
red_line "Some kind of error or whatever"
|
59
|
-
end
|
60
|
-
end
|
61
|
-
)
|
62
|
-
|
63
|
-
expect(program).to produce_output_when_run(expected_output).in_color(
|
64
|
-
color_enabled
|
65
|
-
)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
context "when multiple exceptions occur" do
|
72
|
-
it "displays all exceptions, and for each exception, highlights the first line in red and leaves the rest of the message alone" do
|
73
|
-
as_both_colored_and_uncolored do |color_enabled|
|
74
|
-
snippet = <<~TEST.strip
|
75
|
-
raise "Some kind of error or whatever\\n\\nThis is another line"
|
76
|
-
TEST
|
77
|
-
code = <<~CODE
|
78
|
-
RSpec.describe "test" do
|
79
|
-
after(:each) do
|
80
|
-
#{snippet}
|
81
|
-
end
|
82
|
-
|
83
|
-
it "passes" do
|
84
|
-
#{snippet}
|
85
|
-
end
|
86
|
-
end
|
87
|
-
CODE
|
88
|
-
|
89
|
-
program =
|
90
|
-
make_plain_test_program(
|
91
|
-
code,
|
92
|
-
color_enabled: color_enabled,
|
93
|
-
preserve_as_whole_file: true
|
94
|
-
)
|
95
|
-
|
96
|
-
expected_output1 =
|
97
|
-
colored(color_enabled: color_enabled) do
|
98
|
-
indent by: 5 do
|
99
|
-
line do
|
100
|
-
plain "1.1) "
|
101
|
-
bold "Failure/Error: "
|
102
|
-
plain snippet
|
103
|
-
end
|
104
|
-
|
105
|
-
newline
|
106
|
-
|
107
|
-
indent by: 5 do
|
108
|
-
red_line "RuntimeError:"
|
109
|
-
indent by: 2 do
|
110
|
-
red_line "Some kind of error or whatever"
|
111
|
-
newline
|
112
|
-
line "This is another line"
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
expected_output2 =
|
119
|
-
colored(color_enabled: color_enabled) do
|
120
|
-
indent by: 5 do
|
121
|
-
line do
|
122
|
-
plain "1.2) "
|
123
|
-
bold "Failure/Error: "
|
124
|
-
plain snippet
|
125
|
-
end
|
126
|
-
|
127
|
-
newline
|
128
|
-
|
129
|
-
indent by: 5 do
|
130
|
-
red_line "RuntimeError:"
|
131
|
-
indent by: 2 do
|
132
|
-
red_line "Some kind of error or whatever"
|
133
|
-
newline
|
134
|
-
line "This is another line"
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
expect(program).to produce_output_when_run(expected_output1).in_color(
|
141
|
-
color_enabled
|
142
|
-
)
|
143
|
-
|
144
|
-
expect(program).to produce_output_when_run(expected_output2).in_color(
|
145
|
-
color_enabled
|
146
|
-
)
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
150
|
-
end
|
data/spec/internal/log/test.log
DELETED
File without changes
|
data/spec/spec_helper.rb
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
require "pp"
|
2
|
-
|
3
|
-
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("3.2")
|
4
|
-
begin
|
5
|
-
require "pry-byebug"
|
6
|
-
rescue LoadError
|
7
|
-
end
|
8
|
-
|
9
|
-
begin
|
10
|
-
require "pry-nav"
|
11
|
-
rescue LoadError
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
require "climate_control"
|
16
|
-
|
17
|
-
#---
|
18
|
-
|
19
|
-
require_relative "../support/current_bundle"
|
20
|
-
|
21
|
-
SuperDiff::CurrentBundle.instance.assert_appraisal!
|
22
|
-
|
23
|
-
#---
|
24
|
-
|
25
|
-
begin
|
26
|
-
require "active_record"
|
27
|
-
|
28
|
-
active_record_available = true
|
29
|
-
|
30
|
-
ActiveRecord::Base.establish_connection(
|
31
|
-
adapter: "sqlite3",
|
32
|
-
database: ":memory:"
|
33
|
-
)
|
34
|
-
rescue LoadError
|
35
|
-
active_record_available = false
|
36
|
-
end
|
37
|
-
|
38
|
-
Dir
|
39
|
-
.glob(File.expand_path("support/**/*.rb", __dir__))
|
40
|
-
.sort
|
41
|
-
.reject do |file|
|
42
|
-
file.include?("/models/active_record/") && !active_record_available
|
43
|
-
end
|
44
|
-
.each { |file| require file }
|
45
|
-
|
46
|
-
RSpec.configure do |config|
|
47
|
-
config.include(SuperDiff::UnitTests, type: :unit)
|
48
|
-
config.include(SuperDiff::IntegrationTests, type: :integration)
|
49
|
-
|
50
|
-
config.expect_with :rspec do |expectations|
|
51
|
-
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
52
|
-
expectations.max_formatted_output_length = nil
|
53
|
-
end
|
54
|
-
|
55
|
-
config.mock_with :rspec do |mocks|
|
56
|
-
mocks.verify_partial_doubles = true
|
57
|
-
end
|
58
|
-
|
59
|
-
config.shared_context_metadata_behavior = :apply_to_host_groups
|
60
|
-
config.filter_run_when_matching :focus
|
61
|
-
config.example_status_persistence_file_path = "spec/examples.txt"
|
62
|
-
config.disable_monkey_patching!
|
63
|
-
config.warnings = true
|
64
|
-
|
65
|
-
config.default_formatter = "documentation" if !%w[true 1].include?(ENV["CI"])
|
66
|
-
|
67
|
-
config.filter_run_excluding active_record: true unless active_record_available
|
68
|
-
unless defined?(ActiveSupport)
|
69
|
-
config.filter_run_excluding active_support: true
|
70
|
-
end
|
71
|
-
|
72
|
-
config.order = :random
|
73
|
-
Kernel.srand config.seed
|
74
|
-
|
75
|
-
config.color_mode = :on if ENV["CI"] == "true"
|
76
|
-
end
|
77
|
-
|
78
|
-
require "warnings_logger"
|
79
|
-
$VERBOSE = true
|
80
|
-
WarningsLogger.configure do |config|
|
81
|
-
config.project_name = "super_diff"
|
82
|
-
config.project_directory = Pathname.new("..").expand_path(__dir__)
|
83
|
-
end
|
84
|
-
WarningsLogger.enable
|
85
|
-
|
86
|
-
if active_record_available
|
87
|
-
require "super_diff/rspec-rails"
|
88
|
-
else
|
89
|
-
require "super_diff/rspec"
|
90
|
-
end
|