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 @@ -79,6 +79,19 @@ def self.[](config) # :nodoc: unfinished API
79
79
# The default value is +5+ seconds.
80
80
attr_accessor :idle_response_timeout , type : Integer
81
81
82
+ # :markup: markdown
83
+ #
84
+ # Controls the behavior of Net::IMAP#responses when called without a
85
+ # block. Valid options are `:warn`, `:raise`, or
86
+ # `:silence_deprecation_warning`.
87
+ #
88
+ # | Starting with version | The default value is |
89
+ # |-----------------------|--------------------------------|
90
+ # | v0.4.13 | +:silence_deprecation_warning+ |
91
+ # | v0.5 | +:warn+ |
92
+ # | _eventually_ | +:raise+ |
93
+ attr_accessor :responses_without_block
94
+
82
95
# Creates a new config object and initialize its attribute with +attrs+.
83
96
#
84
97
# If +parent+ is not given, the global config is used by default.
@@ -94,6 +107,7 @@ def initialize(parent = Config.global, **attrs)
94
107
debug : false ,
95
108
open_timeout : 30 ,
96
109
idle_response_timeout : 5 ,
110
+ responses_without_block : :silence_deprecation_warning ,
97
111
) . freeze
98
112
99
113
@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