super_diff 0.6.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -188,10 +188,12 @@ RSpec.describe "Integration with RSpec's #eq matcher", type: :integration do
188
188
  expectation: proc {
189
189
  line do
190
190
  plain %|Expected |
191
- actual %|2011-12-13 14:15:16.000 UTC +00:00 (Time)|
192
- plain %| to eq |
193
- expected %|2011-12-13 14:15:16.500 UTC +00:00 (Time)|
194
- plain %|.|
191
+ actual %|#<Time 2011-12-13 14:15:16 +00:00 (UTC)>|
192
+ end
193
+
194
+ line do
195
+ plain %| to eq |
196
+ expected %|#<Time 2011-12-13 14:15:16+(1/2) +00:00 (UTC)>|
195
197
  end
196
198
  },
197
199
  diff: proc {
@@ -202,10 +204,10 @@ RSpec.describe "Integration with RSpec's #eq matcher", type: :integration do
202
204
  plain_line " hour: 14,"
203
205
  plain_line " min: 15,"
204
206
  plain_line " sec: 16,"
205
- expected_line "- nsec: 500000000,"
206
- actual_line "+ nsec: 0,"
207
+ expected_line "- subsec: (1/2),"
208
+ actual_line "+ subsec: 0,"
207
209
  plain_line " zone: \"UTC\","
208
- plain_line " gmt_offset: 0"
210
+ plain_line " utc_offset: 0"
209
211
  plain_line " }>"
210
212
  },
211
213
  )
@@ -234,12 +236,12 @@ RSpec.describe "Integration with RSpec's #eq matcher", type: :integration do
234
236
  expectation: proc {
235
237
  line do
236
238
  plain %| Expected |
237
- actual %|2011-12-13 14:15:16.000 UTC +00:00 (Time)|
239
+ actual %|#<Time 2011-12-13 14:15:16 +00:00 (UTC)>|
238
240
  end
239
241
 
240
242
  line do
241
243
  plain %|not to eq |
242
- expected %|2011-12-13 14:15:16.000 UTC +00:00 (Time)|
244
+ expected %|#<Time 2011-12-13 14:15:16 +00:00 (UTC)>|
243
245
  end
244
246
  },
245
247
  )
@@ -270,31 +272,41 @@ RSpec.describe "Integration with RSpec's #eq matcher", type: :integration do
270
272
  expectation: proc {
271
273
  line do
272
274
  plain %|Expected |
273
- actual %|2011-12-13 14:15:16.000 UTC +00:00 (Time)|
275
+ actual %|#<Time 2011-12-13 14:15:16 +00:00 (UTC)>|
274
276
  end
275
277
 
276
278
  line do
277
279
  plain %| to eq |
278
- expected %|2011-12-13 16:15:16.000 CET +01:00 (ActiveSupport::TimeWithZone)|
280
+ expected %|#<ActiveSupport::TimeWithZone 2011-12-13 16:15:16 +01:00 (CET)>|
279
281
  end
280
282
  },
281
283
  diff: proc {
282
- plain_line " #<ActiveSupport::TimeWithZone {"
283
- plain_line " year: 2011,"
284
- plain_line " month: 12,"
285
- plain_line " day: 13,"
286
- expected_line "- hour: 16,"
287
- actual_line "+ hour: 14,"
288
- plain_line " min: 15,"
289
- plain_line " sec: 16,"
290
- plain_line " nsec: 0,"
291
- expected_line "- zone: \"CET\","
292
- actual_line "+ zone: \"UTC\","
293
- expected_line "- gmt_offset: 3600,"
294
- actual_line "+ gmt_offset: 0,"
295
- expected_line "- utc: 2011-12-13 15:15:16.000 UTC +00:00 (Time)"
296
- actual_line "+ utc: 2011-12-13 14:15:16.000 UTC +00:00 (Time)"
297
- plain_line " }>"
284
+ plain_line %| #<ActiveSupport::TimeWithZone {|
285
+ plain_line %| year: 2011,|
286
+ plain_line %| month: 12,|
287
+ plain_line %| day: 13,|
288
+ expected_line %|- hour: 16,|
289
+ actual_line %|+ hour: 14,|
290
+ plain_line %| min: 15,|
291
+ plain_line %| sec: 16,|
292
+ plain_line %| subsec: 0,|
293
+ expected_line %|- zone: \"CET\",|
294
+ actual_line %|+ zone: \"UTC\",|
295
+ expected_line %|- utc_offset: 3600,|
296
+ actual_line %|+ utc_offset: 0,|
297
+ plain_line %| utc: #<Time {|
298
+ plain_line %| year: 2011,|
299
+ plain_line %| month: 12,|
300
+ plain_line %| day: 13,|
301
+ expected_line %|- hour: 15,|
302
+ actual_line %|+ hour: 14,|
303
+ plain_line %| min: 15,|
304
+ plain_line %| sec: 16,|
305
+ plain_line %| subsec: 0,|
306
+ plain_line %| zone: "UTC",|
307
+ plain_line %| utc_offset: 0|
308
+ plain_line %| }>|
309
+ plain_line %| }>|
298
310
  },
