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

* lib/net/ftp.rb (parse257): refactor.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52095 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shugo 2015-10-09 08:29:36 +00:00
parent 29e9230bc5
commit 3e70f44ae9
3 changed files with 24 additions and 19 deletions

View file

@ -1,3 +1,7 @@
Fri Oct 9 17:29:07 2015 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/ftp.rb (parse257): refactor.
Fri Oct 9 16:42:26 2015 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/imap.rb: use frozen_string_literal: true.

View file

@ -1246,24 +1246,7 @@ module Net
if !resp.start_with?("257")
raise FTPReplyError, resp
end
if resp[3, 2] != ' "'
return ""
end
dirname = ""
i = 5
n = resp.length
while i < n
c = resp[i, 1]
i = i + 1
if c == '"'
if i > n or resp[i, 1] != '"'
break
end
i = i + 1
end
dirname = dirname + c
end
return dirname
return resp.slice(/"(([^"]|"")*)"/, 1).to_s.gsub(/""/, '"')
end
private :parse257

View file

@ -1318,8 +1318,26 @@ EOF
end
end
private
def test_parse257
ftp = Net::FTP.new
assert_equal('/foo/bar',
ftp.send(:parse257, '257 "/foo/bar" directory created'))
assert_equal('/foo/bar"baz',
ftp.send(:parse257, '257 "/foo/bar""baz" directory created'))
assert_equal('/foo/x"y"z',
ftp.send(:parse257, '257 "/foo/x""y""z" directory created'))
assert_equal('/foo/bar',
ftp.send(:parse257, '257 "/foo/bar" "comment"'))
assert_equal('',
ftp.send(:parse257, '257 "" directory created'))
assert_equal('',
ftp.send(:parse257, '257 directory created'))
assert_raise(Net::FTPReplyError) do
ftp.send(:parse257, "500 Syntax error")
end
end
private
def create_ftp_server(sleep_time = nil)
server = TCPServer.new(SERVER_ADDR, 0)