super_diff 0.12.1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
data/spec/spec_helper.rb CHANGED
@@ -68,6 +68,7 @@ RSpec.configure do |config|
68
68
  unless defined?(ActiveSupport)
69
69
  config.filter_run_excluding active_support: true
70
70
  end
71
+ config.filter_run_excluding with_superdiff_rspec: false
71
72
 
72
73
  config.order = :random
73
74
  Kernel.srand config.seed
@@ -0,0 +1,7 @@
1
+ if defined?(Data)
2
+ module SuperDiff
3
+ module Test
4
+ Point = Data.define(:x, :y)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,146 @@
1
+ require "spec_helper"
2
+
3
+ if defined?(Data)
4
+ RSpec.describe SuperDiff, type: :unit do
5
+ describe ".inspect_object" do
6
+ context "given as_lines: false" do
7
+ subject(:output) do
8
+ described_class.inspect_object(object, as_lines: false)
9
+ end
10
+
11
+ context "given an anonymous Data object" do
12
+ let(:object) { Data.define(:x, :y).new(1, 2) }
13
+
14
+ it "shows the data" do
15
+ expect(output).to eq("#<data x: 1, y: 2>")
16
+ end
17
+ end
18
+
19
+ context "given a named Data object" do
20
+ let(:object) { SuperDiff::Test::Point.new(1, 2) }
21
+
22
+ it "shows the data" do
23
+ expect(output).to eq("#<data SuperDiff::Test::Point x: 1, y: 2>")
24
+ end
25
+ end
26
+
27
+ context "given a Data object that defines #attributes_for_super_diff" do
28
+ let(:klass) do
29
+ Data.define(:x, :y) do
30
+ def attributes_for_super_diff
31
+ { beep: :boop }
32
+ end
33
+ end
34
+ end
35
+ let(:object) { klass.new(1, 2) }
36
+
37
+ it "uses the custom attributes" do
38
+ expect(output).to start_with("#<#<Class:0x").and end_with(
39
+ "beep: :boop>"
40
+ )
41
+ end
42
+ end
43
+ end
44
+
45
+ context "given as_lines: true" do
46
+ subject(:tiered_lines) do
47
+ described_class.inspect_object(
48
+ object,
49
+ as_lines: true,
50
+ type: :noop,
51
+ indentation_level: 1
52
+ )
53
+ end
54
+
55
+ context "given an anonymous Data object" do
56
+ let(:object) { Data.define(:x, :y).new(1, 2) }
57
+
58
+ it "shows the data" do
59
+ expect(tiered_lines).to match(
60
+ [
61
+ an_object_having_attributes(
62
+ value: "#<data {",
63
+ collection_bookend: :open
64
+ ),
65
+ an_object_having_attributes(
66
+ prefix: "x: ",
67
+ value: "1",
68
+ add_comma: true
69
+ ),
70
+ an_object_having_attributes(
71
+ prefix: "y: ",
72
+ value: "2",
73
+ add_comma: false
74
+ ),
75
+ an_object_having_attributes(
76
+ value: "}>",
77
+ collection_bookend: :close
78
+ )
79
+ ]
80
+ )
81
+ end
82
+ end
83
+
84
+ context "given a named Data object" do
85
+ let(:object) { SuperDiff::Test::Point.new(1, 2) }
86
+
87
+ it "shows the data" do
88
+ expect(tiered_lines).to match(
89
+ [
90
+ an_object_having_attributes(
91
+ value: "#<data SuperDiff::Test::Point {",
92
+ collection_bookend: :open
93
+ ),
94
+ an_object_having_attributes(
95
+ prefix: "x: ",
96
+ value: "1",
97
+ add_comma: true
98
+ ),
99
+ an_object_having_attributes(
100
+ prefix: "y: ",
101
+ value: "2",
102
+ add_comma: false
103
+ ),
104
+ an_object_having_attributes(
105
+ value: "}>",
106
+ collection_bookend: :close
107
+ )
108
+ ]
109
+ )
110
+ end
111
+ end
112
+
113
+ context "given a Data object that defines #attributes_for_super_diff" do
114
+ let(:klass) do
115
+ Data.define(:x, :y) do
116
+ def attributes_for_super_diff
117
+ { beep: :boop }
118
+ end
119
+ end
120
+ end
121
+ let(:object) { klass.new(1, 2) }
122
+
123
+ it "uses the custom attributes" do
124
+ expect(tiered_lines).to match(
125
+ [
126
+ an_object_having_attributes(
127
+ value: /\A#<#<Class:0x.*> {/,
128
+ collection_bookend: :open
129
+ ),
130
+ an_object_having_attributes(
131
+ prefix: "beep: ",
132
+ value: ":boop",
133
+ add_comma: false
134
+ ),
135
+ an_object_having_attributes(
136
+ value: "}>",
137
+ collection_bookend: :close
138
+ )
139
+ ]
140
+ )
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,82 @@
1
+ require "spec_helper"
2
+
3
+ if defined?(Data)
4
+ RSpec.describe SuperDiff, type: :unit do
5
+ describe ".diff" do
6
+ subject(:diff) { described_class.diff(a, b) }
7
+
8
+ context "when given two Data objects of the same class" do
9
+ let(:a) { SuperDiff::Test::Point.new(1, 2) }
10
+ let(:b) { SuperDiff::Test::Point.new(1, 3) }
11
+
12
+ it "diffs their member attributes" do
13
+ expected_output =
14
+ SuperDiff::Core::Helpers
15
+ .style(color_enabled: true) do
16
+ plain_line " #<SuperDiff::Test::Point {"
17
+ plain_line " x: 1,"
18
+ expected_line "- y: 2"
19
+ actual_line "+ y: 3"
20
+ plain_line " }>"
21
+ end
22
+ .to_s
23
+ .chomp
24
+
25
+ expect(diff).to eq(expected_output)
26
+ end
27
+
28
+ context "when the Data class defines #attributes_for_super_diff" do
29
+ let(:klass) do
30
+ Class.new(Data.define(:attribute)) do
31
+ def self.to_s = "TestClass"
32
+
33
+ def attributes_for_super_diff
34
+ { attribute: :does_not_matter }
35
+ end
36
+ end
37
+ end
38
+
39
+ let(:a) { klass.new(1) }
40
+ let(:b) { klass.new(2) }
41
+
42
+ it "diffs their member attributes" do
43
+ expected_output =
44
+ SuperDiff::Core::Helpers
45
+ .style(color_enabled: true) do
46
+ plain_line " #<TestClass {"
47
+ expected_line "- attribute: 1"
48
+ actual_line "+ attribute: 2"
49
+ plain_line " }>"
50
+ end
51
+ .to_s
52
+ .chomp
53
+
54
+ expect(diff).to eq(expected_output)
55
+ end
56
+ end
57
+ end
58
+
59
+ context "when given two Data objects of different classes" do
60
+ let(:a) { SuperDiff::Test::Point.new(1, 2) }
61
+ let(:b) { Data.define(:one, :two).new(1, 2) }
62
+
63
+ it "raises" do
64
+ expect { SuperDiff.diff(a, b) }.to raise_error(
65
+ SuperDiff::Core::NoDifferAvailableError
66
+ )
67
+ end
68
+ end
69
+
70
+ context "when given a Data object and a hash" do
71
+ let(:a) { Data.define(:one, :two).new(1, 2) }
72
+ let(:b) { { one: 1, two: 2 } }
73
+
74
+ it "raises" do
75
+ expect { SuperDiff.diff(a, b) }.to raise_error(
76
+ SuperDiff::Core::NoDifferAvailableError
77
+ )
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,58 @@
1
+ require "delegate"
2
+ require "super_diff"
3
+
4
+ class FakeTTYDecorator < SimpleDelegator
5
+ def initialize(obj, is_tty:)
6
+ super(obj)
7
+ @is_tty = is_tty
8
+ end
9
+
10
+ def isatty = @is_tty
11
+ def tty? = isatty
12
+ end
13
+
14
+ RSpec.describe SuperDiff::Core::Configuration, with_superdiff_rspec: false do
15
+ describe "#color_enabled?" do
16
+ it "is true when stdout is a TTY" do
17
+ original_stdout = $stdout
18
+ color_enabled = nil
19
+ begin
20
+ $stdout = FakeTTYDecorator.new(StringIO.new, is_tty: true)
21
+ color_enabled = SuperDiff.configuration.color_enabled?
22
+ ensure
23
+ $stdout = original_stdout
24
+ end
25
+ expect(color_enabled).to be(true)
26
+ end
27
+
28
+ it "is false when stdout is not a TTY but we are in CI" do
29
+ original_stdout = $stdout
30
+ original_ci = ENV["CI"]
31
+ color_enabled = nil
32
+ begin
33
+ $stdout = FakeTTYDecorator.new(StringIO.new, is_tty: false)
34
+ ENV["CI"] = "true"
35
+ color_enabled = SuperDiff.configuration.color_enabled?
36
+ ensure
37
+ $stdout = original_stdout
38
+ ENV["CI"] = original_ci
39
+ end
40
+ expect(color_enabled).to be(true)
41
+ end
42
+
43
+ it "is false when stdout is not a TTY and we are not in CI" do
44
+ original_stdout = $stdout
45
+ original_ci = ENV["CI"]
46
+ color_enabled = nil
47
+ begin
48
+ $stdout = FakeTTYDecorator.new(StringIO.new, is_tty: false)
49
+ ENV["CI"] = nil
50
+ color_enabled = SuperDiff.configuration.color_enabled?
51
+ ensure
52
+ $stdout = original_stdout
53
+ ENV["CI"] = original_ci
54
+ end
55
+ expect(color_enabled).to be(false)
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,176 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe SuperDiff::Core::Configuration do
4
+ it "maintains frozen instance variables" do
5
+ expect(described_class.new.instance_variables).to all(be_frozen)
6
+ end
7
+
8
+ describe ".new" do
9
+ context "when passed nothing" do
10
+ subject(:config) { described_class.new }
11
+
12
+ it "creates a Configuration object with reasonable defaults" do
13
+ expect(config.actual_color).to eq(:yellow)
14
+ end
15
+ end
16
+
17
+ context "when passed options" do
18
+ subject(:config) { described_class.new(actual_color: :cyan) }
19
+
20
+ it "overrides the defaults with the provided options" do
21
+ expect(config.actual_color).to eq(:cyan)
22
+ end
23
+
24
+ it "uses the defaults for other options" do
25
+ expect(config.border_color).to eq(:blue)
26
+ end
27
+ end
28
+ end
29
+
30
+ describe ".dup" do
31
+ subject(:duplicated_config) { original_config.dup }
32
+
33
+ let(:original_config) { described_class.new(overrides) }
34
+ let(:in_both) { Class.new }
35
+ let(:in_duplicated_only) { Class.new }
36
+ let(:in_original_only) { Class.new }
37
+
38
+ let(:overrides) do
39
+ {
40
+ extra_diff_formatter_classes: [],
41
+ extra_differ_classes: [],
42
+ extra_inspection_tree_builder_classes: [],
43
+ extra_operation_tree_builder_classes: [],
44
+ extra_operation_tree_classes: []
45
+ }
46
+ end
47
+
48
+ %i[
49
+ diff_formatter
50
+ differ
51
+ operation_tree_builder
52
+ operation_tree
53
+ inspection_tree_builder
54
+ ].each do |object_type|
55
+ it "duplicates extra #{object_type.to_s.tr("_", " ")} classes" do
56
+ add_method_name = :"add_extra_#{object_type}_class"
57
+ get_method_name = :"extra_#{object_type}_classes"
58
+
59
+ original_config.send(add_method_name, in_both)
60
+ expect {
61
+ duplicated_config.send(get_method_name) << in_duplicated_only
62
+ }.to raise_error(FrozenError)
63
+ duplicated_config.send(add_method_name, in_duplicated_only)
64
+ original_config.send(add_method_name, in_original_only)
65
+
66
+ expect(original_config.send(get_method_name)).to include(
67
+ in_both,
68
+ in_original_only
69
+ )
70
+ expect(original_config.send(get_method_name)).not_to include(
71
+ in_duplicated_only
72
+ )
73
+
74
+ expect(duplicated_config.send(get_method_name)).to include(
75
+ in_both,
76
+ in_duplicated_only
77
+ )
78
+ expect(duplicated_config.send(get_method_name)).not_to include(
79
+ in_original_only
80
+ )
81
+ end
82
+ end
83
+ end
84
+
85
+ %i[
86
+ diff_formatter
87
+ differ
88
+ operation_tree_builder
89
+ operation_tree
90
+ inspection_tree_builder
91
+ ].each do |object_type|
92
+ describe "#add_extra_#{object_type}_classes" do
93
+ let(:config) { described_class.new }
94
+ let(:new_class1) { Class.new }
95
+ let(:new_class2) { Class.new }
96
+
97
+ it "appends multiple given classes" do
98
+ config.send("add_extra_#{object_type}_classes", new_class1, new_class2)
99
+ expect(config.send("extra_#{object_type}_classes")[-2..]).to eq(
100
+ [new_class1, new_class2]
101
+ )
102
+ end
103
+
104
+ it "appends a single given class" do
105
+ config.send("add_extra_#{object_type}_classes", new_class1)
106
+ expect(config.send("extra_#{object_type}_classes")[-1]).to eq(
107
+ new_class1
108
+ )
109
+ end
110
+ end
111
+
112
+ describe "#prepend_extra_#{object_type}_classes" do
113
+ let(:config) { described_class.new }
114
+ let(:new_class1) { Class.new }
115
+ let(:new_class2) { Class.new }
116
+
117
+ it "prepends multiple given classes" do
118
+ config.send(
119
+ "prepend_extra_#{object_type}_classes",
120
+ new_class1,
121
+ new_class2
122
+ )
123
+ expect(config.send("extra_#{object_type}_classes")[..1]).to eq(
124
+ [new_class1, new_class2]
125
+ )
126
+ end
127
+
128
+ it "prepends a single given class" do
129
+ config.send("prepend_extra_#{object_type}_classes", new_class1)
130
+ expect(config.send("extra_#{object_type}_classes")[0]).to eq(new_class1)
131
+ end
132
+ end
133
+ end
134
+
135
+ describe "#color_enabled?" do
136
+ context "when explicitly set" do
137
+ it "equals what was set" do
138
+ [true, false].each do |value|
139
+ SuperDiff.configuration.color_enabled.tap do |original|
140
+ SuperDiff.configuration.color_enabled = value
141
+ expect(SuperDiff.configuration.color_enabled?).to be(value)
142
+ SuperDiff.configuration.color_enabled = original
143
+ end
144
+ end
145
+ end
146
+ end
147
+
148
+ context "when not explicitly set" do
149
+ context 'when ENV["CI"] is true' do
150
+ it "is true" do
151
+ color_enabled = nil
152
+ ClimateControl.modify(CI: "true") do
153
+ color_enabled = SuperDiff.configuration.color_enabled?
154
+ end
155
+ expect(color_enabled).to be(true)
156
+ end
157
+ end
158
+
159
+ context 'when ENV["CI"] is not true' do
160
+ it "defaults to RSpec's config" do
161
+ ClimateControl.modify(CI: nil) do
162
+ %i[automatic on off].each do |value|
163
+ RSpec.configuration.color_mode.tap do |original|
164
+ RSpec.configuration.color_mode = value
165
+ expect(SuperDiff.configuration.color_enabled?).to eq(
166
+ RSpec.configuration.color_enabled?
167
+ )
168
+ RSpec.configuration.color_mode = original
169
+ end
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end
176
+ end
data/super_diff.gemspec CHANGED
@@ -3,9 +3,9 @@ require File.expand_path("lib/super_diff/version", __dir__)
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "super_diff"
5
5
  s.version = SuperDiff::VERSION
