diff --git a/lib/net/imap.rb b/lib/net/imap.rb index 7249ab58..1233df97 100644 --- a/lib/net/imap.rb +++ b/lib/net/imap.rb @@ -3233,7 +3233,7 @@ def responses(type = nil) warn(RESPONSES_DEPRECATION_MSG, uplevel: 1, category: :deprecated) when :frozen_dup synchronize { - responses = @responses.transform_values(&:freeze) + responses = @responses.transform_values { _1.dup.freeze } responses.default_proc = nil responses.default = [].freeze return responses.freeze diff --git a/test/net/imap/test_imap_responses.rb b/test/net/imap/test_imap_responses.rb index 3ce0e48d..f2ee65b5 100644 --- a/test/net/imap/test_imap_responses.rb +++ b/test/net/imap/test_imap_responses.rb @@ -151,13 +151,17 @@ def assert_responses_warn assert_equal [], imap.responses["FAKE"] end assert_empty stderr - # opt-in to future behavior + # default behavior since 0.6.0 imap.config.responses_without_block = :frozen_dup stderr = EnvUtil.verbose_warning do assert imap.responses.frozen? assert imap.responses["CAPABILITY"].frozen? assert_equal(%w[IMAP4REV1 NAMESPACE MOVE IDLE UTF8=ACCEPT], imap.responses["CAPABILITY"].last) + imap.responses do |r| + refute r.frozen? + refute r.values.any?(&:frozen?) + end end assert_empty stderr end