299
311
  )
300
312
 
@@ -411,7 +411,17 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ
411
411
  expected_line %|- data: #<a hash including (|
412
412
  expected_line %|- active: true|
413
413
  expected_line %|- )>,|
414
- expected_line %|- created_at: #<a value within 1 of 2020-04-09 00:00:00.000 UTC +00:00 (Time)>|
414
+ expected_line %|- created_at: #<a value within 1 of #<Time {|
415
+ expected_line %|- year: 2020,|
416
+ expected_line %|- month: 4,|
417
+ expected_line %|- day: 9,|
418
+ expected_line %|- hour: 0,|
419
+ expected_line %|- min: 0,|
420
+ expected_line %|- sec: 0,|
421
+ expected_line %|- subsec: 0,|
422
+ expected_line %|- zone: "UTC",|
423
+ expected_line %|- utc_offset: 0|
424
+ expected_line %|- }>>|
415
425
  plain_line %| }|
416
426
  },
417
427
  )
@@ -341,6 +341,48 @@ RSpec.describe "Integration with RSpec's #match matcher", type: :integration do
341
341
  end
342
342
  end
343
343
 
344
+ # HINT: `a_hash_including` is an alias of `include` in the rspec-expectations gem.
345
+ # `hash_including` is an argument matcher in the rspec-mocks gem.
346
+ context "when the expected value is `hash-including-<something>`, not `a-hash-including-<something>`" do
347
+ it "produces the correct failure message" do
348
+ as_both_colored_and_uncolored do |color_enabled|
349
+ snippet = <<~TEST.strip
350
+ expected = hash_including(city: "Hill Valley")
351
+ actual = { city: "Burbank" }
352
+ expect(actual).to match(expected)
353
+ TEST
354
+ program = make_plain_test_program(
355
+ snippet,
356
+ color_enabled: color_enabled,
357
+ )
358
+
359
+ expected_output = build_expected_output(
360
+ color_enabled: color_enabled,
361
+ snippet: %|expect(actual).to match(expected)|,
362
+ expectation: proc {
363
+ line do
364
+ plain %|Expected |
365
+ actual %|{ city: "Burbank" }|
366
+ plain %| to match |
367
+ expected %|#<a hash including (city: "Hill Valley")>|
368
+ plain %|.|
369
+ end
370
+ },
371
+ diff: proc {
372
+ plain_line %| {|
373
+ expected_line %|- city: "Hill Valley"|
374
+ actual_line %|+ city: "Burbank"|
375
+ plain_line %| }|
376
+ },
377
+ )
378
+
379
+ expect(program).
380
+ to produce_output_when_run(expected_output).
381
+ in_color(color_enabled)
382
+ end
383
+ end
384
+ end
385
+
344
386
  context "when the expected value is a collection-including-<something>" do
345
387
  context "that is small" do
346
388
  it "produces the correct failure message when used in the positive" do
@@ -647,6 +689,47 @@ RSpec.describe "Integration with RSpec's #match matcher", type: :integration do
647
689
  end
648
690
  end
649
691
 
