* lib/net/ftp.rb (Net::BufferedSocket): should delegate send() to @io

for Net::FTP#abort and Net::FTP#status..

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35205 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2012-04-01 14:06:38 +00:00
Родитель 69fa2fe929
Коммит ae79409db4
3 изменённых файлов: 74 добавлений и 1 удалений

Просмотреть файл

@ -1,3 +1,8 @@
Sun Apr 1 23:03:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
* lib/net/ftp.rb (Net::BufferedSocket): should delegate send() to @io
for Net::FTP#abort and Net::FTP#status..
Sun Apr 1 00:41:56 2012 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/ftp.rb: fixed the domain name in examples.

Просмотреть файл

@ -1055,7 +1055,7 @@ module Net
end
class BufferedSocket < BufferedIO
[:addr, :peeraddr].each do |method|
[:addr, :peeraddr, :send].each do |method|
define_method(method) { |*args|
@io.__send__(method, *args)
}

Просмотреть файл

@ -512,6 +512,74 @@ class FTPTest < Test::Unit::TestCase
end
end
def test_abort
commands = []
server = create_ftp_server { |sock|
sock.print("220 (test_ftp).\r\n")
commands.push(sock.gets)
sock.print("331 Please specify the password.\r\n")
commands.push(sock.gets)
sock.print("230 Login successful.\r\n")
commands.push(sock.gets)
sock.print("200 Switching to Binary mode.\r\n")
commands.push(sock.recv(1024, Socket::MSG_OOB))
sock.print("225 No transfer to ABOR.\r\n")
}
begin
begin
ftp = Net::FTP.new
#ftp.read_timeout = 0.2
ftp.connect(SERVER_ADDR, server.port)
ftp.login
assert_match(/\AUSER /, commands.shift)
assert_match(/\APASS /, commands.shift)
assert_equal("TYPE I\r\n", commands.shift)
ftp.abort
assert_equal("\n", commands.shift)
assert_equal(nil, commands.shift)
ensure
ftp.close if ftp
end
ensure
server.close
end
end
def test_status
commands = []
server = create_ftp_server { |sock|
sock.print("220 (test_ftp).\r\n")
commands.push(sock.gets)
sock.print("331 Please specify the password.\r\n")
commands.push(sock.gets)
sock.print("230 Login successful.\r\n")
commands.push(sock.gets)
sock.print("200 Switching to Binary mode.\r\n")
commands.push(sock.recv(1024, Socket::MSG_OOB))
sock.print("211-FTP server status:\r\n")
sock.print("\n211 End of status\r\n")
}
begin
begin
ftp = Net::FTP.new
#ftp.read_timeout = 0.2
ftp.connect(SERVER_ADDR, server.port)
ftp.login
assert_match(/\AUSER /, commands.shift)
assert_match(/\APASS /, commands.shift)
assert_equal("TYPE I\r\n", commands.shift)
ftp.status
assert_equal("\n", commands.shift)
assert_equal(nil, commands.shift)
ensure
ftp.close if ftp
end
ensure
server.close
end
end
private