From 8c7310e71398b3bf76c62ecd32db2340733a4769 Mon Sep 17 00:00:00 2001 From: naruse Date: Tue, 19 May 2015 02:34:47 +0000 Subject: [PATCH] * lib/uri/rfc2396_parser.rb (initialize_pattern): URI::Generic.build should accept port as a string. pattern[:PORT] is not defined for long. by Dave Slutzkin https://github.com/ruby/ruby/pull/804 fix GH-804 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ lib/uri/rfc2396_parser.rb | 2 +- test/uri/test_generic.rb | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8812f9a231..d25205319c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Tue May 19 11:22:28 2015 NARUSE, Yui + + * lib/uri/rfc2396_parser.rb (initialize_pattern): + URI::Generic.build should accept port as a string. + pattern[:PORT] is not defined for long. + by Dave Slutzkin + https://github.com/ruby/ruby/pull/804 fix GH-804 + Tue May 19 11:18:46 2015 Nobuyoshi Nakada * include/ruby/ruby.h (rb_data_typed_object_alloc), diff --git a/lib/uri/rfc2396_parser.rb b/lib/uri/rfc2396_parser.rb index c192f65ec1..a8af37502a 100644 --- a/lib/uri/rfc2396_parser.rb +++ b/lib/uri/rfc2396_parser.rb @@ -401,7 +401,7 @@ module URI # host = hostname | IPv4address | IPv6reference (RFC 2732) ret[:HOST] = host = "(?:#{hostname}|#{ipv4addr}|#{ipv6ref})" # port = *digit - port = '\d*' + ret[:PORT] = port = '\d*' # hostport = host [ ":" port ] ret[:HOSTPORT] = hostport = "#{host}(?::#{port})?" diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb index 37605d5de5..c0597b91dc 100644 --- a/test/uri/test_generic.rb +++ b/test/uri/test_generic.rb @@ -761,6 +761,10 @@ class URI::TestGeneric < Test::Unit::TestCase 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(:port => "5432") + assert_equal(":5432", u.to_s) + assert_equal(5432, u.port) + 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)