692
+ context "when the expected value is an array-including-<something>" do
693
+ it "produces the correct failure message" do
694
+ as_both_colored_and_uncolored do |color_enabled|
695
+ snippet = <<~TEST.strip
696
+ expected = array_including("a")
697
+ actual = ["b"]
698
+ expect(actual).to match(expected)
699
+ TEST
700
+ program = make_plain_test_program(
701
+ snippet,
702
+ color_enabled: color_enabled,
703
+ )
704
+
705
+ expected_output = build_expected_output(
706
+ color_enabled: color_enabled,
707
+ snippet: %|expect(actual).to match(expected)|,
708
+ expectation: proc {
709
+ line do
710
+ plain %|Expected |
711
+ actual %|["b"]|
712
+ plain %| to match |
713
+ expected %|#<a collection including ("a")>|
714
+ plain %|.|
715
+ end
716
+ },
717
+ diff: proc {
718
+ plain_line %| [|
719
+ plain_line %| "b"|
720
+ # expected_line %|- "a",| # FIXME
721
+ expected_line %|- "a"|
722
+ plain_line %| ]|
723
+ },
724
+ )
725
+
726
+ expect(program).
727
+ to produce_output_when_run(expected_output).
728
+ in_color(color_enabled)
729
+ end
730
+ end
731
+ end
732
+
650
733
  context "when the expected value is an object-having-attributes" do
651
734
  context "that is small" do
652
735
  it "produces the correct failure message when used in the positive" do
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require "pp"
2
+
1
3
  begin
2
4
  require "pry-byebug"
3
5
  rescue LoadError
@@ -8,7 +10,7 @@ begin
8
10
  rescue LoadError
9
11
  end
10
12
 
11
- require "pp"
13
+ require "climate_control"
12
14
 
13
15
  #---
14
16
 
@@ -1166,8 +1166,8 @@ RSpec.describe SuperDiff::EqualityMatchers::Main do
1166
1166
  is_translation_enabled: false,
1167
1167
  profile_background_color: "FFF1E0",
1168
1168
  profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png",
1169
- profile_background_tile: false,
1170
1169
  profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592",
1170
+ profile_background_tile: false,
1171
1171
  }
1172
1172
  )
1173
1173
 
@@ -1177,7 +1177,7 @@ RSpec.describe SuperDiff::EqualityMatchers::Main do
1177
1177
  #{
1178
1178
  colored do
