1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

net/pop: make modified strings mutable

Thanks to Michael Zimmerman for the bug report

* lib/net/pop.rb: make modified strings mutable
  [ruby-core:85210] [Bug #14416]
* test/net/pop/test_pop.rb: new test

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62099 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2018-01-30 00:22:22 +00:00
parent f65c682fbd
commit 7830a950ef
2 changed files with 35 additions and 6 deletions

View file

@ -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)