File tree Expand file tree Collapse file tree 3 files changed +37
-5
lines changed Expand file tree Collapse file tree 3 files changed +37
-5
lines changed Original file line number Diff line number Diff line change @@ -2499,6 +2499,7 @@ def idle_done
2499
2499
#
2500
2500
# Calling without a block is unsafe and deprecated. Future releases will
2501
2501
# raise ArgumentError unless a block is given.
2502
+ # See Config#responses_without_block.
2502
2503
#
2503
2504
# Previously unhandled responses are automatically cleared before entering a
2504
2505
# mailbox with #select or #examine. Long-lived connections can receive many
@@ -2523,7 +2524,12 @@ def responses(type = nil)
2523
2524
elsif type
2524
2525
raise ArgumentError , "Pass a block or use #clear_responses"
2525
2526
else
2526
- # warn("DEPRECATED: pass a block or use #clear_responses", uplevel: 1)
2527
+ case config . responses_without_block
2528
+ when :raise
2529
+ raise ArgumentError , "Pass a block or use #clear_responses"
2530
+ when :warn
2531
+ warn ( "DEPRECATED: pass a block or use #clear_responses" , uplevel : 1 )
2532
+ end
2527
2533
@responses
2528
2534
end
2529
2535
end
Original file line number Diff line number Diff line change @@ -104,6 +104,19 @@ def self.[](config) # :nodoc: unfinished API
104
104
# The default value is +5+ seconds.
105
105
attr_accessor :idle_response_timeout , type : Integer
106
106
107
+ # :markup: markdown
108
+ #
109
+ # Controls the behavior of Net::IMAP#responses when called without a
110
+ # block. Valid options are `:warn`, `:raise`, or
111
+ # `:silence_deprecation_warning`.
112
+ #
113
+ # | Starting with version | The default value is |
114
+ # |-----------------------|--------------------------------|
115
+ # | v0.4.13 | +:silence_deprecation_warning+ |
116
+ # | v0.5 | +:warn+ |
117
+ # | _eventually_ | +:raise+ |
118
+ attr_accessor :responses_without_block
119
+
107
120
# Creates a new config object and initialize its attribute with +attrs+.
108
121
#
109
122
# If +parent+ is not given, the global config is used by default.
@@ -119,6 +132,7 @@ def initialize(parent = Config.global, **attrs)
119
132
debug : false ,
120
133
open_timeout : 30 ,
121
134
idle_response_timeout : 5 ,
135
+ responses_without_block : :silence_deprecation_warning ,
122
136
) . freeze
123
137
124
138
@global = default . new
Original file line number Diff line number Diff line change @@ -1105,10 +1105,22 @@ def test_responses
1105
1105
assert_equal ( 1 , imap . responses ( "RECENT" , &:last ) )
1106
1106
assert_raise ( ArgumentError ) do imap . responses ( "UIDNEXT" ) end
1107
1107
# Deprecated style, without a block:
1108
- # assert_warn(/Pass a block.*or.*clear_responses/i) do
1109
- # assert_equal(%i[Answered Flagged Deleted Seen Draft],
1110
- # imap.responses["FLAGS"]&.last)
1111
- # end
1108
+ imap . config . responses_without_block = :raise
1109
+ assert_raise ( ArgumentError ) do imap . responses end
1110
+ imap . config . responses_without_block = :warn
1111
+ assert_raise ( ArgumentError ) do imap . responses ( "UIDNEXT" ) end
1112
+ assert_warn ( /Pass a block.*or.*clear_responses/i ) do
1113
+ assert_equal ( %i[ Answered Flagged Deleted Seen Draft ] ,
1114
+ imap . responses [ "FLAGS" ] &.last )
1115
+ end
1116
+ # TODO: assert_no_warn?
1117
+ imap . config . responses_without_block = :silence_deprecation_warning
1118
+ assert_raise ( ArgumentError ) do imap . responses ( "UIDNEXT" ) end
1119
+ stderr = EnvUtil . verbose_warning {
1120
+ assert_equal ( %i[ Answered Flagged Deleted Seen Draft ] ,
1121
+ imap . responses [ "FLAGS" ] &.last )
1122
+ }
1123
+ assert_empty stderr
1112
1124
end
1113
1125
end
1114
1126
You can’t perform that action at this time.
0 commit comments