summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/net/pop.rb12
-rw-r--r--test/net/pop/test_pop.rb29
2 files changed, 35 insertions, 6 deletions
diff --git a/lib/net/pop.rb b/lib/net/pop.rb
index 55597f2fab..92a4fe7303 100644
--- a/lib/net/pop.rb
+++ b/lib/net/pop.rb
@@ -467,7 +467,7 @@ module Net
# Provide human-readable stringification of class state.
def inspect
- "#<#{self.class} #{@address}:#{@port} open=#{@started}>"
+ +"#<#{self.class} #{@address}:#{@port} open=#{@started}>"
end
# *WARNING*: This method causes a serious security hole.
@@ -758,7 +758,7 @@ module Net
# Provide human-readable stringification of class state.
def inspect
- "#<#{self.class} #{@number}#{@deleted ? ' deleted' : ''}>"
+ +"#<#{self.class} #{@number}#{@deleted ? ' deleted' : ''}>"
end
#
@@ -799,7 +799,7 @@ module Net
#
# This method raises a POPError if an error occurs.
#
- def pop( dest = '', &block ) # :yield: message_chunk
+ def pop( dest = +'', &block ) # :yield: message_chunk
if block_given?
@command.retr(@number, &block)
nil
@@ -819,7 +819,7 @@ module Net
# The optional +dest+ argument is obsolete.
#
# This method raises a POPError if an error occurs.
- def top(lines, dest = '')
+ def top(lines, dest = +'')
@command.top(@number, lines) do |chunk|
dest << chunk
end
@@ -831,7 +831,7 @@ module Net
# The optional +dest+ argument is obsolete.
#
# This method raises a POPError if an error occurs.
- def header(dest = '')
+ def header(dest = +'')
top(0, dest)
end
@@ -898,7 +898,7 @@ module Net
attr_reader :socket
def inspect
- "#<#{self.class} socket=#{@socket}>"
+ +"#<#{self.class} socket=#{@socket}>"
end
def auth(account, password)
diff --git a/test/net/pop/test_pop.rb b/test/net/pop/test_pop.rb
index 666aac0db6..f4c807a7a8 100644
--- a/test/net/pop/test_pop.rb
+++ b/test/net/pop/test_pop.rb
@@ -64,6 +64,35 @@ class TestPOP < Test::Unit::TestCase
end
end
+ def test_popmail
+ # totally not representative of real messages, but
+ # enough to test frozen bugs
+ lines = [ "[ruby-core:85210]" , "[Bug #14416]" ].freeze
+ command = Object.new
+ command.instance_variable_set(:@lines, lines)
+
+ def command.retr(n)
+ @lines.each { |l| yield "#{l}\r\n" }
+ end
+
+ def command.top(number, nl)
+ @lines.each do |l|
+ yield "#{l}\r\n"
+ break if (nl -= 1) <= 0
+ end
+ end
+
+ net_pop = :unused
+ popmail = Net::POPMail.new(1, 123, net_pop, command)
+ res = popmail.pop
+ assert_equal "[ruby-core:85210]\r\n[Bug #14416]\r\n", res
+ assert_not_predicate res, :frozen?
+
+ res = popmail.top(1)
+ assert_equal "[ruby-core:85210]\r\n", res
+ assert_not_predicate res, :frozen?
+ end
+
def pop_test(apop=false)
host = 'localhost'
server = TCPServer.new(host, 0)