6
- s.authors = ["Elliot Winkler"]
7
- s.email = ["elliot.winkler@gmail.com"]
8
- s.homepage = "https://github.com/mcmire/super_diff"
6
+ s.authors = ["Elliot Winkler", "Splitwise, Inc."]
7
+ s.email = ["oss-community@splitwise.com"]
8
+ s.homepage = "https://github.com/splitwise/super_diff"
9
9
  s.summary =
10
10
  "A better way to view differences between complex data structures in RSpec."
11
11
  s.license = "MIT"
@@ -14,10 +14,11 @@ Gem::Specification.new do |s|
14
14
  differences between two data structures of any type.
15
15
  DESC
16
16
  s.metadata = {
17
- "bug_tracker_uri" => "https://github.com/mcmire/super_diff/issues",
17
+ "bug_tracker_uri" => "https://github.com/splitwise/super_diff/issues",
18
18
  "changelog_uri" =>
19
- "https://github.com/mcmire/super_diff/blob/main/CHANGELOG.md",
20
- "source_code_uri" => "https://github.com/mcmire/super_diff"
19
+ "https://github.com/splitwise/super_diff/blob/main/CHANGELOG.md",
20
+ "rubygems_mfa_required" => "true",
21
+ "source_code_uri" => "https://github.com/splitwise/super_diff"
21
22
  }
