amazing_print 1.0.0 → 1.3.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/.gitignore +1 -1
- data/Appraisals +47 -51
- data/CHANGELOG.md +32 -0
- data/Gemfile +2 -0
- data/LICENSE +1 -0
- data/README.md +20 -13
- data/Rakefile +2 -0
- data/lib/amazing_print.rb +19 -17
- data/lib/amazing_print/colorize.rb +2 -0
- data/lib/amazing_print/core_ext/awesome_method_array.rb +3 -1
- data/lib/amazing_print/core_ext/class.rb +2 -0
- data/lib/amazing_print/core_ext/kernel.rb +2 -0
- data/lib/amazing_print/core_ext/logger.rb +11 -2
- data/lib/amazing_print/core_ext/object.rb +2 -0
- data/lib/amazing_print/core_ext/string.rb +5 -2
- data/lib/amazing_print/custom_defaults.rb +3 -1
- data/lib/amazing_print/ext/action_view.rb +3 -1
- data/lib/amazing_print/ext/active_record.rb +9 -18
- data/lib/amazing_print/ext/active_support.rb +2 -0
- data/lib/amazing_print/ext/mongo_mapper.rb +4 -2
- data/lib/amazing_print/ext/mongoid.rb +2 -0
- data/lib/amazing_print/ext/nobrainer.rb +6 -0
- data/lib/amazing_print/ext/nokogiri.rb +2 -0
- data/lib/amazing_print/ext/ostruct.rb +2 -0
- data/lib/amazing_print/ext/ripple.rb +2 -0
- data/lib/amazing_print/ext/sequel.rb +4 -2
- data/lib/amazing_print/formatter.rb +9 -2
- data/lib/amazing_print/formatters.rb +12 -10
- data/lib/amazing_print/formatters/array_formatter.rb +3 -1
- data/lib/amazing_print/formatters/base_formatter.rb +5 -2
- data/lib/amazing_print/formatters/class_formatter.rb +2 -0
- data/lib/amazing_print/formatters/dir_formatter.rb +4 -1
- data/lib/amazing_print/formatters/file_formatter.rb +4 -1
- data/lib/amazing_print/formatters/hash_formatter.rb +4 -2
- data/lib/amazing_print/formatters/method_formatter.rb +2 -0
- data/lib/amazing_print/formatters/object_formatter.rb +14 -13
- data/lib/amazing_print/formatters/simple_formatter.rb +2 -0
- data/lib/amazing_print/formatters/struct_formatter.rb +9 -7
- data/lib/amazing_print/indentator.rb +2 -0
- data/lib/amazing_print/inspector.rb +9 -9
- data/lib/amazing_print/version.rb +3 -1
- data/lib/ap.rb +3 -1
- data/spec/active_record_helper.rb +10 -0
- data/spec/colors_spec.rb +43 -46
- data/spec/core_ext/logger_spec.rb +40 -14
- data/spec/core_ext/string_spec.rb +2 -7
- data/spec/ext/action_controller_spec.rb +40 -0
- data/spec/ext/action_view_spec.rb +8 -1
- data/spec/ext/active_model_spec.rb +37 -0
- data/spec/ext/active_record_spec.rb +42 -7
- data/spec/ext/active_support_spec.rb +12 -1
- data/spec/ext/mongo_mapper_spec.rb +8 -6
- data/spec/ext/mongoid_spec.rb +2 -0
- data/spec/ext/nobrainer_spec.rb +2 -0
- data/spec/ext/nokogiri_spec.rb +2 -0
- data/spec/ext/ostruct_spec.rb +2 -0
- data/spec/ext/ripple_spec.rb +2 -0
- data/spec/ext/sequel_spec.rb +45 -0
- data/spec/formats_spec.rb +10 -8
- data/spec/methods_spec.rb +37 -3
- data/spec/misc_spec.rb +3 -1
- data/spec/objects_spec.rb +2 -0
- data/spec/sequel_helper.rb +18 -0
- data/spec/spec_helper.rb +5 -1
- data/spec/support/active_record_data.rb +2 -0
- data/spec/support/active_record_data/6_1_diana.txt +109 -0
- data/spec/support/active_record_data/6_1_multi.txt +220 -0
- data/spec/support/ext_verifier.rb +9 -4
- data/spec/support/mongoid_versions.rb +2 -0
- data/spec/support/rails_versions.rb +7 -0
- metadata +79 -54
- data/lib/amazing_print/core_ext/method.rb +0 -21
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Copyright (c) 2010-2016 Michael Dvorkin and contributors
|
2
4
|
#
|
3
5
|
# AmazingPrint is freely distributable under the terms of MIT license.
|
@@ -5,6 +7,6 @@
|
|
5
7
|
#------------------------------------------------------------------------------
|
6
8
|
module AmazingPrint
|
7
9
|
def self.version
|
8
|
-
'1.
|
10
|
+
'1.3.0'
|
9
11
|
end
|
10
12
|
end
|
data/lib/ap.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Copyright (c) 2010-2016 Michael Dvorkin and contributors
|
2
4
|
#
|
3
5
|
# AmazingPrint is freely distributable under the terms of MIT license.
|
@@ -7,4 +9,4 @@
|
|
7
9
|
# Keeping this for backwards compatibility to allow
|
8
10
|
# require "ap"
|
9
11
|
#
|
10
|
-
|
12
|
+
require_relative 'amazing_print'
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
if ExtVerifier.has_rails?
|
2
4
|
# Required to use the column support
|
3
5
|
module Rails
|
@@ -27,4 +29,12 @@ if ExtVerifier.has_rails?
|
|
27
29
|
class User < ActiveRecord::Base; has_many :emails; end
|
28
30
|
class SubUser < User; end
|
29
31
|
class Email < ActiveRecord::Base; belongs_to :user; end
|
32
|
+
class TableFreeModel
|
33
|
+
include ::ActiveModel::Validations
|
34
|
+
attr_reader(:name)
|
35
|
+
|
36
|
+
def attributes
|
37
|
+
{ 'name' => name }
|
38
|
+
end
|
39
|
+
end
|
30
40
|
end
|
data/spec/colors_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe 'AmazingPrint' do
|
@@ -18,8 +20,8 @@ RSpec.describe 'AmazingPrint' do
|
|
18
20
|
end
|
19
21
|
|
20
22
|
describe 'colorization' do
|
21
|
-
PLAIN = '[ 1, :two, "three", [ nil, [ true, false ] ] ]'
|
22
|
-
COLORIZED = "[ \e[1;34m1\e[0m, \e[0;36m:two\e[0m, \e[0;33m\"three\"\e[0m, [ \e[1;31mnil\e[0m, [ \e[1;32mtrue\e[0m, \e[1;31mfalse\e[0m ] ] ]"
|
23
|
+
PLAIN = '[ 1, :two, "three", [ nil, [ true, false ] ] ]'
|
24
|
+
COLORIZED = "[ \e[1;34m1\e[0m, \e[0;36m:two\e[0m, \e[0;33m\"three\"\e[0m, [ \e[1;31mnil\e[0m, [ \e[1;32mtrue\e[0m, \e[1;31mfalse\e[0m ] ] ]"
|
23
25
|
|
24
26
|
before do
|
25
27
|
ENV['TERM'] = 'xterm-colors'
|
@@ -38,34 +40,28 @@ RSpec.describe 'AmazingPrint' do
|
|
38
40
|
end
|
39
41
|
|
40
42
|
it "colorizes processes with ENV['ANSICON'] by default" do
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
ENV['ANSICON'] = term
|
48
|
-
end
|
43
|
+
stub_tty!
|
44
|
+
term = ENV['ANSICON']
|
45
|
+
ENV['ANSICON'] = '1'
|
46
|
+
expect(@arr.ai(multiline: false)).to eq(COLORIZED)
|
47
|
+
ensure
|
48
|
+
ENV['ANSICON'] = term
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'does not colorize tty processes running in dumb terminals by default' do
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
ENV['TERM'] = term
|
59
|
-
end
|
52
|
+
stub_tty!
|
53
|
+
term = ENV['TERM']
|
54
|
+
ENV['TERM'] = 'dumb'
|
55
|
+
expect(@arr.ai(multiline: false)).to eq(PLAIN)
|
56
|
+
ensure
|
57
|
+
ENV['TERM'] = term
|
60
58
|
end
|
61
59
|
|
62
60
|
it 'does not colorize subprocesses by default' do
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
stub_tty!
|
68
|
-
end
|
61
|
+
stub_tty! false
|
62
|
+
expect(@arr.ai(multiline: false)).to eq(PLAIN)
|
63
|
+
ensure
|
64
|
+
stub_tty!
|
69
65
|
end
|
70
66
|
end
|
71
67
|
|
@@ -80,34 +76,35 @@ RSpec.describe 'AmazingPrint' do
|
|
80
76
|
end
|
81
77
|
|
82
78
|
it "colorizes processes with ENV['ANSICON'] set to 0" do
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
ENV['ANSICON'] = term
|
90
|
-
end
|
79
|
+
stub_tty!
|
80
|
+
term = ENV['ANSICON']
|
81
|
+
ENV['ANSICON'] = '1'
|
82
|
+
expect(@arr.ai(multiline: false)).to eq(COLORIZED)
|
83
|
+
ensure
|
84
|
+
ENV['ANSICON'] = term
|
91
85
|
end
|
92
86
|
|
93
87
|
it 'colorizes dumb terminals' do
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
ENV['TERM'] = term
|
101
|
-
end
|
88
|
+
stub_tty!
|
89
|
+
term = ENV['TERM']
|
90
|
+
ENV['TERM'] = 'dumb'
|
91
|
+
expect(@arr.ai(multiline: false)).to eq(COLORIZED)
|
92
|
+
ensure
|
93
|
+
ENV['TERM'] = term
|
102
94
|
end
|
103
95
|
|
104
96
|
it 'colorizes subprocess' do
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
97
|
+
stub_tty! false
|
98
|
+
expect(@arr.ai(multiline: false)).to eq(COLORIZED)
|
99
|
+
ensure
|
100
|
+
stub_tty!
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe 'uncolor' do
|
105
|
+
it 'removes any ANSI color codes' do
|
106
|
+
expect('red'.red + 'blue'.blue).to eq "\e[1;31mred\e[0m\e[1;34mblue\e[0m"
|
107
|
+
expect(('red'.red + 'blue'.blue).uncolor).to eq 'redblue'
|
111
108
|
end
|
112
109
|
end
|
113
110
|
end
|
@@ -1,22 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
require 'logger'
|
4
6
|
require 'amazing_print/core_ext/logger'
|
5
7
|
|
6
8
|
RSpec.describe 'AmazingPrint logging extensions' do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
let(:object) { double }
|
10
|
+
let(:options) { { sort_keys: true } }
|
11
|
+
|
12
|
+
subject(:logger) do
|
13
|
+
Logger.new('/dev/null')
|
14
|
+
rescue Errno::ENOENT
|
15
|
+
Logger.new('nul')
|
13
16
|
end
|
14
17
|
|
15
18
|
describe 'ap method' do
|
16
19
|
it 'should awesome_inspect the given object' do
|
17
|
-
object = double
|
18
20
|
expect(object).to receive(:ai)
|
19
|
-
|
21
|
+
logger.ap object
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'passes options to `ai`' do
|
25
|
+
expect(object).to receive(:ai).with(options)
|
26
|
+
logger.ap object, options
|
20
27
|
end
|
21
28
|
|
22
29
|
describe 'the log level' do
|
@@ -25,19 +32,38 @@ RSpec.describe 'AmazingPrint logging extensions' do
|
|
25
32
|
end
|
26
33
|
|
27
34
|
it 'should fallback to the default :debug log level' do
|
28
|
-
expect(
|
29
|
-
|
35
|
+
expect(logger).to receive(:debug)
|
36
|
+
logger.ap nil
|
30
37
|
end
|
31
38
|
|
32
39
|
it 'should use the global user default if no level passed' do
|
33
40
|
AmazingPrint.defaults = { log_level: :info }
|
34
|
-
expect(
|
35
|
-
|
41
|
+
expect(logger).to receive(:info)
|
42
|
+
logger.ap nil
|
36
43
|
end
|
37
44
|
|
38
45
|
it 'should use the passed in level' do
|
39
|
-
expect(
|
40
|
-
|
46
|
+
expect(logger).to receive(:warn)
|
47
|
+
logger.ap nil, :warn
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'makes no difference if passed as a hash or a part of options' do
|
51
|
+
expect(logger).to receive(:warn)
|
52
|
+
logger.ap nil, { level: :warn }
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'when given options' do
|
56
|
+
it 'uses the default log level with the options' do
|
57
|
+
expect(logger).to receive(:debug)
|
58
|
+
expect(object).to receive(:ai).with(options)
|
59
|
+
logger.ap object, options
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'still uses the passed in level with options' do
|
63
|
+
expect(logger).to receive(:warn)
|
64
|
+
expect(object).to receive(:ai).with(options)
|
65
|
+
logger.ap object, options.merge({ level: :warn })
|
66
|
+
end
|
41
67
|
end
|
42
68
|
end
|
43
69
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe 'String extensions' do
|
@@ -10,11 +12,4 @@ RSpec.describe 'String extensions' do
|
|
10
12
|
expect(color.to_s.send(:"#{color}ish")).to eq("\e[0;#{30 + i}m#{color}\e[0m")
|
11
13
|
end
|
12
14
|
end
|
13
|
-
|
14
|
-
it 'should have black and pale colors' do
|
15
|
-
expect('black'.send(:black)).to eq('black'.send(:grayish))
|
16
|
-
expect('pale'.send(:pale)).to eq('pale'.send(:whiteish))
|
17
|
-
expect('pale'.send(:pale)).to eq("\e[0;37mpale\e[0m")
|
18
|
-
expect('whiteish'.send(:whiteish)).to eq("\e[0;37mwhiteish\e[0m")
|
19
|
-
end
|
20
15
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe 'AmazingPrint::ActionController', skip: -> { !ExtVerifier.has_rails? }.call do
|
6
|
+
let(:inspector) { AmazingPrint::Inspector.new }
|
7
|
+
|
8
|
+
context 'with unpermitted ActionController::Parameters' do
|
9
|
+
let(:parameters) do
|
10
|
+
ActionController::Parameters.new post: { id: 1, content: 'Some' }
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should format as an object' do
|
14
|
+
expect(inspector.send(:awesome, parameters)).to match(
|
15
|
+
/\A#?<ActionController::Parameters {"post"=>{"id"=>1, "content"=>"Some"}} permitted: false>\z/
|
16
|
+
)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'with permitted ActionController::Parameters' do
|
21
|
+
let(:expected_output) do
|
22
|
+
<<~OUTPUT
|
23
|
+
{
|
24
|
+
\"post\"\e[0;37m => \e[0m{
|
25
|
+
\"id\"\e[0;37m => \e[0m\e[1;34m1\e[0m,
|
26
|
+
\"content\"\e[0;37m => \e[0m\e[0;33m\"Some\"\e[0m
|
27
|
+
}
|
28
|
+
}
|
29
|
+
OUTPUT
|
30
|
+
.chomp
|
31
|
+
end
|
32
|
+
let(:parameters) do
|
33
|
+
ActionController::Parameters.new post: { id: 1, content: 'Some' }
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should format as a hash' do
|
37
|
+
expect(inspector.send(:awesome, parameters.permit!)).to eq expected_output
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -1,6 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
|
-
RSpec.describe 'AmazingPrint ActionView extensions',
|
5
|
+
RSpec.describe 'AmazingPrint ActionView extensions',
|
6
|
+
skip: -> { !ExtVerifier.has_rails? || ActiveRecord::VERSION::STRING >= '6.1' }.call do
|
4
7
|
before do
|
5
8
|
@view = ActionView::Base.new
|
6
9
|
end
|
@@ -14,4 +17,8 @@ RSpec.describe 'AmazingPrint ActionView extensions', skip: -> { !ExtVerifier.has
|
|
14
17
|
markup = ' &<hello>'
|
15
18
|
expect(@view.ap(markup)).to eq('<pre class="debug_dump"><kbd style="color:brown">" &<hello>"</kbd></pre>')
|
16
19
|
end
|
20
|
+
|
21
|
+
it 'uses HTML and does set output to HTML safe' do
|
22
|
+
expect(@view.ap('<p>Hello World</p>')).to be_html_safe
|
23
|
+
end
|
17
24
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'active_record_helper'
|
5
|
+
|
6
|
+
RSpec.describe 'ActiveModel::Errors formatting', skip: -> { !ExtVerifier.has_rails? }.call do
|
7
|
+
before do
|
8
|
+
@ap = AmazingPrint::Inspector.new(plain: true)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should format active_model_errors properly' do
|
12
|
+
model = TableFreeModel.new
|
13
|
+
model.errors.add(:name, "can't be blank")
|
14
|
+
|
15
|
+
out = @ap.awesome(model.errors)
|
16
|
+
|
17
|
+
str = <<~ERRORS.strip
|
18
|
+
#<ActiveModel::Errors:placeholder_id> {
|
19
|
+
"name" => nil,
|
20
|
+
:details => {
|
21
|
+
:name => [
|
22
|
+
[0] {
|
23
|
+
:error => "can't be blank"
|
24
|
+
}
|
25
|
+
]
|
26
|
+
},
|
27
|
+
:messages => {
|
28
|
+
:name => [
|
29
|
+
[0] "can't be blank"
|
30
|
+
]
|
31
|
+
}
|
32
|
+
}
|
33
|
+
ERRORS
|
34
|
+
|
35
|
+
expect(out).to be_similar_to(str)
|
36
|
+
end
|
37
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'active_record_helper'
|
3
5
|
|
@@ -126,7 +128,9 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
126
128
|
out = @ap.awesome(@diana)
|
127
129
|
|
128
130
|
raw_object_string =
|
129
|
-
if
|
131
|
+
if activerecord_6_1?
|
132
|
+
ActiveRecordData.raw_6_1_diana
|
133
|
+
elsif activerecord_6_0?
|
130
134
|
ActiveRecordData.raw_6_0_diana
|
131
135
|
elsif activerecord_5_2?
|
132
136
|
ActiveRecordData.raw_5_2_diana
|
@@ -152,7 +156,7 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
152
156
|
end
|
153
157
|
end
|
154
158
|
|
155
|
-
if RUBY_PLATFORM == 'java'
|
159
|
+
if RUBY_PLATFORM == 'java' && !activerecord_6_1?
|
156
160
|
raw_object_string.gsub!(
|
157
161
|
'ActiveRecord::ConnectionAdapters::SQLite3Adapter::SQLite3Integer',
|
158
162
|
'ArJdbc::SQLite3::SQLite3Integer'
|
@@ -166,7 +170,9 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
166
170
|
out = @ap.awesome([@diana, @laura])
|
167
171
|
|
168
172
|
raw_object_string =
|
169
|
-
if
|
173
|
+
if activerecord_6_1?
|
174
|
+
ActiveRecordData.raw_6_1_multi
|
175
|
+
elsif activerecord_6_0?
|
170
176
|
ActiveRecordData.raw_6_0_multi
|
171
177
|
elsif activerecord_5_2?
|
172
178
|
ActiveRecordData.raw_5_2_multi
|
@@ -192,7 +198,7 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
192
198
|
end
|
193
199
|
end
|
194
200
|
|
195
|
-
if RUBY_PLATFORM == 'java'
|
201
|
+
if RUBY_PLATFORM == 'java' && !activerecord_6_1?
|
196
202
|
raw_object_string.gsub!(
|
197
203
|
'ActiveRecord::ConnectionAdapters::SQLite3Adapter::SQLite3Integer',
|
198
204
|
'ArJdbc::SQLite3::SQLite3Integer'
|
@@ -238,6 +244,11 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
238
244
|
it 'should print ActiveRecord::Base objects (ex. ancestors)' do
|
239
245
|
expect { @ap.awesome(User.ancestors) }.not_to raise_error
|
240
246
|
end
|
247
|
+
|
248
|
+
it 'should print valid HTML for subclasses' do
|
249
|
+
@ap = AmazingPrint::Inspector.new(html: true)
|
250
|
+
expect(@ap.awesome(SubUser)).to match('SubUser < User')
|
251
|
+
end
|
241
252
|
end
|
242
253
|
|
243
254
|
#------------------------------------------------------------------------------
|
@@ -255,7 +266,19 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
255
266
|
expect(out).to match(
|
256
267
|
/\s+first\(\*args,\s&block\)\s+#<Class:\w+>\s+\(ActiveRecord::Querying\)/
|
257
268
|
)
|
258
|
-
elsif RUBY_VERSION >= '
|
269
|
+
elsif RUBY_VERSION >= '3.0.0'
|
270
|
+
expect(out).to match(
|
271
|
+
/\s*first\(\*(\*|args),\s+&(&|block)\)\s+#<Class:User> \(ActiveRecord::Querying\)/
|
272
|
+
)
|
273
|
+
elsif RUBY_VERSION >= '2.7.2'
|
274
|
+
expect(out).to match(
|
275
|
+
/\s*first\(\*(\*|args),\s+&(&|block)\)\s+User/
|
276
|
+
)
|
277
|
+
elsif RUBY_VERSION >= '2.7.0'
|
278
|
+
expect(out).to match(
|
279
|
+
/\s*first\(\*(\*|args),\s+&(&|block)\)\s+#<Class:ActiveRecord::Base> \(ActiveRecord::Querying\)/
|
280
|
+
)
|
281
|
+
elsif RUBY_VERSION =~ /^2\.4\.([4-9]|[1-9][0-9])|^2\.[56]\./
|
259
282
|
expect(out).to match(/\sfirst\(\*arg.*?\)\s+User/)
|
260
283
|
elsif RUBY_VERSION >= '1.9'
|
261
284
|
expect(out).to match(/\sfirst\(\*args,\s&block\)\s+Class \(ActiveRecord::Querying\)/)
|
@@ -272,7 +295,13 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
272
295
|
expect(out).to match(
|
273
296
|
/\sprimary_key\(.*?\)\s+#<Class:\w+>\s\(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/
|
274
297
|
)
|
275
|
-
elsif RUBY_VERSION >= '
|
298
|
+
elsif RUBY_VERSION >= '3.0.0'
|
299
|
+
expect(out).to match(/\sprimary_key\(.*?\)\s+#<Class:User> \(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/)
|
300
|
+
elsif RUBY_VERSION =~ /^2\.7\.(0|1)/
|
301
|
+
expect(out).to match(
|
302
|
+
/\sprimary_key\(.*?\)\s+.+Class.+\(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/
|
303
|
+
)
|
304
|
+
elsif RUBY_VERSION =~ /^2\.4\.([4-9]|[1-9][0-9])|^2\.[56]\./ || RUBY_VERSION >= '2.7.2'
|
276
305
|
expect(out).to match(/\sprimary_key\(.*?\)\s+User/)
|
277
306
|
else
|
278
307
|
expect(out).to match(/\sprimary_key\(.*?\)\s+Class \(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/)
|
@@ -286,7 +315,13 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
286
315
|
else
|
287
316
|
if RUBY_PLATFORM == 'java'
|
288
317
|
expect(out).to match(/\svalidate\(\*arg.*?\)\s+#<Class:\w+> \(ActiveModel::Validations::ClassMethods\)/)
|
289
|
-
elsif RUBY_VERSION >= '
|
318
|
+
elsif RUBY_VERSION >= '3.0.0'
|
319
|
+
expect(out).to match(/\svalidate\(\*arg.*?\)\s+#<Class:User> \(ActiveModel::Validations::ClassMethods\)/)
|
320
|
+
elsif RUBY_VERSION =~ /2\.7\.(0|1)/
|
321
|
+
expect(out).to match(
|
322
|
+
/\svalidate\(\*args.*?\)\s+#<Class:ActiveRecord::Base> \(ActiveModel::Validations::ClassMethods\)/
|
323
|
+
)
|
324
|
+
elsif RUBY_VERSION =~ /^2\.4\.([4-9]|[1-9][0-9])|^2\.[56]\./ || RUBY_VERSION >= '2.7.2'
|
290
325
|
expect(out).to match(/\svalidate\(\*arg.*?\)\s+User/)
|
291
326
|
else
|
292
327
|
expect(out).to match(/\svalidate\(\*arg.*?\)\s+Class \(ActiveModel::Validations::ClassMethods\)/)
|