diff --git a/lib/net/imap.rb b/lib/net/imap.rb index 5cc114781..a849d47e8 100644 --- a/lib/net/imap.rb +++ b/lib/net/imap.rb @@ -2691,7 +2691,7 @@ def responses(type = nil) warn(RESPONSES_DEPRECATION_MSG, uplevel: 1) 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 aaa61d436..3d1287635 100644 --- a/test/net/imap/test_imap_responses.rb +++ b/test/net/imap/test_imap_responses.rb @@ -166,13 +166,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