1179
1179
  expected_line %(Expected: { created_at: "Tue Jan 13 19:28:24 +0000 2009", favourites_count: 38, geo_enabled: false, verified: true, media_count: 51044, statuses_count: 273860, contributors_enabled: false, profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png", profile_background_color: "FFF1E0", profile_background_tile: false, profile_image_url: "http://pbs.twimg.com/profile_images/931156393108885504/EqEMtLhM_normal.jpg", listed_count: 37009, profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592" })
1180
- actual_line %( Actual: { listed_count: 37009, created_at: "Tue Jan 13 19:28:24 +0000 2009", favourites_count: 38, utc_offset: nil, statuses_count: 273860, media_count: 51044, contributors_enabled: false, is_translator: false, is_translation_enabled: false, profile_background_color: "FFF1E0", profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png", profile_background_tile: false, profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592" })
1180
+ actual_line %( Actual: { listed_count: 37009, created_at: "Tue Jan 13 19:28:24 +0000 2009", favourites_count: 38, utc_offset: nil, statuses_count: 273860, media_count: 51044, contributors_enabled: false, is_translator: false, is_translation_enabled: false, profile_background_color: "FFF1E0", profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png", profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592", profile_background_tile: false })
1181
1181
  end
1182
1182
  }
1183
1183
 
@@ -1199,9 +1199,9 @@ RSpec.describe SuperDiff::EqualityMatchers::Main do
1199
1199
  actual_line %(+ is_translation_enabled: false,)
1200
1200
  plain_line %( profile_background_color: "FFF1E0",)
1201
1201
  plain_line %( profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png",)
1202
- plain_line %( profile_background_tile: false,)
1203
1202
  expected_line %(- profile_image_url: "http://pbs.twimg.com/profile_images/931156393108885504/EqEMtLhM_normal.jpg",)
1204
- plain_line %( profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592")
1203
+ plain_line %( profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592",)
1204
+ plain_line %( profile_background_tile: false)
1205
1205
  plain_line %( })
1206
1206
  end
1207
1207
  }
@@ -430,6 +430,84 @@ RSpec.describe SuperDiff do
430
430
  end
431
431
  end
432
432
 
433
+ context "given a Time object" do
434
+ context "that does not have an associated time zone" do
435
+ context "given as_single_line: true" do
436
+ it "returns a representation of the time on a single line" do
437
+ inspection = described_class.inspect_object(
438
+ Time.new(2021, 5, 5, 10, 23, 28.1234567891, "-05:00"),
439
+ as_single_line: true,
440
+ )
441
+ expect(inspection).to eq(
442
+ "#<Time 2021-05-05 10:23:28+(34749996836695/281474976710656) -05:00>"
443
+ )
444
+ end
445
+ end
446
+
447
+ context "given as_single_line: false" do
448
+ it "returns a representation of the time across multiple lines" do
449
+ inspection = described_class.inspect_object(
450
+ Time.new(2021, 5, 5, 10, 23, 28.1234567891, "-05:00"),
451
+ as_single_line: false,
452
+ )
453
+ expect(inspection).to eq(<<~INSPECTION.rstrip)
454
+ #<Time {
455
+ year: 2021,
456
+ month: 5,
457
+ day: 5,
458
+ hour: 10,
459
+ min: 23,
460
+ sec: 28,
461
+ subsec: (34749996836695/281474976710656),
462
+ zone: nil,
463
+ utc_offset: -18000
464
+ }>
465
+ INSPECTION
466
+ end
467
+ end
468
+ end
469
+
470
+ context "that has an associated time zone" do
471
+ around do |example|
472
+ ClimateControl.modify(TZ: 'America/Chicago', &example)
473
+ end
474
+
475
+ context "given as_single_line: true" do
476
+ it "returns a representation of the time on a single line" do
477
+ inspection = described_class.inspect_object(
478
+ Time.new(2021, 5, 5, 10, 23, 28.1234567891),
479
+ as_single_line: true,
480
+ )
481
+ expect(inspection).to eq(
482
+ "#<Time 2021-05-05 10:23:28+(34749996836695/281474976710656) -05:00 (CDT)>"
483
+ )
484
+ end
485
+ end
486
+
487
+ context "given as_single_line: false" do
488
+ it "returns a representation of the time across multiple lines" do
489
+ inspection = described_class.inspect_object(
490
+ Time.new(2021, 5, 5, 10, 23, 28.1234567891),
491
+ as_single_line: false,
492
+ )
493
+ expect(inspection).to eq(<<~INSPECTION.rstrip)
494
+ #<Time {
495
+ year: 2021,
496
+ month: 5,
497
+ day: 5,
498
+ hour: 10,
499
+ min: 23,
500
+ sec: 28,
501
+ subsec: (34749996836695/281474976710656),
502
+ zone: "CDT",
503
+ utc_offset: -18000
504
+ }>
505
+ INSPECTION
506
+ end
507
+ end
508
+ end
509
+ end
510
+
433
511
  context "given a class" do
434
512
  context "given as_single_line: true" do
435
513
  it "returns a representation of the object on a single line" do
@@ -842,21 +920,31 @@ RSpec.describe SuperDiff do
842
920
  )
843
921
 