22
23
  s.required_ruby_version = ">= 3"
23
24
 
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: super_diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elliot Winkler
8
+ - Splitwise, Inc.
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2024-04-27 00:00:00.000000000 Z
12
+ date: 2024-09-23 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: attr_extras
@@ -56,7 +57,7 @@ description: |
56
57
  SuperDiff is a gem that hooks into RSpec to intelligently display the
57
58
  differences between two data structures of any type.
58
59
  email:
59
- - elliot.winkler@gmail.com
60
+ - oss-community@splitwise.com
60
61
  executables: []
61
62
  extensions: []
62
63
  extra_rdoc_files: []
@@ -106,6 +107,7 @@ files:
106
107
  - lib/super_diff/basic/inspection_tree_builders.rb
107
108
  - lib/super_diff/basic/inspection_tree_builders/array.rb
108
109
  - lib/super_diff/basic/inspection_tree_builders/custom_object.rb
110
+ - lib/super_diff/basic/inspection_tree_builders/data_object.rb
109
111
  - lib/super_diff/basic/inspection_tree_builders/date_like.rb
110
112
  - lib/super_diff/basic/inspection_tree_builders/default_object.rb
111
113
  - lib/super_diff/basic/inspection_tree_builders/hash.rb
@@ -114,6 +116,7 @@ files:
114
116
  - lib/super_diff/basic/operation_tree_builders.rb
