diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/net/imap.rb | 3 | ||||
-rw-r--r-- | test/net/imap/test_imap_response_parser.rb | 29 |
3 files changed, 35 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Thu Jun 16 11:35:09 2011 Shugo Maeda <shugo@ruby-lang.org> + + * lib/net/imap.rb (search_response): parses SEARCH responses from + the Yahoo IMAP server correctly. patched by Mark Nadig. [Bug #4509] + Thu Jun 16 09:12:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org> * fix for build on solaris 10. diff --git a/lib/net/imap.rb b/lib/net/imap.rb index 0ddb0f346f..724bc08e3b 100644 --- a/lib/net/imap.rb +++ b/lib/net/imap.rb @@ -2748,8 +2748,9 @@ module Net break when T_SPACE shift_token + else + data.push(number) end - data.push(number) end else data = [] diff --git a/test/net/imap/test_imap_response_parser.rb b/test/net/imap/test_imap_response_parser.rb index 599747dd76..ccdffd21ca 100644 --- a/test/net/imap/test_imap_response_parser.rb +++ b/test/net/imap/test_imap_response_parser.rb @@ -64,7 +64,6 @@ EOF assert_equal [:Inbox], response.data.attr end - def test_resp_text_code parser = Net::IMAP::ResponseParser.new response = parser.parse(<<EOF.gsub(/\n/, "\r\n").taint) @@ -72,4 +71,32 @@ EOF EOF assert_equal "CLOSED", response.data.code.name end + + def test_search_response + parser = Net::IMAP::ResponseParser.new + response = parser.parse(<<EOF.gsub(/\n/, "\r\n").taint) +* SEARCH +EOF + assert_equal [], response.data + response = parser.parse(<<EOF.gsub(/\n/, "\r\n").taint) +* SEARCH 1 +EOF + assert_equal [1], response.data + response = parser.parse(<<EOF.gsub(/\n/, "\r\n").taint) +* SEARCH 1 2 3 +EOF + assert_equal [1, 2, 3], response.data + end + + def test_search_response_of_yahoo + parser = Net::IMAP::ResponseParser.new + response = parser.parse(<<EOF.gsub(/\n/, "\r\n").taint) +* SEARCH 1 +EOF + assert_equal [1], response.data + response = parser.parse(<<EOF.gsub(/\n/, "\r\n").taint) +* SEARCH 1 2 3 +EOF + assert_equal [1, 2, 3], response.data + end end |