Skip to content

Commit

Permalink
* lib/uri/generic.rb (URI::Generic.build):
Browse files Browse the repository at this point in the history
  use hostname= to detect and wrap IPv6 hosts.
  Build is accepting URI components and users may not expect
  that a host component needs to be wrapped with square brackets
  since it's not providing a URI.
  Note: initialize with arg_check => true does not wrap IPv6 hosts.
  by Joe Rafaniello <jrafanie@redhat.com>
  #765 fix GH-765

* test/uri/test_generic.rb: Add more tests

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48666 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nurse committed Dec 1, 2014
1 parent 6a8d230 commit 4ec9793
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 4 deletions.
13 changes: 13 additions & 0 deletions ChangeLog
@@ -1,3 +1,16 @@
Tue Dec 2 02:30:25 2014 NARUSE, Yui <naruse@ruby-lang.org>

* lib/uri/generic.rb (URI::Generic.build):
use hostname= to detect and wrap IPv6 hosts.
Build is accepting URI components and users may not expect
that a host component needs to be wrapped with square brackets
since it's not providing a URI.
Note: initialize with arg_check => true does not wrap IPv6 hosts.
by Joe Rafaniello <jrafanie@redhat.com>
https://github.com/ruby/ruby/pull/765 fix GH-765

* test/uri/test_generic.rb: Add more tests

Mon Dec 1 20:01:12 2014 Masaki Suketa <masaki.suketa@nifty.ne.jp>

* ext/win32ole/win32ole.c: use typed data for WIN32OLE.
Expand Down
2 changes: 1 addition & 1 deletion lib/uri/generic.rb
Expand Up @@ -184,7 +184,7 @@ def initialize(scheme,
if arg_check
self.scheme = scheme
self.userinfo = userinfo
self.host = host
self.hostname = host
self.port = port
self.path = path
self.query = query
Expand Down
20 changes: 17 additions & 3 deletions test/uri/test_generic.rb
Expand Up @@ -758,12 +758,26 @@ def test_ipv6
end

def test_build
URI::Generic.build(['http', nil, 'example.com', 80, nil, '/foo', nil, nil, nil])
u = URI::Generic.build(['http', nil, 'example.com', 80, nil, '/foo', nil, nil, nil])
assert_equal('http://example.com:80/foo', u.to_s)

u = URI::Generic.build(:scheme => "http", :host => "::1", :path => "/bar/baz")
assert_equal("http://[::1]/bar/baz", u.to_s)
assert_equal("[::1]", u.host)
assert_equal("::1", u.hostname)

u = URI::Generic.build(:scheme => "http", :host => "[::1]", :path => "/bar/baz")
assert_equal("http://[::1]/bar/baz", u.to_s)
assert_equal("[::1]", u.host)
assert_equal("::1", u.hostname)
end

def test_build2
URI::Generic.build2(path: "/foo bar/baz")
URI::Generic.build2(['http', nil, 'example.com', 80, nil, '/foo bar' , nil, nil, nil])
u = URI::Generic.build2(path: "/foo bar/baz")
assert_equal('/foo%20bar/baz', u.to_s)

u = URI::Generic.build2(['http', nil, 'example.com', 80, nil, '/foo bar' , nil, nil, nil])
assert_equal('http://example.com:80/foo%20bar', u.to_s)
end

# 192.0.2.0/24 is TEST-NET. [RFC3330]
Expand Down

0 comments on commit 4ec9793

Please sign in to comment.