115
117
  - lib/super_diff/basic/operation_tree_builders/array.rb
116
118
  - lib/super_diff/basic/operation_tree_builders/custom_object.rb
119
+ - lib/super_diff/basic/operation_tree_builders/data_object.rb
117
120
  - lib/super_diff/basic/operation_tree_builders/date_like.rb
118
121
  - lib/super_diff/basic/operation_tree_builders/default_object.rb
119
122
  - lib/super_diff/basic/operation_tree_builders/hash.rb
@@ -264,7 +267,6 @@ files:
264
267
  - spec/integration/rspec/respond_to_matcher_spec.rb
265
268
  - spec/integration/rspec/third_party_matcher_spec.rb
266
269
  - spec/integration/rspec/unhandled_errors_spec.rb
267
- - spec/internal/log/test.log
268
270
  - spec/spec_helper.rb
269
271
  - spec/support/colorizer.rb
270
272
  - spec/support/command_runner.rb
@@ -288,6 +290,7 @@ files:
288
290
  - spec/support/models/order.rb
289
291
  - spec/support/models/person.rb
290
292
  - spec/support/models/player.rb
293
+ - spec/support/models/point.rb
291
294
  - spec/support/models/shipping_address.rb
292
295
  - spec/support/shared_examples/active_record.rb
