Skip to content

Commit 51f57de

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 bf4e860 commit 51f57de

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

lib/net/imap.rb

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -750,8 +750,18 @@ class << self
750750
alias default_imap_port default_port
751751
alias default_imaps_port default_tls_port
752752
alias default_ssl_port default_tls_port
753+
754+
# Set to true to silence deprecation warnings, e.g. from #responses.
755+
# Defaults to false.
756+
#
757+
# These warnings are concerning thread-safety issues, so it is recommended
758+
# to update other code and leave this value. Deprecated usage will
759+
# become errors regardless of this setting, so use this only temporarily.
760+
attr_accessor :silence_thread_safety_deprecation_warnings
753761
end
754762

763+
self.silence_thread_safety_deprecation_warnings = false
764+
755765
def client_thread # :nodoc:
756766
warn "Net::IMAP#client_thread is deprecated and will be removed soon."
757767
@client_thread
@@ -1995,7 +2005,9 @@ def responses(type = nil)
19952005
elsif type
19962006
raise ArgumentError, "Pass a block or use #clear_responses"
19972007
else
1998-
warn("DEPRECATED: pass a block or use #clear_responses", uplevel: 1)
2008+
unless IMAP.silence_thread_safety_deprecation_warnings
2009+
warn("DEPRECATED: pass a block or use #clear_responses", uplevel: 1)
2010+
end
19992011
@responses
20002012
end
20012013
end

test/net/imap/test_imap.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -926,6 +926,8 @@ def test_responses
926926
end
927927
sock.getcmd # waits for logout command
928928
end
929+
original_silence = Net::IMAP.silence_thread_safety_deprecation_warnings
930+
Net::IMAP.silence_thread_safety_deprecation_warnings = false
929931
begin
930932
imap = Net::IMAP.new(server_addr, port: port)
931933
resp = imap.select "INBOX"
@@ -940,8 +942,16 @@ def test_responses
940942
assert_equal(%i[Answered Flagged Deleted Seen Draft],
941943
imap.responses["FLAGS"]&.last)
942944
end
945+
Net::IMAP.silence_thread_safety_deprecation_warnings = true
946+
# TODO: assert_no_warn?
947+
stderr = EnvUtil.verbose_warning {
948+
assert_equal(%i[Answered Flagged Deleted Seen Draft],
949+
imap.responses["FLAGS"]&.last)
950+
}
951+
assert_empty stderr
943952
imap.logout
944953
ensure
954+
Net::IMAP.silence_thread_safety_deprecation_warnings = original_silence
945955
imap.disconnect if imap
946956
end
947957
end

0 commit comments

Comments
 (0)