844
922
  expect(inspection).to eq(
845
- %(#<a value within 1 of 2020-04-09 00:00:00.000 UTC +00:00 (Time)>),
923
+ %(#<a value within 1 of #<Time 2020-04-09 00:00:00 +00:00 (UTC)>>),
846
924
  )
847
925
  end
848
926
  end
849
927
 
850
928
  context "given as_single_line: false" do
851
- it "returns a representation of the object on a single line" do
929
+ it "returns a representation of the object across multiple lines" do
852
930
  inspection = described_class.inspect_object(
853
931
  a_value_within(1).of(Time.utc(2020, 4, 9)),
854
932
  as_single_line: false,
855
933
  )
856
934
 
857
- expect(inspection).to eq(
858
- %(#<a value within 1 of 2020-04-09 00:00:00.000 UTC +00:00 (Time)>),
859
- )
935
+ expect(inspection).to eq(<<~INSPECTION.rstrip)
936
+ #<a value within 1 of #<Time {
937
+ year: 2020,
938
+ month: 4,
939
+ day: 9,
940
+ hour: 0,
941
+ min: 0,
942
+ sec: 0,
943
+ subsec: 0,
944
+ zone: "UTC",
945
+ utc_offset: 0
946
+ }>>
947
+ INSPECTION
860
948
  end
861
949
  end
862
950
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: super_diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elliot Winkler
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-17 00:00:00.000000000 Z
11
+ date: 2021-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: attr_extras
@@ -223,7 +223,6 @@ files:
223
223
  - lib/super_diff/rspec/operation_tree_builders/hash_including.rb
224
224
  - lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb
225
225
  - lib/super_diff/version.rb
226
- - spec/combustion/Gemfile.lock
227
226
  - spec/examples.txt
228
227
  - spec/integration/rails/active_record_spec.rb
229
228
  - spec/integration/rails/hash_with_indifferent_access_spec.rb
@@ -291,7 +290,7 @@ homepage: https://github.com/mcmire/super_diff
291
290
  licenses:
292
291
  - MIT
293
292
  metadata: {}
294
- post_install_message:
293
+ post_install_message:
295
294
  rdoc_options: []
296
295
  require_paths:
297
296
  - lib
@@ -309,8 +308,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
309
308
  - !ruby/object:Gem::Version
310
309
  version: '0'
311
310
  requirements: []
312
- rubygems_version: 3.1.2
313
- signing_key:
311
+ rubyforge_project:
312
+ rubygems_version: 2.7.6.3
313
+ signing_key:
314
314
  specification_version: 4
315
315
  summary: A better way to view differences between complex data structures in RSpec.
316
316
  test_files:
@@ -376,4 +376,3 @@ test_files:
376
376
  - spec/support/colorizer.rb
377
377
  - spec/support/shared_examples/hash_with_indifferent_access.rb
378
378
  - spec/support/shared_examples/active_record.rb
379
- - spec/combustion/Gemfile.lock
@@ -1,173 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- actioncable (6.1.2.1)
5
- actionpack (= 6.1.2.1)
6
- activesupport (= 6.1.2.1)
7
- nio4r (~> 2.0)
8
- websocket-driver (>= 0.6.1)
9
- actionmailbox (6.1.2.1)
10
- actionpack (= 6.1.2.1)
11
- activejob (= 6.1.2.1)
12
- activerecord (= 6.1.2.1)
13
- activestorage (= 6.1.2.1)
14
- activesupport (= 6.1.2.1)
15
- mail (>= 2.7.1)
16
- actionmailer (6.1.2.1)
17
- actionpack (= 6.1.2.1)
18
- actionview (= 6.1.2.1)
19
- activejob (= 6.1.2.1)
20
- activesupport (= 6.1.2.1)
21
- mail (~> 2.5, >= 2.5.4)
22
- rails-dom-testing (~> 2.0)
23
- actionpack (6.1.2.1)
24
- actionview (= 6.1.2.1)
25
- activesupport (= 6.1.2.1)
26
- rack (~> 2.0, >= 2.0.9)
27
- rack-test (>= 0.6.3)
28
- rails-dom-testing (~> 2.0)
29
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
30
- actiontext (6.1.2.1)
31
- actionpack (= 6.1.2.1)
32
- activerecord (= 6.1.2.1)
33
- activestorage (= 6.1.2.1)
34
- activesupport (= 6.1.2.1)
35
- nokogiri (>= 1.8.5)
36
- actionview (6.1.2.1)
37
- activesupport (= 6.1.2.1)
38
- builder (~> 3.1)
39
- erubi (~> 1.4)
40
- rails-dom-testing (~> 2.0)
41
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
42
- activejob (6.1.2.1)
43
- activesupport (= 6.1.2.1)
44
- globalid (>= 0.3.6)
45
- activemodel (6.1.2.1)
46
- activesupport (= 6.1.2.1)
47
- activerecord (6.1.2.1)
48
- activemodel (= 6.1.2.1)
49
- activesupport (= 6.1.2.1)
50
- activestorage (6.1.2.1)
51
- actionpack (= 6.1.2.1)
52
- activejob (= 6.1.2.1)
53
- activerecord (= 6.1.2.1)
54
- activesupport (= 6.1.2.1)
55
- marcel (~> 0.3.1)
56
- mimemagic (~> 0.3.2)
57
- activesupport (6.1.2.1)
58
- concurrent-ruby (~> 1.0, >= 1.0.2)
59
- i18n (>= 1.6, < 2)
60
- minitest (>= 5.1)
61
- tzinfo (~> 2.0)
62
- zeitwerk (~> 2.3)
63
- attr_extras (6.2.4)
64
- builder (3.2.4)
65
- combustion (1.3.1)
66
- activesupport (>= 3.0.0)
67
- railties (>= 3.0.0)
68
- thor (>= 0.14.6)
69
- concurrent-ruby (1.1.8)
70
- crass (1.0.6)
71
- diff-lcs (1.4.4)
72
- erubi (1.10.0)
73
- globalid (0.4.2)
74
- activesupport (>= 4.2.0)
75
- i18n (1.8.8)
76
- concurrent-ruby (~> 1.0)
77
- loofah (2.9.0)
78
- crass (~> 1.0.2)
79
- nokogiri (>= 1.5.9)
80
- mail (2.7.1)
81
- mini_mime (>= 0.1.1)
82
- marcel (0.3.3)
83
- mimemagic (~> 0.3.2)
84
- method_source (1.0.0)
85
- mimemagic (0.3.5)
86
- mini_mime (1.0.2)
87
- mini_portile2 (2.5.0)
88
- minitest (5.14.3)
89
- nio4r (2.5.5)
90
- nokogiri (1.11.1)
91
- mini_portile2 (~> 2.5.0)
92
- racc (~> 1.4)
93
- patience_diff (1.1.0)
94
- trollop (~> 1.16)
95
- racc (1.5.2)
96
- rack (2.2.3)
97
- rack-test (1.1.0)
98
- rack (>= 1.0, < 3)
99
- rails (6.1.2.1)
100
- actioncable (= 6.1.2.1)
101
- actionmailbox (= 6.1.2.1)
102
- actionmailer (= 6.1.2.1)
103
- actionpack (= 6.1.2.1)
104
- actiontext (= 6.1.2.1)
105
- actionview (= 6.1.2.1)
106
- activejob (= 6.1.2.1)
107
- activemodel (= 6.1.2.1)
108
- activerecord (= 6.1.2.1)
109
- activestorage (= 6.1.2.1)
110
- activesupport (= 6.1.2.1)
111
- bundler (>= 1.15.0)
112
- railties (= 6.1.2.1)
113
- sprockets-rails (>= 2.0.0)
114
- rails-dom-testing (2.0.3)
115
- activesupport (>= 4.2.0)
116
- nokogiri (>= 1.6)
117
- rails-html-sanitizer (1.3.0)
118
- loofah (~> 2.3)
119
- railties (6.1.2.1)
120
- actionpack (= 6.1.2.1)
121
- activesupport (= 6.1.2.1)
122
- method_source
123
- rake (>= 0.8.7)
124
- thor (~> 1.0)
125
- rake (13.0.3)
126
- rspec-core (3.10.1)
127
- rspec-support (~> 3.10.0)
128
- rspec-expectations (3.10.1)
129
- diff-lcs (>= 1.2.0, < 2.0)
130
- rspec-support (~> 3.10.0)
131
- rspec-mocks (3.10.2)
132
- diff-lcs (>= 1.2.0, < 2.0)
133
- rspec-support (~> 3.10.0)
134
- rspec-rails (4.0.2)
135
- actionpack (>= 4.2)
136
- activesupport (>= 4.2)
137
- railties (>= 4.2)
138
- rspec-core (~> 3.10)
139
- rspec-expectations (~> 3.10)
140
- rspec-mocks (~> 3.10)
141
- rspec-support (~> 3.10)
142
- rspec-support (3.10.2)
143
- sprockets (4.0.2)
144
- concurrent-ruby (~> 1.0)
145
- rack (> 1, < 3)
146
- sprockets-rails (3.2.2)
147
- actionpack (>= 4.0)
148
- activesupport (>= 4.0)
149
- sprockets (>= 3.0.0)
150
- super_diff (0.5.3)
151
- attr_extras (>= 6.2.4)
152
- diff-lcs
153
- patience_diff
154
- thor (1.1.0)
155
- trollop (1.16.2)
156
- tzinfo (2.0.4)
157
- concurrent-ruby (~> 1.0)
158
- websocket-driver (0.7.3)
159
- websocket-extensions (>= 0.1.0)
160
- websocket-extensions (0.1.5)
161
- zeitwerk (2.4.2)
162
-
163
- PLATFORMS
164
- ruby
165
-
166
- DEPENDENCIES
167
- combustion
168
- rails
169
- rspec-rails
170
- super_diff (= 0.5.3)
171
-
172
- BUNDLED WITH
173
- 2.1.4