Skip to content

Commit 857dabb

Browse files
committed
🔇 Add silence_thread_safety_deprecation_warnings
This is provided as a temporary workaround, until dependant projects can update their usage.
1 parent ca9f844 commit 857dabb

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

lib/net/imap.rb

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -716,8 +716,18 @@ class << self
716716
alias default_imap_port default_port
717717
alias default_imaps_port default_tls_port
718718
alias default_ssl_port default_tls_port
719+
720+
# Set to true to silence deprecation warnings, e.g. from #responses.
721+
# Defaults to false.
722+
#
723+
# These warnings are concerning thread-safety issues, so it is recommended
724+
# to update other code and leave this value. Deprecated usage will
725+
# become errors regardless of this setting, so use this only temporarily.
726+
attr_accessor :silence_thread_safety_deprecation_warnings
719727
end
720728

729+
self.silence_thread_safety_deprecation_warnings = false
730+
721731
def client_thread # :nodoc:
722732
warn "Net::IMAP#client_thread is deprecated and will be removed soon."
723733
@client_thread
@@ -2107,7 +2117,9 @@ def responses(type = nil)
21072117
elsif type
21082118
raise ArgumentError, "Pass a block or use #clear_responses"
21092119
else
2110-
warn("DEPRECATED: pass a block or use #clear_responses", uplevel: 1)
2120+
unless IMAP.silence_thread_safety_deprecation_warnings
2121+
warn("DEPRECATED: pass a block or use #clear_responses", uplevel: 1)
2122+
end
21112123
@responses
21122124
end
21132125
end

test/net/imap/test_imap.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -873,6 +873,8 @@ def test_enable
873873
end
874874

875875
def test_responses
876+
original_silence = Net::IMAP.silence_thread_safety_deprecation_warnings
877+
Net::IMAP.silence_thread_safety_deprecation_warnings = false
876878
with_fake_server do |server, imap|
877879
# responses available before SELECT/EXAMINE
878880
assert_equal(%w[IMAP4REV1 NAMESPACE MOVE IDLE UTF8=ACCEPT],
@@ -891,7 +893,16 @@ def test_responses
891893
assert_equal(%i[Answered Flagged Deleted Seen Draft],
892894
imap.responses["FLAGS"]&.last)
893895
end
896+
Net::IMAP.silence_thread_safety_deprecation_warnings = true
897+
# TODO: assert_no_warn?
898+
stderr = EnvUtil.verbose_warning {
899+
assert_equal(%i[Answered Flagged Deleted Seen Draft],
900+
imap.responses["FLAGS"]&.last)
901+
}
902+
assert_empty stderr
894903
end
904+
ensure
905+
Net::IMAP.silence_thread_safety_deprecation_warnings = original_silence
895906
end
896907

897908
def test_clear_responses

0 commit comments

Comments
 (0)