293
296
  - spec/support/shared_examples/active_support.rb
@@ -299,11 +302,15 @@ files:
299
302
  - spec/support/unit/matchers/match_output.rb
300
303
  - spec/unit/active_record/object_inspection_spec.rb
301
304
  - spec/unit/active_support/object_inspection_spec.rb
305
+ - spec/unit/basic/inspection_tree_builders/data_object_spec.rb
306
+ - spec/unit/basic/operation_tree_builders/data_object_spec.rb
302
307
  - spec/unit/basic/operation_tree_flatteners/array_spec.rb
303
308
  - spec/unit/basic/operation_tree_flatteners/custom_object_spec.rb
304
309
  - spec/unit/basic/operation_tree_flatteners/default_object_spec.rb
305
310
  - spec/unit/basic/operation_tree_flatteners/hash_spec.rb
306
311
  - spec/unit/basic/operation_tree_flatteners/multiline_string_spec.rb
312
+ - spec/unit/core/configuration_no_rspec_spec.rb
313
+ - spec/unit/core/configuration_spec.rb
307
314
  - spec/unit/core/helpers_spec.rb
308
315
  - spec/unit/core/tiered_lines_elider_spec.rb
309
316
  - spec/unit/core/tiered_lines_formatter_spec.rb
@@ -328,13 +335,14 @@ files:
328
335
  - spec/unit/rspec/object_inspection_spec.rb
