amazing_print 1.4.0 → 1.6.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/Appraisals +16 -0
- data/CHANGELOG.md +56 -33
- data/Gemfile +12 -0
- data/Gemfile.lock +61 -44
- data/README.md +3 -4
- data/lib/amazing_print/colorize.rb +5 -12
- data/lib/amazing_print/colors.rb +37 -0
- data/lib/amazing_print/core_ext/awesome_method_array.rb +1 -1
- data/lib/amazing_print/custom_defaults.rb +7 -1
- data/lib/amazing_print/ext/mongoid.rb +14 -2
- data/lib/amazing_print/ext_loader.rb +27 -0
- data/lib/amazing_print/formatters/array_formatter.rb +1 -1
- data/lib/amazing_print/formatters/base_formatter.rb +8 -3
- data/lib/amazing_print/formatters/dir_formatter.rb +10 -1
- data/lib/amazing_print/formatters/file_formatter.rb +10 -1
- data/lib/amazing_print/formatters/hash_formatter.rb +3 -5
- data/lib/amazing_print/formatters/mswin_helper.rb +63 -0
- data/lib/amazing_print/inspector.rb +6 -3
- data/lib/amazing_print/version.rb +1 -1
- data/lib/amazing_print.rb +3 -9
- data/spec/colors_spec.rb +9 -4
- data/spec/ext/action_controller_spec.rb +3 -3
- data/spec/ext/active_record_spec.rb +30 -60
- data/spec/ext/active_support_spec.rb +2 -2
- data/spec/ext/mongoid_spec.rb +110 -47
- data/spec/ext/nokogiri_spec.rb +6 -6
- data/spec/ext/sequel_spec.rb +1 -1
- data/spec/formats_spec.rb +97 -89
- data/spec/misc_spec.rb +15 -61
- data/spec/spec_helper.rb +7 -1
- data/spec/support/active_record_data/7_0_diana.txt +110 -0
- data/spec/support/active_record_data/7_0_multi.txt +222 -0
- data/spec/support/rails_versions.rb +5 -0
- metadata +13 -156
- data/lib/amazing_print/core_ext/string.rb +0 -45
- data/spec/core_ext/string_spec.rb +0 -15
data/spec/formats_spec.rb
CHANGED
@@ -93,7 +93,7 @@ RSpec.describe 'AmazingPrint' do
|
|
93
93
|
[
|
94
94
|
\e[1;37m[0] \e[0m\e[1;34m1\e[0m,
|
95
95
|
\e[1;37m[1] \e[0m\e[0;36m:two\e[0m,
|
96
|
-
\e[1;37m[2] \e[0m\e[0;33m
|
96
|
+
\e[1;37m[2] \e[0m\e[0;33m"three"\e[0m,
|
97
97
|
\e[1;37m[3] \e[0m[
|
98
98
|
\e[1;37m[0] \e[0m\e[1;31mnil\e[0m,
|
99
99
|
\e[1;37m[1] \e[0m[
|
@@ -110,7 +110,7 @@ RSpec.describe 'AmazingPrint' do
|
|
110
110
|
[
|
111
111
|
\e[1;37m[0] \e[0m\e[1;34m1\e[0m,
|
112
112
|
\e[1;37m[1] \e[0m\e[0;36m:two\e[0m,
|
113
|
-
\e[1;37m[2] \e[0m\e[0;33m
|
113
|
+
\e[1;37m[2] \e[0m\e[0;33m"three"\e[0m,
|
114
114
|
\e[1;37m[3] \e[0m[
|
115
115
|
\e[1;37m[0] \e[0m\e[1;31mnil\e[0m,
|
116
116
|
\e[1;37m[1] \e[0m[
|
@@ -314,11 +314,11 @@ RSpec.describe 'AmazingPrint' do
|
|
314
314
|
it 'colored multiline (default)' do
|
315
315
|
expect(@hash.ai).to eq <<~EOS.strip
|
316
316
|
{
|
317
|
-
1\e[0;37m => \e[0m{
|
318
|
-
:sym\e[0;37m => \e[0m{
|
319
|
-
\"str
|
320
|
-
[ 1,
|
321
|
-
{ :k => :v }\e[0;37m => \e[0m\e[1;33mHash < Object\e[0m
|
317
|
+
\e[1;34m1\e[0m\e[0;37m => \e[0m{
|
318
|
+
\e[0;36m:sym\e[0m\e[0;37m => \e[0m{
|
319
|
+
\e[0;33m"str"\e[0m\e[0;37m => \e[0m{
|
320
|
+
[ \e[1;34m1\e[0m, \e[1;34m2\e[0m, \e[1;34m3\e[0m ]\e[0;37m => \e[0m{
|
321
|
+
{ \e[0;36m:k\e[0m\e[0;37m => \e[0m\e[0;36m:v\e[0m }\e[0;37m => \e[0m\e[1;33mHash < Object\e[0m
|
322
322
|
}
|
323
323
|
}
|
324
324
|
}
|
@@ -330,11 +330,11 @@ RSpec.describe 'AmazingPrint' do
|
|
330
330
|
it 'colored with new hash syntax' do
|
331
331
|
expect(@hash.ai(ruby19_syntax: true)).to eq <<~EOS.strip
|
332
332
|
{
|
333
|
-
1\e[0;37m => \e[0m{
|
334
|
-
sym\e[0;37m
|
335
|
-
\"str
|
336
|
-
[ 1,
|
337
|
-
{ k
|
333
|
+
\e[1;34m1\e[0m\e[0;37m => \e[0m{
|
334
|
+
\e[0;36m:sym\e[0m\e[0;37m => \e[0m{
|
335
|
+
\e[0;33m"str"\e[0m\e[0;37m => \e[0m{
|
336
|
+
[ \e[1;34m1\e[0m, \e[1;34m2\e[0m, \e[1;34m3\e[0m ]\e[0;37m => \e[0m{
|
337
|
+
{ \e[0;36m:k\e[0m\e[0;37m => \e[0m\e[0;36m:v\e[0m }\e[0;37m => \e[0m\e[1;33mHash < Object\e[0m
|
338
338
|
}
|
339
339
|
}
|
340
340
|
}
|
@@ -346,11 +346,11 @@ RSpec.describe 'AmazingPrint' do
|
|
346
346
|
it 'colored multiline indented' do
|
347
347
|
expect(@hash.ai(indent: 2)).to eq <<~EOS.strip
|
348
348
|
{
|
349
|
-
1\e[0;37m => \e[0m{
|
350
|
-
:sym\e[0;37m => \e[0m{
|
351
|
-
\"str
|
352
|
-
[ 1,
|
353
|
-
{ :k => :v }\e[0;37m => \e[0m\e[1;33mHash < Object\e[0m
|
349
|
+
\e[1;34m1\e[0m\e[0;37m => \e[0m{
|
350
|
+
\e[0;36m:sym\e[0m\e[0;37m => \e[0m{
|
351
|
+
\e[0;33m"str"\e[0m\e[0;37m => \e[0m{
|
352
|
+
[ \e[1;34m1\e[0m, \e[1;34m2\e[0m, \e[1;34m3\e[0m ]\e[0;37m => \e[0m{
|
353
|
+
{ \e[0;36m:k\e[0m\e[0;37m => \e[0m\e[0;36m:v\e[0m }\e[0;37m => \e[0m\e[1;33mHash < Object\e[0m
|
354
354
|
}
|
355
355
|
}
|
356
356
|
}
|
@@ -360,7 +360,10 @@ RSpec.describe 'AmazingPrint' do
|
|
360
360
|
end
|
361
361
|
|
362
362
|
it 'colored single line' do
|
363
|
-
|
363
|
+
puts @hash.ai(multiline: false)
|
364
|
+
expect(@hash.ai(multiline: false)).to eq(
|
365
|
+
"{ \e[1;34m1\e[0m\e[0;37m => \e[0m{ \e[0;36m:sym\e[0m\e[0;37m => \e[0m{ \e[0;33m\"str\"\e[0m\e[0;37m => \e[0m{ [ \e[1;34m1\e[0m, \e[1;34m2\e[0m, \e[1;34m3\e[0m ]\e[0;37m => \e[0m{ { \e[0;36m:k\e[0m\e[0;37m => \e[0m\e[0;36m:v\e[0m }\e[0;37m => \e[0m\e[1;33mHash < Object\e[0m } } } } }" # rubocop:disable Layout/LineLength
|
366
|
+
)
|
364
367
|
end
|
365
368
|
end
|
366
369
|
|
@@ -392,22 +395,14 @@ RSpec.describe 'AmazingPrint' do
|
|
392
395
|
|
393
396
|
it 'plain multiline' do
|
394
397
|
out = @hash.ai(plain: true)
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
{
|
404
|
-
"b" => "b",
|
405
|
-
:a => "a",
|
406
|
-
:z => "z",
|
407
|
-
"alpha" => "alpha"
|
408
|
-
}
|
409
|
-
EOS
|
410
|
-
end
|
398
|
+
expect(out).to eq <<~EOS.strip
|
399
|
+
{
|
400
|
+
"b" => "b",
|
401
|
+
:a => "a",
|
402
|
+
:z => "z",
|
403
|
+
"alpha" => "alpha"
|
404
|
+
}
|
405
|
+
EOS
|
411
406
|
end
|
412
407
|
|
413
408
|
it 'plain multiline with sorted keys' do
|
@@ -479,6 +474,21 @@ RSpec.describe 'AmazingPrint' do
|
|
479
474
|
end
|
480
475
|
end
|
481
476
|
|
477
|
+
#
|
478
|
+
# With Ruby 1.9 syntax
|
479
|
+
#
|
480
|
+
it 'hash keys must be left aligned' do
|
481
|
+
hash = { [0, 0, 255] => :yellow, :bloodiest_red => 'rgb(255, 0, 0)', 'magenta' => 'rgb(255, 0, 255)' }
|
482
|
+
out = hash.ai(plain: true, indent: -2, ruby19_syntax: true, sort_keys: true)
|
483
|
+
expect(out).to eq <<~EOS.strip
|
484
|
+
{
|
485
|
+
[ 0, 0, 255 ] => :yellow,
|
486
|
+
bloodiest_red: "rgb(255, 0, 0)",
|
487
|
+
"magenta" => "rgb(255, 0, 255)"
|
488
|
+
}
|
489
|
+
EOS
|
490
|
+
end
|
491
|
+
|
482
492
|
#------------------------------------------------------------------------------
|
483
493
|
describe 'Class' do
|
484
494
|
it 'shows superclass (plain)' do
|
@@ -486,26 +496,38 @@ RSpec.describe 'AmazingPrint' do
|
|
486
496
|
end
|
487
497
|
|
488
498
|
it 'shows superclass (color)' do
|
489
|
-
expect(self.class.ai).to eq("#{self.class} < #{self.class.superclass}"
|
499
|
+
expect(self.class.ai).to eq(AmazingPrint::Colors.yellow("#{self.class} < #{self.class.superclass}"))
|
490
500
|
end
|
491
501
|
end
|
492
502
|
|
493
503
|
#------------------------------------------------------------------------------
|
494
504
|
describe 'File' do
|
495
|
-
it 'displays a file (plain)' do
|
505
|
+
it 'displays a file (plain)', :unix do
|
496
506
|
File.open(__FILE__, 'r') do |f|
|
497
507
|
expect(f.ai(plain: true)).to eq("#{f.inspect}\n" + `ls -alF #{f.path}`.chop)
|
498
508
|
end
|
499
509
|
end
|
510
|
+
|
511
|
+
it 'displays a file (plain) akin to powershell Get-ChildItem', :mswin do
|
512
|
+
File.open(__FILE__, 'r') do |f|
|
513
|
+
expect(f.ai(plain: true)).to eq("#{f.inspect}\n" + AmazingPrint::Formatters::GetChildItem.new(f.path).to_s)
|
514
|
+
end
|
515
|
+
end
|
500
516
|
end
|
501
517
|
|
502
518
|
#------------------------------------------------------------------------------
|
503
519
|
describe 'Dir' do
|
504
|
-
it 'displays a direcory (plain)' do
|
520
|
+
it 'displays a direcory (plain)', :unix do
|
505
521
|
Dir.open(File.dirname(__FILE__)) do |d|
|
506
522
|
expect(d.ai(plain: true)).to eq("#{d.inspect}\n" + `ls -alF #{d.path}`.chop)
|
507
523
|
end
|
508
524
|
end
|
525
|
+
|
526
|
+
it 'displays a directory (plain) akin to powershell Get-ChildItem', :mswin do
|
527
|
+
Dir.open(File.dirname(__FILE__)) do |d|
|
528
|
+
expect(d.ai(plain: true)).to eq("#{d.inspect}\n" + AmazingPrint::Formatters::GetChildItem.new(d.path).to_s)
|
529
|
+
end
|
530
|
+
end
|
509
531
|
end
|
510
532
|
|
511
533
|
#------------------------------------------------------------------------------
|
@@ -518,16 +540,7 @@ RSpec.describe 'AmazingPrint' do
|
|
518
540
|
it 'presents Rational object with arbitrary precision' do
|
519
541
|
rat = Rational(201_020_102_010_201_020_102_010_201_020_102_010, 2)
|
520
542
|
out = rat.ai(plain: true)
|
521
|
-
|
522
|
-
# Ruby 1.9 slightly changed the format of Rational#to_s, see
|
523
|
-
# http://techtime.getharvest.com/blog/harvest-is-now-on-ruby-1-dot-9-3 and
|
524
|
-
# http://www.ruby-forum.com/topic/189397
|
525
|
-
#
|
526
|
-
if RUBY_VERSION < '1.9'
|
527
|
-
expect(out).to eq('100510051005100510051005100510051005')
|
528
|
-
else
|
529
|
-
expect(out).to eq('100510051005100510051005100510051005/1')
|
530
|
-
end
|
543
|
+
expect(out).to eq('100510051005100510051005100510051005/1')
|
531
544
|
end
|
532
545
|
end
|
533
546
|
|
@@ -553,39 +566,20 @@ RSpec.describe 'AmazingPrint' do
|
|
553
566
|
expect(Set.new.ai).to eq([].ai)
|
554
567
|
end
|
555
568
|
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
end
|
560
|
-
|
561
|
-
it 'plain multiline indented' do
|
562
|
-
expect(@set.ai(plain: true, indent: 1)).to eq(@arr.ai(plain: true, indent: 1))
|
563
|
-
end
|
564
|
-
|
565
|
-
it 'plain single line' do
|
566
|
-
expect(@set.ai(plain: true, multiline: false)).to eq(@arr.ai(plain: true, multiline: false))
|
567
|
-
end
|
568
|
-
|
569
|
-
it 'colored multiline (default)' do
|
570
|
-
expect(@set.ai).to eq(@arr.ai)
|
571
|
-
end
|
572
|
-
else # Prior to Ruby 1.9 the order of set values is unpredicatble.
|
573
|
-
it 'plain multiline' do
|
574
|
-
expect(@set.sort_by(&:to_s).ai(plain: true)).to eq(@arr.sort_by(&:to_s).ai(plain: true))
|
575
|
-
end
|
569
|
+
it 'plain multiline' do
|
570
|
+
expect(@set.ai(plain: true)).to eq(@arr.ai(plain: true))
|
571
|
+
end
|
576
572
|
|
577
|
-
|
578
|
-
|
579
|
-
|
573
|
+
it 'plain multiline indented' do
|
574
|
+
expect(@set.ai(plain: true, indent: 1)).to eq(@arr.ai(plain: true, indent: 1))
|
575
|
+
end
|
580
576
|
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
end
|
577
|
+
it 'plain single line' do
|
578
|
+
expect(@set.ai(plain: true, multiline: false)).to eq(@arr.ai(plain: true, multiline: false))
|
579
|
+
end
|
585
580
|
|
586
|
-
|
587
|
-
|
588
|
-
end
|
581
|
+
it 'colored multiline (default)' do
|
582
|
+
expect(@set.ai).to eq(@arr.ai)
|
589
583
|
end
|
590
584
|
end
|
591
585
|
|
@@ -607,12 +601,12 @@ RSpec.describe 'AmazingPrint' do
|
|
607
601
|
|
608
602
|
it 'plain multiline' do
|
609
603
|
s1 = <<-EOS.strip
|
610
|
-
address =
|
611
|
-
name =
|
604
|
+
address = "1313 Mockingbird Lane",
|
605
|
+
name = "Herman Munster"
|
612
606
|
EOS
|
613
607
|
s2 = <<-EOS.strip
|
614
|
-
name =
|
615
|
-
address =
|
608
|
+
name = "Herman Munster",
|
609
|
+
address = "1313 Mockingbird Lane"
|
616
610
|
EOS
|
617
611
|
expect(@struct.ai(plain: true)).to satisfy { |out| out.match(s1) || out.match(s2) }
|
618
612
|
end
|
@@ -637,12 +631,12 @@ RSpec.describe 'AmazingPrint' do
|
|
637
631
|
|
638
632
|
it 'colored multiline (default)' do
|
639
633
|
s1 = <<-EOS.strip
|
640
|
-
address\e[0;37m = \e[0m\e[0;33m
|
641
|
-
name\e[0;37m = \e[0m\e[0;33m
|
634
|
+
address\e[0;37m = \e[0m\e[0;33m"1313 Mockingbird Lane"\e[0m,
|
635
|
+
name\e[0;37m = \e[0m\e[0;33m"Herman Munster"\e[0m
|
642
636
|
EOS
|
643
637
|
s2 = <<-EOS.strip
|
644
|
-
name\e[0;37m = \e[0m\e[0;33m
|
645
|
-
address\e[0;37m = \e[0m\e[0;33m
|
638
|
+
name\e[0;37m = \e[0m\e[0;33m"Herman Munster"\e[0m,
|
639
|
+
address\e[0;37m = \e[0m\e[0;33m"1313 Mockingbird Lane"\e[0m
|
646
640
|
EOS
|
647
641
|
expect(@struct.ai).to satisfy { |out| out.include?(s1) || out.include?(s2) }
|
648
642
|
end
|
@@ -693,7 +687,7 @@ RSpec.describe 'AmazingPrint' do
|
|
693
687
|
EOS
|
694
688
|
end
|
695
689
|
|
696
|
-
it 'inherited from File should be displayed as File' do
|
690
|
+
it 'inherited from File should be displayed as File', :unix do
|
697
691
|
class My < File; end
|
698
692
|
|
699
693
|
my = begin
|
@@ -704,7 +698,13 @@ RSpec.describe 'AmazingPrint' do
|
|
704
698
|
expect(my.ai(plain: true)).to eq("#{my.inspect}\n" + `ls -alF #{my.path}`.chop)
|
705
699
|
end
|
706
700
|
|
707
|
-
it 'inherited from
|
701
|
+
it 'inherited from File should be displayed as File', :mswin do
|
702
|
+
class My < File; end
|
703
|
+
my = My.new('nul') # it's /dev/null in Windows
|
704
|
+
expect(my.ai(plain: true)).to eq("#{my.inspect}\n" + AmazingPrint::Formatters::GetChildItem.new(my.path).to_s)
|
705
|
+
end
|
706
|
+
|
707
|
+
it 'inherited from Dir should be displayed as Dir', :unix do
|
708
708
|
class My < Dir; end
|
709
709
|
|
710
710
|
require 'tmpdir'
|
@@ -712,6 +712,14 @@ RSpec.describe 'AmazingPrint' do
|
|
712
712
|
expect(my.ai(plain: true)).to eq("#{my.inspect}\n" + `ls -alF #{my.path}`.chop)
|
713
713
|
end
|
714
714
|
|
715
|
+
it 'inherited from Dir are displayed as Dir', :mswin do
|
716
|
+
class My < Dir; end
|
717
|
+
|
718
|
+
require 'tmpdir'
|
719
|
+
my = My.new(Dir.tmpdir)
|
720
|
+
expect(my.ai(plain: true)).to eq("#{my.inspect}\n" + AmazingPrint::Formatters::GetChildItem.new(my.path).to_s)
|
721
|
+
end
|
722
|
+
|
715
723
|
it 'handles a class that defines its own #send method' do
|
716
724
|
class My
|
717
725
|
def send(arg1, arg2, arg3); end
|
@@ -757,7 +765,7 @@ RSpec.describe 'AmazingPrint' do
|
|
757
765
|
class My
|
758
766
|
def to_hash
|
759
767
|
object = Object.new
|
760
|
-
object.define_singleton_method('[]') {
|
768
|
+
object.define_singleton_method('[]') { nil }
|
761
769
|
|
762
770
|
object
|
763
771
|
end
|
@@ -771,7 +779,7 @@ RSpec.describe 'AmazingPrint' do
|
|
771
779
|
class My
|
772
780
|
def to_hash
|
773
781
|
object = Object.new
|
774
|
-
object.define_singleton_method(:keys) {
|
782
|
+
object.define_singleton_method(:keys) { [:foo] }
|
775
783
|
|
776
784
|
object
|
777
785
|
end
|
data/spec/misc_spec.rb
CHANGED
@@ -32,12 +32,10 @@ RSpec.describe 'AmazingPrint' do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
# See https://github.com/awesome-print/awesome_print/issues/85
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
expect(grepped.ai(plain: true, multiline: false)).to eq('[ 2, 3, 4, 5 ]')
|
40
|
-
end
|
35
|
+
it "handle array grep when a method is defined in C and thus doesn't have a binding" do
|
36
|
+
arr = (0..6).to_a
|
37
|
+
grepped = arr.grep(1..4, &:succ)
|
38
|
+
expect(grepped.ai(plain: true, multiline: false)).to eq('[ 2, 3, 4, 5 ]')
|
41
39
|
end
|
42
40
|
|
43
41
|
it 'returns value passed as a parameter' do
|
@@ -105,7 +103,7 @@ RSpec.describe 'AmazingPrint' do
|
|
105
103
|
expect(markup.ai(html: true)).to eq <<~EOS.strip
|
106
104
|
<pre>[
|
107
105
|
<kbd style="color:white">[0] </kbd>{
|
108
|
-
|
106
|
+
<kbd style="color:brown">"hello"</kbd><kbd style="color:slategray"> => </kbd><kbd style="color:brown">"world"</kbd>
|
109
107
|
}
|
110
108
|
]</pre>
|
111
109
|
EOS
|
@@ -143,65 +141,21 @@ RSpec.describe 'AmazingPrint' do
|
|
143
141
|
end
|
144
142
|
end
|
145
143
|
|
146
|
-
#------------------------------------------------------------------------------
|
147
|
-
describe 'Coexistence with the colorize gem' do
|
148
|
-
before do # Redefine String#red just like colorize gem does it.
|
149
|
-
@awesome_method = ''.method(:red)
|
150
|
-
|
151
|
-
String.instance_eval do
|
152
|
-
define_method :red do # Method arity is now 0 in Ruby 1.9+.
|
153
|
-
"[red]#{self}[/red]"
|
154
|
-
end
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
after do # Restore String#red method.
|
159
|
-
awesome_method = @awesome_method
|
160
|
-
String.instance_eval do
|
161
|
-
define_method :red, awesome_method
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
it 'shoud not raise ArgumentError when formatting HTML' do
|
166
|
-
out = 'hello'.ai(color: { string: :red }, html: true)
|
167
|
-
if RUBY_VERSION >= '1.9'
|
168
|
-
expect(out).to eq(%(<pre>[red]<kbd style="color:red">"hello"</kbd>[/red]</pre>))
|
169
|
-
else
|
170
|
-
expect(out).to eq(%(<pre>[red]"hello"[/red]</pre>))
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
|
-
it 'shoud not raise ArgumentError when formatting HTML (shade color)' do
|
175
|
-
out = 'hello'.ai(color: { string: :redish }, html: true)
|
176
|
-
expect(out).to eq(%(<pre><kbd style="color:darkred">"hello"</kbd></pre>))
|
177
|
-
end
|
178
|
-
|
179
|
-
it 'shoud not raise ArgumentError when formatting non-HTML' do
|
180
|
-
out = 'hello'.ai(color: { string: :red }, html: false)
|
181
|
-
expect(out).to eq(%([red]"hello"[/red]))
|
182
|
-
end
|
183
|
-
|
184
|
-
it 'shoud not raise ArgumentError when formatting non-HTML (shade color)' do
|
185
|
-
out = 'hello'.ai(color: { string: :redish }, html: false)
|
186
|
-
expect(out).to eq(%(\e[0;31m"hello"\e[0m))
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
144
|
#------------------------------------------------------------------------------
|
191
145
|
describe 'Console' do
|
192
146
|
it 'detects IRB' do
|
193
147
|
class IRB; end
|
194
148
|
ENV.delete('RAILS_ENV')
|
195
|
-
expect(AmazingPrint.console?).to
|
196
|
-
expect(AmazingPrint.rails_console?).to
|
149
|
+
expect(AmazingPrint.console?).to be(true)
|
150
|
+
expect(AmazingPrint.rails_console?).to be(false)
|
197
151
|
Object.instance_eval { remove_const :IRB }
|
198
152
|
end
|
199
153
|
|
200
154
|
it 'detects Pry' do
|
201
155
|
class Pry; end
|
202
156
|
ENV.delete('RAILS_ENV')
|
203
|
-
expect(AmazingPrint.console?).to
|
204
|
-
expect(AmazingPrint.rails_console?).to
|
157
|
+
expect(AmazingPrint.console?).to be(true)
|
158
|
+
expect(AmazingPrint.rails_console?).to be(false)
|
205
159
|
Object.instance_eval { remove_const :Pry }
|
206
160
|
end
|
207
161
|
|
@@ -209,8 +163,8 @@ RSpec.describe 'AmazingPrint' do
|
|
209
163
|
class IRB; end
|
210
164
|
|
211
165
|
module Rails; class Console; end; end
|
212
|
-
expect(AmazingPrint.console?).to
|
213
|
-
expect(AmazingPrint.rails_console?).to
|
166
|
+
expect(AmazingPrint.console?).to be(true)
|
167
|
+
expect(AmazingPrint.rails_console?).to be(true)
|
214
168
|
Object.instance_eval { remove_const :IRB }
|
215
169
|
Object.instance_eval { remove_const :Rails }
|
216
170
|
end
|
@@ -218,8 +172,8 @@ RSpec.describe 'AmazingPrint' do
|
|
218
172
|
it "detects ENV['RAILS_ENV']" do
|
219
173
|
class Pry; end
|
220
174
|
ENV['RAILS_ENV'] = 'development'
|
221
|
-
expect(AmazingPrint.console?).to
|
222
|
-
expect(AmazingPrint.rails_console?).to
|
175
|
+
expect(AmazingPrint.console?).to be(true)
|
176
|
+
expect(AmazingPrint.rails_console?).to be(true)
|
223
177
|
Object.instance_eval { remove_const :Pry }
|
224
178
|
end
|
225
179
|
|
@@ -230,8 +184,8 @@ RSpec.describe 'AmazingPrint' do
|
|
230
184
|
|
231
185
|
it 'returns nil when running under console' do
|
232
186
|
class IRB; end
|
233
|
-
expect(capture! { ap([1, 2, 3]) }).to
|
234
|
-
expect(capture! { ap({ a: 1 }) }).to
|
187
|
+
expect(capture! { ap([1, 2, 3]) }).to be_nil
|
188
|
+
expect(capture! { ap({ a: 1 }) }).to be_nil
|
235
189
|
Object.instance_eval { remove_const :IRB }
|
236
190
|
end
|
237
191
|
|
data/spec/spec_helper.rb
CHANGED
@@ -41,7 +41,7 @@ ExtVerifier.require_dependencies!(
|
|
41
41
|
sequel
|
42
42
|
]
|
43
43
|
)
|
44
|
-
require 'nokogiri'
|
44
|
+
require 'nokogiri' unless RUBY_PLATFORM.include?('mswin')
|
45
45
|
require 'amazing_print'
|
46
46
|
|
47
47
|
RSpec.configure do |config|
|
@@ -66,6 +66,12 @@ RSpec.configure do |config|
|
|
66
66
|
config.before do |_example|
|
67
67
|
stub_dotfile!
|
68
68
|
end
|
69
|
+
|
70
|
+
if RUBY_PLATFORM.include?('mswin')
|
71
|
+
config.filter_run_excluding unix: true
|
72
|
+
else
|
73
|
+
config.filter_run_excluding mswin: true
|
74
|
+
end
|
69
75
|
end
|
70
76
|
|
71
77
|
# This matcher handles the normalization of objects to replace non deterministic
|
@@ -0,0 +1,110 @@
|
|
1
|
+
#<User:placeholder_id
|
2
|
+
@_start_transaction_state = nil,
|
3
|
+
@association_cache = {},
|
4
|
+
@destroyed = false,
|
5
|
+
@marked_for_destruction = false,
|
6
|
+
@new_record = true,
|
7
|
+
@previously_new_record = false,
|
8
|
+
@primary_key = "id",
|
9
|
+
@readonly = false,
|
10
|
+
@strict_loading = false,
|
11
|
+
attr_accessor :attributes = #<ActiveModel::AttributeSet:placeholder_id
|
12
|
+
@attributes = {
|
13
|
+
"admin" => #<ActiveModel::Attribute::FromUser:placeholder_id
|
14
|
+
@original_attribute = #<ActiveModel::Attribute::FromDatabase:placeholder_id
|
15
|
+
@original_attribute = nil,
|
16
|
+
attr_reader :name = "admin",
|
17
|
+
attr_reader :type = #<ActiveModel::Type::Boolean:placeholder_id
|
18
|
+
attr_reader :limit = nil,
|
19
|
+
attr_reader :precision = nil,
|
20
|
+
attr_reader :scale = nil
|
21
|
+
>,
|
22
|
+
attr_reader :value_before_type_cast = nil
|
23
|
+
>,
|
24
|
+
attr_reader :name = "admin",
|
25
|
+
attr_reader :type = #<ActiveModel::Type::Boolean:placeholder_id
|
26
|
+
attr_reader :limit = nil,
|
27
|
+
attr_reader :precision = nil,
|
28
|
+
attr_reader :scale = nil
|
29
|
+
>,
|
30
|
+
attr_reader :value_before_type_cast = false
|
31
|
+
>,
|
32
|
+
"created_at" => #<ActiveModel::Attribute::FromUser:placeholder_id
|
33
|
+
@original_attribute = #<ActiveModel::Attribute::FromDatabase:placeholder_id
|
34
|
+
@original_attribute = nil,
|
35
|
+
attr_reader :name = "created_at",
|
36
|
+
attr_reader :type = #<ActiveRecord::Type::DateTime:placeholder_id
|
37
|
+
attr_reader :limit = nil,
|
38
|
+
attr_reader :precision = 6,
|
39
|
+
attr_reader :scale = nil
|
40
|
+
>,
|
41
|
+
attr_reader :value_before_type_cast = nil
|
42
|
+
>,
|
43
|
+
attr_reader :name = "created_at",
|
44
|
+
attr_reader :type = #<ActiveRecord::Type::DateTime:placeholder_id
|
45
|
+
attr_reader :limit = nil,
|
46
|
+
attr_reader :precision = 6,
|
47
|
+
attr_reader :scale = nil
|
48
|
+
>,
|
49
|
+
attr_reader :value_before_type_cast = "1992-10-10 12:30:00"
|
50
|
+
>,
|
51
|
+
"id" => #<ActiveModel::Attribute::FromDatabase:placeholder_id
|
52
|
+
@original_attribute = nil,
|
53
|
+
attr_reader :name = "id",
|
54
|
+
attr_reader :type = #<ActiveRecord::ConnectionAdapters::SQLite3Adapter::SQLite3Integer:placeholder_id
|
55
|
+
@range = -9223372036854775808...9223372036854775808,
|
56
|
+
attr_reader :limit = nil,
|
57
|
+
attr_reader :precision = nil,
|
58
|
+
attr_reader :scale = nil
|
59
|
+
>,
|
60
|
+
attr_reader :value_before_type_cast = nil
|
61
|
+
>,
|
62
|
+
"name" => #<ActiveModel::Attribute::FromUser:placeholder_id
|
63
|
+
@original_attribute = #<ActiveModel::Attribute::FromDatabase:placeholder_id
|
64
|
+
@original_attribute = nil,
|
65
|
+
attr_reader :name = "name",
|
66
|
+
attr_reader :type = #<ActiveModel::Type::String:placeholder_id
|
67
|
+
@false = "f",
|
68
|
+
@true = "t",
|
69
|
+
attr_reader :limit = nil,
|
70
|
+
attr_reader :precision = nil,
|
71
|
+
attr_reader :scale = nil
|
72
|
+
>,
|
73
|
+
attr_reader :value_before_type_cast = nil
|
74
|
+
>,
|
75
|
+
attr_reader :name = "name",
|
76
|
+
attr_reader :type = #<ActiveModel::Type::String:placeholder_id
|
77
|
+
@false = "f",
|
78
|
+
@true = "t",
|
79
|
+
attr_reader :limit = nil,
|
80
|
+
attr_reader :precision = nil,
|
81
|
+
attr_reader :scale = nil
|
82
|
+
>,
|
83
|
+
attr_reader :value_before_type_cast = "Diana"
|
84
|
+
>,
|
85
|
+
"rank" => #<ActiveModel::Attribute::FromUser:placeholder_id
|
86
|
+
@original_attribute = #<ActiveModel::Attribute::FromDatabase:placeholder_id
|
87
|
+
@original_attribute = nil,
|
88
|
+
attr_reader :name = "rank",
|
89
|
+
attr_reader :type = #<ActiveRecord::ConnectionAdapters::SQLite3Adapter::SQLite3Integer:placeholder_id
|
90
|
+
@range = -9223372036854775808...9223372036854775808,
|
91
|
+
attr_reader :limit = nil,
|
92
|
+
attr_reader :precision = nil,
|
93
|
+
attr_reader :scale = nil
|
94
|
+
>,
|
95
|
+
attr_reader :value_before_type_cast = nil
|
96
|
+
>,
|
97
|
+
attr_reader :name = "rank",
|
98
|
+
attr_reader :type = #<ActiveRecord::ConnectionAdapters::SQLite3Adapter::SQLite3Integer:placeholder_id
|
99
|
+
@range = -9223372036854775808...9223372036854775808,
|
100
|
+
attr_reader :limit = nil,
|
101
|
+
attr_reader :precision = nil,
|
102
|
+
attr_reader :scale = nil
|
103
|
+
>,
|
104
|
+
attr_reader :value_before_type_cast = 1
|
105
|
+
>
|
106
|
+
}
|
107
|
+
>,
|
108
|
+
attr_accessor :destroyed_by_association = nil,
|
109
|
+
attr_reader :strict_loading_mode = :all
|
110
|
+
>
|