Skip to content

Commit 585bf65

Browse files
authored
🔀 Merge pull request #282 from nevans/sequence-set-extras
💥 Replace MessageSet with SequenceSet
2 parents 05d6b43 + 05766fb commit 585bf65

File tree

3 files changed

+29
-16
lines changed

3 files changed

+29
-16
lines changed

lib/net/imap.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1950,7 +1950,7 @@ def expunge
19501950
# [RFC4315[https://www.rfc-editor.org/rfc/rfc4315.html]].
19511951
def uid_expunge(uid_set)
19521952
synchronize do
1953-
send_command("UID EXPUNGE", MessageSet.new(uid_set))
1953+
send_command("UID EXPUNGE", SequenceSet.new(uid_set))
19541954
clear_responses("EXPUNGE")
19551955
end
19561956
end
@@ -2912,17 +2912,17 @@ def fetch_internal(cmd, set, attr, mod = nil, changedsince: nil)
29122912
synchronize do
29132913
clear_responses("FETCH")
29142914
if mod
2915-
send_command(cmd, MessageSet.new(set), attr, mod)
2915+
send_command(cmd, SequenceSet.new(set), attr, mod)
29162916
else
2917-
send_command(cmd, MessageSet.new(set), attr)
2917+
send_command(cmd, SequenceSet.new(set), attr)
29182918
end
29192919
clear_responses("FETCH")
29202920
end
29212921
end
29222922

29232923
def store_internal(cmd, set, attr, flags, unchangedsince: nil)
29242924
attr = RawData.new(attr) if attr.instance_of?(String)
2925-
args = [MessageSet.new(set)]
2925+
args = [SequenceSet.new(set)]
29262926
args << ["UNCHANGEDSINCE", Integer(unchangedsince)] if unchangedsince
29272927
args << attr << flags
29282928
synchronize do
@@ -2933,7 +2933,7 @@ def store_internal(cmd, set, attr, flags, unchangedsince: nil)
29332933
end
29342934

29352935
def copy_internal(cmd, set, mailbox)
2936-
send_command(cmd, MessageSet.new(set), mailbox)
2936+
send_command(cmd, SequenceSet.new(set), mailbox)
29372937
end
29382938

29392939
def sort_internal(cmd, sort_keys, search_keys, charset)
@@ -2964,7 +2964,7 @@ def normalize_searching_criteria(keys)
29642964
keys.collect! do |i|
29652965
case i
29662966
when -1, Range, Array
2967-
MessageSet.new(i)
2967+
SequenceSet.new(i)
29682968
else
29692969
i
29702970
end

lib/net/imap/command_data.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ def initialize(data)
179179
end
180180
end
181181

182+
# *DEPRECATED*. Replaced by SequenceSet.
182183
class MessageSet # :nodoc:
183184
def send_data(imap, tag)
184185
imap.__send__(:put_string, format_internal(@data))
@@ -192,6 +193,15 @@ def validate
192193

193194
def initialize(data)
194195
@data = data
196+
warn "DEPRECATED: #{MessageSet} should be replaced with #{SequenceSet}."
197+
begin
198+
# to ensure the input works with SequenceSet, too
199+
SequenceSet.new(data)
200+
rescue
201+
warn "MessageSet input is incompatible with SequenceSet: [%s] %s" % [
202+
$!.class, $!.message
203+
]
204+
end
195205
end
196206

197207
def format_internal(data)

test/net/imap/test_imap.rb

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -626,17 +626,20 @@ def test_send_invalid_number
626626
imap.__send__(:send_command, "TEST", 2**32)
627627
end
628628
# MessageSet numbers may be non-zero uint32
629-
assert_raise(Net::IMAP::DataFormatError) do
630-
imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(-1))
631-
end
632-
assert_raise(Net::IMAP::DataFormatError) do
633-
imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(0))
634-
end
635-
imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(1))
636-
imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(2**32 - 1))
637-
assert_raise(Net::IMAP::DataFormatError) do
638-
imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(2**32))
629+
stderr = EnvUtil.verbose_warning do
630+
assert_raise(Net::IMAP::DataFormatError) do
631+
imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(-1))
632+
end
633+
assert_raise(Net::IMAP::DataFormatError) do
634+
imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(0))
635+
end
636+
imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(1))
637+
imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(2**32 - 1))
638+
assert_raise(Net::IMAP::DataFormatError) do
639+
imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(2**32))
640+
end
639641
end
642+
assert_match(/DEPRECATED:.+MessageSet.+replace.+with.+SequenceSet/, stderr)
640643
# SequenceSet numbers may be non-zero uint3, and -1 is translated to *
641644
imap.__send__(:send_command, "TEST", Net::IMAP::SequenceSet.new(-1))
642645
assert_raise(Net::IMAP::DataFormatError) do

0 commit comments

Comments
 (0)