329
336
  - spec/unit/super_diff_spec.rb
330
337
  - super_diff.gemspec
331
- homepage: https://github.com/mcmire/super_diff
338
+ homepage: https://github.com/splitwise/super_diff
332
339
  licenses:
333
340
  - MIT
334
341
  metadata:
335
- bug_tracker_uri: https://github.com/mcmire/super_diff/issues
336
- changelog_uri: https://github.com/mcmire/super_diff/blob/main/CHANGELOG.md
337
- source_code_uri: https://github.com/mcmire/super_diff
342
+ bug_tracker_uri: https://github.com/splitwise/super_diff/issues
343
+ changelog_uri: https://github.com/splitwise/super_diff/blob/main/CHANGELOG.md
344
+ rubygems_mfa_required: 'true'
345
+ source_code_uri: https://github.com/splitwise/super_diff
338
346
  post_install_message:
339
347
  rdoc_options: []
340
348
  require_paths:
@@ -350,7 +358,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
350
358
  - !ruby/object:Gem::Version
351
359
  version: '0'
352
360
  requirements: []
353
- rubygems_version: 3.4.6
361
+ rubygems_version: 3.5.18
354
362
  signing_key:
355
363
  specification_version: 4
356
364
  summary: A better way to view differences between complex data structures in RSpec.
@@ -378,7 +386,6 @@ test_files:
378
386
  - spec/integration/rspec/respond_to_matcher_spec.rb
379
387
  - spec/integration/rspec/third_party_matcher_spec.rb
380
388
  - spec/integration/rspec/unhandled_errors_spec.rb
381
- - spec/internal/log/test.log
382
389
  - spec/spec_helper.rb
383
390
  - spec/support/colorizer.rb
384
391
  - spec/support/command_runner.rb
@@ -402,6 +409,7 @@ test_files:
402
409
  - spec/support/models/order.rb
403
410
  - spec/support/models/person.rb
404
411
  - spec/support/models/player.rb
412
+ - spec/support/models/point.rb
405
413
  - spec/support/models/shipping_address.rb
406
414
  - spec/support/shared_examples/active_record.rb
407
415
  - spec/support/shared_examples/active_support.rb
@@ -413,11 +421,15 @@ test_files:
413
421
  - spec/support/unit/matchers/match_output.rb
414
422
  - spec/unit/active_record/object_inspection_spec.rb
415
423
  - spec/unit/active_support/object_inspection_spec.rb
424
+ - spec/unit/basic/inspection_tree_builders/data_object_spec.rb
425
+ - spec/unit/basic/operation_tree_builders/data_object_spec.rb
416
426
  - spec/unit/basic/operation_tree_flatteners/array_spec.rb
417
427
  - spec/unit/basic/operation_tree_flatteners/custom_object_spec.rb
418
428
  - spec/unit/basic/operation_tree_flatteners/default_object_spec.rb
419
429
  - spec/unit/basic/operation_tree_flatteners/hash_spec.rb
420
430
  - spec/unit/basic/operation_tree_flatteners/multiline_string_spec.rb
431
+ - spec/unit/core/configuration_no_rspec_spec.rb
432
+ - spec/unit/core/configuration_spec.rb
421
433
  - spec/unit/core/helpers_spec.rb
422
434
  - spec/unit/core/tiered_lines_elider_spec.rb
423
435
  - spec/unit/core/tiered_lines_formatter_spec.rb
File without changes